The modern industry-standard stack for job-seekers, experienced developers and teams.
If you read a hundred web developer job listings, this combination - often with TypeScript - is the one you'll see most. It's also a genuinely good architecture: one language from browser to server, and a database that won't need replacing as you grow.
This is the most common full-stack result. You'll see it when you're not on shared hosting, not building a real-time app, and at least one of these is true: you're comfortable or experienced, your goal is getting a job, or you're in a larger team.
Separate frontend and API. A React app built with Vite talks to an Express API over JSON, and Express talks to PostgreSQL. The boundaries are explicit, each part can be deployed and tested separately, and it's the clearest way to learn what each layer does. This is what our guides use.
One full-stack framework. Next.js (or React Router's framework mode) runs React on both server and client, with server-side code calling PostgreSQL directly. Fewer moving parts to deploy and very common in industry - but it blurs the line between frontend and backend, which can make learning harder. Try it once you've built the separate version.
It's useful while job-hunting, and it exercises everything an interviewer wants to see:
applications table with company, role, status, and dates.GROUP BY.A common, low-cost setup:
VITE_API_URL environment variable so development and production point at the right places.secure, sameSite) deliberately.WHERE id = ANY($1).
Adopt TypeScript across both halves, share types or validation schemas between them, and agree on ESLint and Prettier before the first pull request. A single repository with client/ and server/ folders keeps changes that span both layers in one review.