A practical, production-oriented reference for building full-stack web applications with PostgreSQL, Express, React, and Node.js.
This guide is not a tutorial. It does not walk you through building a to-do app. It is a structured reference covering the architectural decisions, folder structures, layering conventions, and engineering standards that separate a weekend project from something you can actually maintain, scale, and hand off to another developer.
Every recommendation here is backed by industry-recognized sources — books, specifications, and engineering literature that have stood up to scrutiny. Where trade-offs exist, they are stated explicitly.
| Audience | How to use this |
|---|---|
| Full-stack developers working in or migrating to the PERN stack | Follow the sections in order — each one builds on the last |
| Developers who have built PERN apps before but want a more structured approach | Jump to the sections most relevant to what you are building right now |
| Teams looking to establish shared conventions across a codebase | Use individual documents as the basis for internal engineering standards |
| # | Section | Summary |
|---|---|---|
| 1 | Stack Overview | Why PERN, when it fits, and when it does not |
| 2 | Project Structure | Folder organization, feature-based vs layer-based, monorepo options |
| 3 | Clean Architecture in PERN | Layering: presentation, service, repository, domain |
| 4 | PostgreSQL Design Patterns | Schema design, indexing, migrations, query patterns with Prisma |
| 5 | Express API Layer | Router structure, middleware, error handling, request validation |
| 6 | Authentication & Authorization | JWT, session, RBAC, httpOnly cookies, refresh token rotation |
| 7 | React Architecture | Component design, state management, data fetching patterns |
| 8 | Environment & Configuration | Config management, secrets, environment parity |
| 9 | Testing Strategy | Unit, integration, and E2E testing in the PERN context |
| 10 | Deployment & CI/CD | CI pipeline, environments, zero-downtime deployment |
| 11 | Coding Standards | Naming, commits, TypeScript configuration, tooling |
| 12 | Reference Library | All books and resources cited throughout this guide |
Each section includes working code examples, the reasoning behind each decision, and explicit trade-offs — not just "do this."
Read linearly the first time. Sections are ordered deliberately — folder structure decisions in Section 2 inform the clean architecture patterns in Section 3, which inform how the Express layer is set up in Section 5. Reading out of order works, but some context will be missing.
Use as a reference afterward. Once you are familiar with the guide, individual documents work as standalone references when making specific decisions on a project: "how should I structure my migrations," "what is the right place to put authorization logic," "what do I actually need to test."
Clone it and adapt it. Fork this repo and modify the sections that do not fit your context. The structure and reasoning matter more than any specific recommendation.
This guide is part of a series on engineering and product development:
- Product Development Playbook — The complete 17-phase guide from idea to launch, covering product discovery, system architecture, API design, security, deployment, and post-launch iteration
This guide draws from:
- Books: Clean Architecture (Martin), Designing Data-Intensive Applications (Kleppmann), The Pragmatic Programmer (Hunt & Thomas), and 20+ others — all cited inline
- Standards: OWASP Top 10, NIST SP 800-63B, RFC 8725 (JWT), The 12-Factor App
- Engineering literature: DORA research, Google SRE Book, Braintree Engineering, Google Engineering Practices
The full list is in Section 12 — Reference Library.
Found a broken link? Know a better reference? Want to add a missing section?
See CONTRIBUTING.md for guidelines. All contributions that improve accuracy, clarity, or coverage are welcome.
MIT License — free to use, adapt, and distribute. See LICENSE for details.
If this guide helped you, consider giving it a ⭐ — it helps others find it too.