π§ Civix β Local Civic Issue Reporting App Domain: Governance / Public Welfare Tagline: Empowering citizens, enabling better governance.
Civix is a full-stack web application designed to streamline the process of reporting, tracking, and resolving local civic issues such as potholes, broken streetlights, and uncollected garbage. It provides a bridge between citizens and municipal authorities, bringing accountability and transparency to local issue resolution.
π¨ Problem Addressed Local civic issues often go unnoticed or unresolved due to the lack of a structured, user-friendly reporting system. Civix solves this by enabling:
Citizens to report problems easily with images and geolocation.
Transparent status tracking of reported issues.
Community-driven prioritization via upvotes.
A centralized admin dashboard for city workers to manage and resolve issues efficiently.
β¨ Features π§ Citizens π Report Issues: Submit problems with description, live location (via map), and image.
π Track Status: View status transitions from Open β In Progress β Resolved.
πΌ Upvote Issues: Support others' reports to highlight common concerns.
π§βπΌ Admins (City Workers) π Dashboard Access: View, filter, and manage all reported issues.
π§ Status Management: Update issue progress and mark resolutions.
π§βπ€βπ§ Role-Based Access: Admin vs Citizen privileges secured via authentication.
π οΈ Tech Stack Frontend: React.js
Tailwind CSS β for modern and responsive UI
Leaflet.js β interactive maps for location tagging
Backend: Node.js + Express.js
PostgreSQL β relational DB for storing reports and user data
Additional Integrations: Cloudinary β for image uploads and hosting
Role-Based Authentication β Secure login for Citizens and Admins
π Dark Mode Toggle
Civix supports a light and dark mode toggle to enhance user experience in different lighting conditions. This feature allows users to switch between a light theme and a dark theme with a single click.
π§ Setup Details:
darkMode: 'class'is enabled intailwind.config.js- User preference is saved using
localStorage - Toggle switch is implemented in
src/ThemeToggle.jsx - Imported and used inside
Home.jsx, beside the "Sign Up" button
- Locate the Toggle Button: In the header of the app, look for the toggle button displaying a moon (π) or sun (βοΈ) icon.
- Switch Modes:
- If the moon icon (π) is visible, click it to switch to dark mode.
- If the sun icon (βοΈ) is visible, click it to switch to light mode.
- Visual Changes: The app will update instantly:
- Light Mode: White or light gray backgrounds (e.g.,
bg-slate-50) with dark text (e.g.,text-gray-900). - Dark Mode: Dark gray backgrounds (e.g.,
dark:bg-gray-800) with light text (e.g.,dark:text-gray-100).
- Light Mode: White or light gray backgrounds (e.g.,
π Getting Started Prerequisites Node.js and npm
PostgreSQL
Clone and Run bash Copy Edit git clone https://github.com/Harshs16/civix.git
cd civix-app
π Roadmap / Future Enhancements π Push notifications for issue updates
π Analytics for civic issue trends
π Multilingual support
π± Mobile app (React Native)
π€ Contributing Pull requests are welcome! For major changes, please open an issue first to discuss your ideas.
π License MIT License. See LICENSE file for more details.