
Living City
Platform for Local Events
A monorepo of four applications (a public map-based client, an organizer dashboard, an admin panel, and an Express/PostgreSQL API) that lets residents find nearby events on a map, organizers submit their own events, and admins/moderators review, approve, or reject events and organizations.
It's hard for city residents to discover local events nearby (concerts, fairs, community gatherings) since information is scattered across different sources. Organizers lack a simple way to publish events with verification, and admins have no tool to moderate content and organizations submitted to the platform.
Built 4 independent applications around a shared backend: client - a public map (Mapbox GL) with filters by type/date, event pages, and user participation; organizer - a dashboard for registering an organization, creating events with photo galleries, and managing your own events; admin - moderation of events and organizations, analytics, and user management; server - an Express + PostgreSQL REST API with JWT authentication (access/refresh tokens), role-based middleware (admin, moderator, organizer, user) and image uploads. All logic strictly follows the UI → Hooks → Services → REST API pattern, with no direct axios/fetch calls inside components.
A functional platform featuring map-based event discovery and participation, as well as self-service event creation for organizers (with drafts, image uploads, and status workflows: pending, approved, rejected). Built with 50+ direct API calls across dedicated service modules for three frontend apps, complemented by an admin panel with analytics dashboards (Recharts), organization moderation, and event moderation.
Gallery
Tech Stack
Tools
Why these decisions
Relational storage for users, events, and geo queries with pgAdmin for local development.
Token-based auth keeps the API stateless and lets users save preferences across sessions.
Combined MapBox, Google Maps, and TicketMaster to enrich event discovery on an interactive map.