Empowering citizens to build better cities, one complaint at a time
Features • Demo • Installation • Documentation • Contributing
- 🌟 Overview
- ✨ Key Features
- 🛠️ Tech Stack
- 📸 Screenshots
- 🚀 Installation
- 🔐 Environment Setup
- 📁 Project Structure
- 📄 License
- 📞 Contact
- 🙏 Acknowledgments
CityCare is a cutting-edge civic complaint management platform that revolutionizes how citizens interact with municipal authorities. Built with modern web technologies, it provides a seamless, transparent, and efficient way to report, track, and resolve civic issues.
|
|
|
|
|
|
|
|
| Technology | Version | Purpose |
|---|---|---|
| 19.1.1 | UI Framework | |
| 7.9.3 | Navigation | |
| 5.51.0 | Authentication | |
| 5.0.0 | Heat Maps | |
| 1.5.5 | Location Picker | |
| 7.65.0 | Form Management | |
| 7.1.7 | Build Tool |
| Technology | Version | Purpose |
|---|---|---|
| 18+ | Runtime | |
| 4.18.2 | Web Framework | |
| 8.0.0 | Database | |
| Latest | ODM | |
| 4.13.23 | Auth Backend | |
| 2.0.0 | Media Storage | |
| 1.4.5 | File Upload |
🎤 React Speech Recognition → Voice-to-text input
📍 Leaflet.heat → Heatmap visualization
🎨 CSS3 Custom Properties → Dynamic theming
🔍 ESLint → Code quality
🔄 Nodemon → Hot reload
🌐 CORS → Cross-origin security
|
|
|
|
| Requirement | Version | Download Link |
|---|---|---|
| 18+ | Download | |
| Latest | Download | |
| Account | Sign Up | |
| Account | Sign Up | |
| Account | Sign Up | |
| API Key | Get Key |
git clone https://github.com/Rayat-Bahra-Professioal-University/DSA_RBPU_Hackathon2025-team-mkkg.git
cd DSA_RBPU_Hackathon2025-team-mkkg# Navigate to backend directory
cd backend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Edit .env with your credentials (see Environment Setup section)# Navigate to frontend directory (from project root)
cd ../frontend
# Install dependencies
npm install
# Create environment file
cp .env.example .env.local
# Edit .env.local with your credentials (see Environment Setup section)Open two terminal windows:
Terminal 1 - Backend Server:
cd backend
npm run dev
# Server runs on http://localhost:5000Terminal 2 - Frontend Development Server:
cd frontend
npm run dev
# Application opens on http://localhost:5173🎉 That's it! Your application should now be running at http://localhost:5173
# Navigate to frontend directory (from project root)
cd ../frontend
# Install dependencies
npm install
# Create .env.local file from example
cp .env.example .env.local
# Edit .env.local file with your credentials
# See Environment Setup section belowCreate a .env file in the backend directory with the following variables:
# Server Configuration
PORT=5000
# MongoDB Connection
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/citycare?retryWrites=true&w=majority
# Cloudinary (File Upload)
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
# Clerk Authentication
CLERK_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxx
CLERK_PUBLISHABLE_KEY=pk_test_xxxxxxxxxxxxxxxxxxWhere to get these:
-
MongoDB URI
- Sign up at MongoDB Atlas
- Create a cluster
- Click "Connect" → "Connect your application"
- Copy the connection string and replace
<username>and<password>
-
Cloudinary Credentials
- Sign up at Cloudinary
- Go to Dashboard
- Copy Cloud Name, API Key, and API Secret
-
Clerk Keys
- Sign up at Clerk
- Create a new application
- Go to API Keys
- Copy both Secret Key and Publishable Key
Create a .env.local file in the frontend directory:
# Clerk Authentication
VITE_CLERK_PUBLISHABLE_KEY=pk_test_xxxxxxxxxxxxxxxxxx
# Google Maps API
VITE_GOOGLE_MAPS_API_KEY=AIzaSyxxxxxxxxxxxxxxxxxxxxxxxxxx
# Backend API URL
VITE_API_URL=http://localhost:5000/apiWhere to get these:
-
Clerk Publishable Key
- Same key from your Clerk dashboard (use the Publishable Key)
-
Google Maps API Key
- Go to Google Cloud Console
- Create a new project
- Enable "Maps JavaScript API" and "Geocoding API"
- Create credentials → API Key
- Copy the API key
# From backend directory
cd backend
npm run dev
# Server will start on http://localhost:5000# From frontend directory (in a new terminal)
cd frontend
npm run dev
# Application will open on http://localhost:5173-
Access the Application
- Open your browser and go to
http://localhost:5173
- Open your browser and go to
-
Create Your Account
- Click "Sign Up"
- Register with email or use OAuth (Google, etc.)
-
For Admin Access
- Register a user account first
- Contact the system administrator to upgrade your role to admin
- Or manually update the role in MongoDB:
db.users.updateOne( { email: "your@email.com" }, { $set: { role: "admin" } } );
- Login → Dashboard appears
- Create Issue → Fill form, add photos, mark location
- Track Status → View on dashboard or sitemap
- Get Updates → Monitor status changes
- Verify Resolution → See resolution photos when closed
- Login → Admin Dashboard appears
- View Complaints → See all issues with filters
- Assign Issues → Delegate to team members
- Update Status → Change to In Progress/Closed
- Upload Resolution → Add photos and notes
- Manage Admins → Add/remove admin users
DSA_RBPU_Hackathon2025-team-mkkg/
│
├── backend/ # Backend API Server
│ ├── src/
│ │ ├── config/
│ │ │ └── db.js # MongoDB connection
│ │ ├── controllers/
│ │ │ ├── adminController.js # Admin operations
│ │ │ └── complaintController.js # Complaint operations
│ │ ├── middleware/
│ │ │ ├── auth.js # User authentication
│ │ │ └── adminAuth.js # Admin authentication
│ │ ├── models/
│ │ │ └── Complaint.js # Mongoose schema
│ │ └── routes/
│ │ ├── admin.js # Admin routes
│ │ ├── complaints.js # Complaint routes
│ │ ├── uploads.js # File upload routes
│ │ └── index.js # Route aggregator
│ ├── .env # Environment variables (gitignored)
│ ├── .env.example # Environment template
│ ├── package.json # Dependencies
│ └── server.js # Entry point
│
├── frontend/ # React Frontend
│ ├── src/
│ │ ├── components/
│ │ │ ├── layouts/ # Layout components
│ │ │ ├── navbar/ # Navigation bar
│ │ │ └── sidebar/ # Side navigation
│ │ ├── pages/
│ │ │ ├── dashboard/ # User dashboard
│ │ │ ├── admin-dashboard/ # Admin dashboard
│ │ │ ├── create-issue/ # Issue creation form
│ │ │ ├── issue-details/ # Single issue view
│ │ │ ├── view-complaints/ # Issue sitemap
│ │ │ ├── search-complaints/ # Search functionality
│ │ │ ├── profile/ # User profile
│ │ │ ├── delete-account/ # Account deletion
│ │ │ └── home/ # Landing page
│ │ ├── services/
│ │ │ └── api.js # API client
│ │ ├── App.jsx # Main app component
│ │ ├── main.jsx # Entry point
│ │ └── index.css # Global styles
│ ├── .env.local # Environment variables (gitignored)
│ ├── .env.example # Environment template
│ ├── package.json # Dependencies
│ └── vite.config.js # Vite configuration
│
├── README.md # This file
This project is licensed under the MIT License - see the LICENSE file for details.
Rayat Bahra Professional University
DSA RBPU Hackathon 2025
Have questions or suggestions? We'd love to hear from you!
� Email: Contact Us (Update with actual email)
🐛 Found a Bug? Report it here
� Have an Idea? Start a discussion
|
Rayat Bahra Professional University For organizing the hackathon and providing the platform to innovate |
Clerk • MongoDB • Cloudinary For their robust platforms that power CityCare |
React • Node.js • Express For the amazing frameworks and libraries |
Additional Thanks:
🗺️ Google Maps API • 📚 Stack Overflow Community • 💡 GitHub Community
👨🏫 Our Mentors • 👨💻 All Contributors • 🌟 Everyone who starred this project
Thank you for checking out CityCare!
We believe in the power of technology to make our cities better and more responsive to citizen needs.
Every contribution, feedback, and star helps us move closer to that goal.
Made with ❤️ by Team MKKG
Rayat Bahra Professional University • DSA RBPU Hackathon 2025











