Mapa is an event-discovery platform for Warsaw. Visitors can explore events on an interactive map, search and filter the catalogue, save favourites, plan attendance, discuss events, and connect with friends.
Demo notice: This is a demonstration version of a project originally conceived as a startup. All events, profiles, comments, images, and other catalogue content are demo data only. They do not represent real people, current events, businesses, or verified information.
| Directory | Purpose | Stack |
|---|---|---|
frontend |
Public responsive web application | React, TypeScript, Vite, Mapbox |
backend |
REST API and business logic | Node.js, Express, MongoDB, Redis |
admin-panel |
Moderation and administration interface | React, TypeScript, Vite |
Detailed setup, environment variables, architecture notes, and commands are available separately in the frontend README and backend README. The admin-panel README documents the moderation interface.
- Interactive Mapbox map with event markers, clustering, search, categories, and filters.
- Desktop and mobile user interfaces.
- Email/password and Google authentication, email verification, password reset, and refresh-token sessions.
- Event schedules, permanent events, favourites, attendance states, comments, profiles, friends, and recommendations.
- Moderation, audit data, CSV import/export, parser-run endpoints, and Swagger API documentation.
-
Start MongoDB and Redis locally.
-
Start the backend:
cd backend cp .env.example .env npm install npm run dev -
In another terminal start the public frontend:
cd frontend cp .env.example .env npm install npm run dev
The backend runs on http://localhost:3442; the frontend runs on http://localhost:5173 by default.
- Deploy
frontendto Vercel. - Deploy
backendto Render withrender.yaml. - Use MongoDB Atlas for
MONGO_URI. - Configure a public Mapbox token, Google client ID, CORS, and the frontend URL through deployment environment variables.
- Render Free blocks SMTP ports
25,465, and587. Use a provider on port2525, such as Brevo, or an email HTTP API.
See backend/deploy-secrets-checklist.md for the deployment checklist.
- Never commit
.envfiles, SMTP keys, database credentials, or JWT secrets. VITE_*values are public browser configuration. Only public client identifiers and restricted Mapbox tokens belong there.- Restrict Mapbox tokens to the deployed Vercel origin.