This project provides a reusable authentication system for applications built on the MEAN stack.
Warning: Because the API server sleeps after 30 minutes of inactivity (see Dyno Sleeping), you may experience a few seconds of delay on the first API request.
TypeScript is used across the full stack.
- Framework: Angular
- UI Library: Angular Material
- Style: Sass
- CDN: Static assets delivered through Vercel Edge Network.
- API Server: Powered by Express and hosted on Heroku.
- Database: User data stored in MongoDB Atlas.
- Cache: Session data managed by Redis Cloud.
- User login/registration with username and password
- Logout and session revocation
- Password update
- Account deletion with password confirmation
- Strength validation with zxcvbn
- Argon2 hashing algorithm
- Pwned Passwords API validation
- Session authentication with encrypted cookies
- Session data stored in Redis Cloud
- CSRF protection using the synchronizer token pattern
- Rate limiting with express-rate-limit
- Prerendering (SSG)
- Lazy-loaded components
OnPush
change detection strategy- Worker threads for CPU-intensive tasks
- Server-side testing with Node.js test runner
- Playwright end-to-end testing
- Test data generated by Faker
- Angular 18
- Node.js 22
- Express 4
- MongoDB Atlas 7
- Redis Stack 7.4
Version audited: v0.19.0
- System: Ubuntu
- IDE: WebStorm
- Formatter: Prettier
- Linter: ESLint
- AI assistant: GitHub Copilot
- Password strength meter design derived from Memorisely : Password Challenge by Adil D
© 2024 Johnny Gérard