|
| 1 | +# 🌍 Chemnitz Cultural Explorer |
| 2 | + |
| 3 | +[](https://nodejs.org/) |
| 4 | +[](https://www.postgresql.org/) |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +An interactive web platform showcasing cultural landmarks in Chemnitz, Germany, powered by open data sources with personalized touring features. |
| 9 | + |
| 10 | +## ✨ Key Features |
| 11 | + |
| 12 | +### 🗺️ Exploration Tools |
| 13 | +- Interactive map with 150+ cultural sites |
| 14 | +- Custom categories: Museums, Theaters, Public Art, Historic Sites |
| 15 | +- Real-time filtering by: |
| 16 | + - Distance from current location |
| 17 | + - Categories |
| 18 | + - Keyword based search |
| 19 | + |
| 20 | +### 👤 User Experience |
| 21 | +- **Personalized Accounts**: |
| 22 | + - Display places data on mapbox |
| 23 | + - Save favorite locations |
| 24 | + - Create User account |
| 25 | + - List of favorite sites |
| 26 | + - Display details of saved sites and sites |
| 27 | + |
| 28 | +### 🚀 Technical Highlights |
| 29 | +- Offline-first PWA support |
| 30 | +- Optimized routing algorithms |
| 31 | +- Accessibility compliant (WCAG 2.1 AA) |
| 32 | + |
| 33 | +## 🛠️ Technology Stack |
| 34 | + |
| 35 | +### Frontend |
| 36 | +| Technology | Version | Purpose | |
| 37 | +|------------|---------|---------| |
| 38 | +| Next.js 15 | React Framework | |
| 39 | +| Mapbox GL JS | Interactive Maps | |
| 40 | +| Tailwind CSS | Utility-first CSS | |
| 41 | +| React Query | Data Fetching | |
| 42 | + |
| 43 | +### Backend |
| 44 | +| Technology | Version | Purpose | |
| 45 | +|------------|---------|---------| |
| 46 | +| Node.js | Runtime | |
| 47 | +| Express | API Server | |
| 48 | +| PostgreSQL | Database | |
| 49 | +| PostGIS | |
| 50 | +| Prisma | ORM | |
| 51 | + |
| 52 | +### DevOps |
| 53 | +| Technology | Purpose | |
| 54 | +|------------|---------| |
| 55 | +| Docker | Containerization | |
| 56 | +| GitHub | Git | |
| 57 | +| Git | Error Monitoring | |
| 58 | + |
| 59 | +## 🚀 Getting Started |
| 60 | + |
| 61 | +### Prerequisites |
| 62 | +- Node.js 18+ |
| 63 | +- PostgreSQL 14+ with PostGIS extension |
| 64 | +- Mapbox API key |
| 65 | + |
| 66 | +### Installation |
| 67 | + |
| 68 | +1. **Clone the repository** |
| 69 | + ```bash |
| 70 | + git clone https://github.com/Syed-Bilal-Haider-Engineer/chemnitz-culture |
| 71 | + cd chemnitz-culture |
| 72 | + cd client |
| 73 | + cd server |
| 74 | +Set up environment variables |
| 75 | + |
| 76 | +bash |
| 77 | +cp .env.example .env.local |
| 78 | +# Edit the file with your credentials |
| 79 | +Install dependencies |
| 80 | + |
| 81 | +First, run the development server: |
| 82 | + |
| 83 | +```bash |
| 84 | +npm run dev |
| 85 | +# or |
| 86 | +yarn dev |
| 87 | +# or |
| 88 | +pnpm dev |
| 89 | +# or |
| 90 | +bun dev |
| 91 | +``` |
| 92 | + |
| 93 | +bash |
| 94 | +# Run migrations |
| 95 | +npm run db:migrate |
| 96 | + |
| 97 | +# Seed initial data |
| 98 | +npm run db:seed |
| 99 | +Running the Application |
| 100 | +Development Mode |
| 101 | + |
| 102 | +bash |
| 103 | +npm run dev |
| 104 | +Production Build |
| 105 | + |
| 106 | +bash |
| 107 | +npm run build |
| 108 | +npm start |
| 109 | +📂 Project Structure |
| 110 | +text |
| 111 | +. |
| 112 | +├── app/ # Next.js app router |
| 113 | +│ ├── (auth)/ # Authentication routes |
| 114 | +│ ├── (_lib) # API routes |
| 115 | +├── components/ # Reusable components |
| 116 | +│ ├── layout/ # Layouts |
| 117 | +│ └── common/ # Reuseabliity |
| 118 | + |
| 119 | +├── public/ # Static assets |
| 120 | +├── styles/ # Global styles |
| 121 | +└── types/ # TypeScript definitions |
| 122 | +🌐 API Documentation |
| 123 | +Base URL |
| 124 | +https://api.chemnitz-culture.com/v1 |
| 125 | + |
| 126 | +Key Endpoints |
| 127 | +Endpoint Method Description Auth Required |
| 128 | +/places GET List all cultural sites No |
| 129 | +/api/search GET Search with filters No |
| 130 | +/favorites POST Add favorite Yes |
| 131 | +/reviews POST Create route Yes |
| 132 | +View Complete API Documentation → |
| 133 | + |
| 134 | +🔒 Security Features |
| 135 | +JWT Authentication |
| 136 | + |
| 137 | +Role-based access control |
| 138 | + |
| 139 | +Data encryption at rest |
| 140 | + |
| 141 | +Automated security headers |
| 142 | + |
| 143 | +🚴 Performance |
| 144 | +Metric Value Target |
| 145 | +LCP 1.2s <2.5s |
| 146 | +TTI 1.8s <3.5s |
| 147 | +Bundle Size 145kB <200kB |
| 148 | +📱 Offline Support |
| 149 | +Service Worker caching (Workbox) |
| 150 | + |
| 151 | +Localstorage for local data |
| 152 | + |
| 153 | +Background sync for updates |
0 commit comments