Living City
All projects

Living City

Platform for Local Events

ReactNode.jsExpressPostgreSQLTypeScriptTailwindCSSMapbox GLJWT
Full-Stack Developer (solo developer) 2026 (3 month)
Overview

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.

Problem

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.

Solution

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.

Result

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

ReactTypeScriptJavaScriptNode.jsExpress.jsPostgreSQLJWTVite

Tools

FigmaGitGitHubPostmanshadcn/uiTailwind CSSMapbox GL JS

Why these decisions

PostgreSQL for structured event data

Relational storage for users, events, and geo queries with pgAdmin for local development.

JWT authentication

Token-based auth keeps the API stateless and lets users save preferences across sessions.

Multi-API map layer

Combined MapBox, Google Maps, and TicketMaster to enrich event discovery on an interactive map.