Explicit authentication architecture
Registration and login are handled by the application itself. Passwords are stored as hashes, while authenticated sessions use unique server-managed tokens with expiration.
Production-oriented Full Stack Next.js Application
A full-stack Next.js application demonstrating authentication, database architecture, validation, rate limiting, automated testing and production deployment.

Atlas focuses on the parts of a full-stack application that are often skipped in small demos: authentication, persistent sessions, validation, database modelling, rate limiting, testing, CI and deployment to a real production server.
Routes and server actions handle application requests.
Input is validated before business logic executes.
Business logic accesses typed persistence operations.
Users, sessions and application data are stored in PostgreSQL.
Atlas uses Next.js as the application boundary, Prisma as the data-access layer and PostgreSQL for persistence. Authentication is implemented explicitly with password hashing and database-backed sessions rather than delegated to a third-party authentication provider.
Registration and login are handled by the application itself. Passwords are stored as hashes, while authenticated sessions use unique server-managed tokens with expiration.
Sessions are first-class database records linked to users. They can expire independently, be indexed for cleanup and are removed automatically when a user is deleted.
Zod schemas define input constraints while React Hook Form provides typed client-side form handling. Server-side logic still validates input before performing mutations.
Sensitive authentication actions are protected from repeated attempts, with limiter state cleared after successful authentication where appropriate.
The application is deployed to Linux with PostgreSQL and managed using PM2, demonstrating deployment and operational concerns beyond local development.
Next.js App Router keeps server-side responsibilities close to the data layer and avoids unnecessary client-side API orchestration.
Interactive behavior such as forms and charts is isolated to client components instead of converting the entire application into a client-rendered SPA.
Session expiration is indexed in the database and relational cleanup uses cascading deletes where appropriate.
Unit coverage for authentication actions, validation and rate-limiting behavior.
Form and interactive component behavior can be verified independently from backend infrastructure.
Automated CI validates installation, linting, tests and production builds.



