An interactive web platform showcasing cultural landmarks in Chemnitz, Germany, powered by open data sources with personalized touring features.
- Interactive map with 150+ cultural sites
- Custom categories: Museums, Theaters, Public Art, Historic Sites
- Real-time filtering by:
- Distance from current location
- Categories
- Keyword based search
- Personalized Accounts:
- Display places data on mapbox
- Save favorite locations
- Create User account
- List of favorite sites
- Display details of saved sites and sites
- Offline-first PWA support
- Optimized routing algorithms
- Accessibility compliant (WCAG 2.1 AA)
| Technology | Version | Purpose |
|---|---|---|
| Next.js 15 | React Framework | |
| Mapbox GL JS | Interactive Maps | |
| Tailwind CSS | Utility-first CSS | |
| React Query | Data Fetching |
| Technology | Version | Purpose |
|---|---|---|
| Node.js | Runtime | |
| Express | API Server | |
| PostgreSQL | Database | |
| PostGIS | ||
| Prisma | ORM |
| Technology | Purpose |
|---|---|
| Docker | Containerization |
| GitHub | Git |
| Git | Error Monitoring |
- Node.js 18+
- PostgreSQL 14+ with PostGIS extension
- Mapbox API key
- Clone the repository
git clone https://github.com/Syed-Bilal-Haider-Engineer/chemnitz-culture cd chemnitz-culture cd client cd server
Set up environment variables
bash cp .env.example .env.local
Install dependencies
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devbash
npm run db:migrate
npm run db:seed Running the Application Development Mode
bash npm run dev Production Build
bash npm run build npm start 📂 Project Structure text . ├── app/ # Next.js app router │ ├── (auth)/ # Authentication routes │ ├── (_lib) # API routes ├── components/ # Reusable components │ ├── layout/ # Layouts │ └── common/ # Reuseabliity
├── public/ # Static assets ├── styles/ # Global styles └── types/ # TypeScript definitions 🌐 API Documentation Base URL https://api.chemnitz-culture.com/v1
Key Endpoints Endpoint Method Description Auth Required /places GET List all cultural sites No /api/search GET Search with filters No /favorites POST Add favorite Yes /reviews POST Create route Yes View Complete API Documentation →
🔒 Security Features JWT Authentication
Role-based access control
Data encryption at rest
Automated security headers
🚴 Performance Metric Value Target LCP 1.2s <2.5s TTI 1.8s <3.5s Bundle Size 145kB <200kB 📱 Offline Support Service Worker caching (Workbox)
Localstorage for local data
Background sync for updates
