A full-stack platform where developers discover, create, and RSVP to programming-language-focused meetups and events.
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Tailwind CSS, Vite |
| Backend | Node.js, Express.js, TypeScript |
| Database | MongoDB via Mongoose |
| Auth | JWT (httpOnly cookie) |
- Auth — Register / Login / Logout with JWT stored in an httpOnly cookie.
- Events — Authenticated users create, update, and delete their own events. Each event references one or more programming languages.
- RSVP — One-click RSVP / un-RSVP. RSVP count drives popularity sorting.
- Discovery — Filter by language, full-text search (title + description), sort by popularity (RSVP count) or created date (newest / oldest).
- Protected — Only authenticated users can view or interact with events.
- Node.js ≥ 18
- MongoDB running locally (
mongodb://localhost:27017) or a connection string
cd backend
cp .env.example .env # edit if needed
npm install
npm run seed # populates languages + sample events + demo user
npm run dev # starts on http://localhost:5000cd frontend
cp .env.example .env
npm install
npm run dev # starts on http://localhost:5173The seed script creates a demo user:
email: [email protected]
password: password123
.
├── backend/
│ ├── src/
│ │ ├── config/ # db connection, env validation
│ │ ├── models/ # User, Language, Event
│ │ ├── controllers/ # request handlers
│ │ ├── routes/ # express routers
│ │ ├── middleware/ # auth guard, error handler, validation
│ │ ├── seed/ # seed script
│ │ └── server.ts
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── api/ # axios client + endpoint wrappers
│ │ ├── context/ # AuthContext
│ │ ├── pages/ # Login, Register, Events, EventDetail, etc.
│ │ ├── components/ # EventCard, Navbar, FilterBar, etc.
│ │ └── App.tsx
│ └── .env.example
└── docs/ # Architecture Decision Records
See docs/ for architectural decisions.