A modern web application built with Angular 20, featuring server-side rendering (SSR), authentication, and a robust content management system.
- Framework: Angular 20.3.6 with SSR
- Runtime: Node.js 20.19.0+
- Package Manager: pnpm 10.13.1+
- Database: SQLite with Prisma ORM
- Authentication: Auth0
- Styling: Tailwind CSS with Flowbite components
- Testing: Jest, Vitest, and Playwright
- Containerization: Docker & Docker Compose
- Node.js 20.19.0 or higher
- pnpm 10.13.1 or higher
- Docker and Docker Compose (for containerized deployment)
# Install dependencies
pnpm install
# Generate Prisma client
pnpm prisma:generateRun pnpm start for a dev server. Navigate to http://localhost:4200/. The application will automatically reload if you change any of the source files.
Ensure you have the necessary environment variables configured for:
- Auth0 authentication
- Database connection (DATABASE_URL)
Run pnpm ng generate component component-name to generate a new component. You can also use pnpm ng generate directive|pipe|service|class|guard|interface|enum|module.
# Development build
pnpm build
# Production build
pnpm build --configuration productionThe build artifacts will be stored in the dist/ directory.
After building, you can run the SSR server:
pnpm serve:ssr:quinnjr.dev# Run Angular unit tests (Jest)
pnpm test
# Run with coverage
pnpm test:coverage
# Run server-side unit tests (Vitest)
pnpm test:server
# Watch mode for server tests
pnpm test:server:watch
# Server tests with coverage
pnpm test:server:coverage# Run E2E tests (Playwright)
pnpm test:e2e
# Run with UI
pnpm test:e2e:ui
# Run in headed mode
pnpm test:e2e:headed
# Debug mode
pnpm test:e2e:debug
# View test report
pnpm test:e2e:reportpnpm test:allThis runs server tests, unit tests, and E2E tests sequentially.
# Check for linting errors
pnpm lint
# Auto-fix linting issues
pnpm lint:fix# Format all files
pnpm format
# Check formatting
pnpm format:check# Generate Prisma client
pnpm prisma:generate
# Create and apply migrations
pnpm prisma:migrate
# Open Prisma Studio (database GUI)
pnpm prisma:studio
# Seed the database
pnpm prisma:seed
# Reset database (WARNING: deletes all data)
pnpm prisma:resetDATABASE_URL="file:./data/quinnjr.db" pnpm prisma:migrate
DATABASE_URL="file:./data/quinnjr.db" pnpm prisma:seeddocker-compose exec app pnpm prisma:migrate deploy
docker-compose exec app pnpm prisma:seedBuild and run the application:
# Build and start the service
docker-compose up -d
# Stop the service
docker-compose down
# View logs
docker-compose logs -f app
# Rebuild after code changes
docker-compose up -d --buildThe application will be available at http://localhost:4000.
The SQLite database is stored in a Docker volume (sqlite_data) which persists even if the container is removed. This ensures data persistence across container restarts and updates.
src/- Application source codeprisma/- Database schema and migrationspublic/- Static assetsdist/- Build outputtests/- Test filese2e/- End-to-end teststf/- Terraform configuration (if applicable)scripts/- Utility scripts
- Angular CLI Documentation
- Prisma Documentation
- Auth0 Angular SDK
- Tailwind CSS Documentation
- Playwright Documentation
This project is licensed under the MIT License - see the LICENSE file for details.