Event management system with authentication and real-time tracking.
Backend:
- NestJS
- TypeScript
- PostgreSQL
- TypeORM
- Passport.js (JWT)
- Nodemailer
Frontend:
- React 19
- TypeScript
- React Router v7
- Axios
npm install
cd client ; npm installCreate a .env file in the root directory:
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_DATABASE=aha
JWT_SECRET=your-secret-key-change-this-in-production
JWT_EXPIRES_IN=1d
NODE_ENV=development
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=[email protected]
SMTP_PASS=your-app-password
SMTP_FROM=AHA <[email protected]>
APP_URL=http://localhost:3001CREATE DATABASE aha;# Backend (runs on port 3000)
npm run start:dev
# Frontend (runs on port 3001)
cd client ; npm startTo reset the database and delete all data:
node wipe-db.jsPOST /auth/register- Register new userPOST /auth/login- Login userGET /auth/verify-email- Verify emailPOST /auth/resend-verification- Resend verification emailPOST /auth/forgot-password- Request password resetPOST /auth/reset-password- Reset passwordGET /auth/profile- Get user profile (protected)
GET /events- List all eventsPOST /events- Create eventGET /events/:id- Get event detailsPATCH /events/:id- Update eventDELETE /events/:id- Delete eventPOST /events/:id/join- Join eventPOST /events/:id/archive- Archive eventPOST /events/:id/unarchive- Unarchive event
POST /reset-database- Reset entire databaseGET /health- Health check
aha/
├── src/ # Backend (NestJS)
│ ├── auth/ # Authentication module
│ ├── users/ # User management
│ ├── events/ # Events & members
│ ├── email/ # Email service
│ └── main.ts # App entry point
├── client/ # Frontend (React)
│ └── src/
│ ├── pages/ # Page components
│ ├── components/ # Reusable components
│ ├── services/ # API services
│ └── context/ # React context
├── migrate-admin-to-owner.js # Database migration script
├── API_DOCUMENTATION.md # Complete mobile API docs
└── README.md # This file