E-commerce App Architecture Decisions — What PostIdea Chose and Why

Architecture decisions aren't just technical preferences. Each one has a concrete consequence for what fails verification if you skip it. This page walks through every decision the PostIdea architecture engine made for the handmade goods marketplace spec — what was decided, why, and what breaks in your implementation if you ignore it.


The decisions

Database: PostgreSQL

The spec has no schema flexibility signals — no dynamic fields, no document-style storage, no "we'll figure out the data model later." Relational data with clear relationships between buyers, sellers, products, and orders. PostgreSQL is the correct default.

What fails verification if you skip this: Any FR that requires joins across entities — order history, review attribution, seller product listings — will produce incorrect results or require application-level workarounds that become unmaintainable above a few thousand rows. The spec's NFR-04 (1,000 concurrent users, <10% response time increase) is not achievable with a document store running ad-hoc relationship queries.


Service Structure: Monolith

Expected user load is 1,000. The microservices threshold is 50,000. At 1,000 users, microservices add 3–6 months of operational overhead — service mesh, distributed tracing, inter-service auth — with no measurable benefit. A monolith is the correct architecture at this scale.

What fails verification if you skip this: Nothing fails immediately. But if you build microservices at 1,000 users, your implementation will contain infrastructure code (API gateways, service registries, health check endpoints) that the spec never asked for. Layer 3 semantic audit will flag these as out-of-scope. More importantly, you'll spend the first month building plumbing instead of features.


Realtime Layer: None

No realtime signals in the conversation — no live inventory updates, no buyer-seller messaging, no collaborative features. Standard HTTP request/response is sufficient.

What fails verification if you skip this: If you add WebSocket infrastructure anyway, Layer 3 will flag it as out-of-scope. More practically: adding WebSockets to a spec that doesn't require them means you've built something you'll have to maintain, document, and debug that delivers no user value.


Auth Strategy: JWT Stateless

No signals requiring server-side session management. JWT stateless auth is the correct default for a marketplace at this scale.

What fails verification if you skip this: JWT stateless auth has one known failure mode: revocation. If a seller account is compromised, you cannot invalidate their token until it expires. The spec doesn't require revocation — but if your implementation adds it later without a Redis blacklist, you'll have a security gap. The architecture decision is correct for the spec as written. If requirements change, the spec should change first.


File Storage: None

No file upload signals detected in the conversation. The spec doesn't mention product image upload — only image display. This is a gap worth noting: a real handmade goods marketplace almost certainly needs image upload. The spec reflects what was discussed, not what was assumed.

What fails verification if you skip this: Nothing in the current spec fails. But this is exactly the kind of missing requirement that PostIdea's council stage is designed to catch before spec generation. If you're building this for real, go back to the Idea stage and add image upload explicitly.


Background Jobs: None

No async processing signals — no email notifications, no order processing queues, no scheduled tasks. All operations are synchronous HTTP.

What fails verification if you skip this: Order confirmation emails, seller payout processing, and search index updates are all background job candidates that aren't in this spec. If you implement them synchronously in HTTP handlers, NFR-02 (p95 < 500ms) will fail under any real load. Again — the spec reflects what was discussed. Add these requirements explicitly if you need them.


Cache Layer: Redis

Redis is the default for session caching and query result caching. At 1,000 concurrent users hitting product listings and search, uncached database queries will breach NFR-02.

What fails verification if you skip this: NFR-02 (p95 < 500ms) and NFR-04 (≤10% response time increase at 1,000 concurrent users) both become very hard to meet without caching on the product listing and search endpoints. These are the two highest-traffic paths in the spec.


Architecture diagram

graph TD
    User([User])
    FE[Frontend]
    BE[Backend API]
    DB[(PostgreSQL)]
    Cache[(Redis)]
    User --> FE
    FE --> BE
    BE --> DB
    BE --> Cache

The point of this page

Every architecture decision above was made deterministically from the spec constraints — no LLM guessing, no preference-based choices. The rules engine reads your constraints and outputs decisions with explicit tradeoffs and future consequences.

The "what fails verification" annotations are the part that matters most. Architecture decisions aren't abstract. They have direct consequences for whether your implementation passes or fails the spec it was built against.

See how this architecture performed in verification →
View the full spec →
Generate architecture decisions for your own spec →