FixTrack is a web-based application designed for real-time reporting, tracking, and resolution of issues. It provides a platform for users to submit issues with location data, and for administrators to manage and monitor the status of these issues. The interactive map interface allows for easy visualization of issue locations and supports department-based management for better organization.
π Check it out: FixTrack
- π User Authentication: Secure user registration and login functionality.
- πΊοΈ Interactive Map: Users can report issues by selecting a location on an interactive map powered by Leaflet.
- π Issue Reporting: Submit detailed reports including title, description, image (via Cloudinary), and location.
- π Dashboard: View, filter, and manage all reported issues in one place.
- π Real-Time Updates: Issue data and statuses update in real-time through Firebase.
- π€ Chatbot Integration: An intelligent chatbot assists users with reporting or tracking issues.
- π₯ Role-Based Access:
- Department Admins can view and manage reports related only to their respective departments (e.g., road, sanitation, etc.).
- Super Admins have full access β they can view/manage all reports and handle user management.
- π§ Location-Based Reporting: Each issue is tagged with its geographic coordinates for accurate placement on the map.
- π¨ Responsive Design: Fully responsive and mobile-friendly UI built with React and custom CSS.
Make sure Node.js and npm are installed on your system.
# Clone the repo
git clone https://github.com/Muhammad-Ahmed-Rayyan/FixTrack.git
cd FixTrack
# Install required libraries
npm install
# Run the development server
npm run devTo ensure FixTrack runs properly with all connected services (Firebase, Gemini, and Cloudinary), you need to replace configuration values inside the existing project files.
Replace the existing values in your .env file with the following environment variables:
VITE_API_KEY="YOUR-FIREBASE-CONSOLE-APP-API-KEY"
VITE_AUTH_DOMAIN="YOUR-FIREBASE-CONSOLE-APP-AUTH-DOMAIN"
VITE_PROJECT_ID="YOUR-FIREBASE-CONSOLE-APP-PROJECT-ID"
VITE_STORAGE_BUCKET="YOUR-FIREBASE-CONSOLE-APP-STORAGE-BUCKET"
VITE_MESSAGING_SENDER_ID="YOUR-FIREBASE-CONSOLE-APP-MESSAGING-SENDER-ID"
VITE_APP_ID="YOUR-FIREBASE-CONSOLE-APP-ID"
VITE_GEMINI_API_KEY="YOUR-GEMINI-API-KEY"You can obtain these values from:
-
Firebase Console:
- Go to your Firebase project β Project Settings β General.
- Under Your Apps, select your web app to view the configuration keys.
-
Gemini API (for AI Integration):
- Visit Google AI Studio to generate your Gemini API Key. -Replace "YOUR-GEMINI-API-KEY" with your actual Gemini key in the .env file.
Replace or update the following constants in the IssueForm.tsx component:
const CLOUD_NAME = 'YOUR-CLOUDINARY-CLOUD-NAME';
const UPLOAD_PRESET = 'YOUR-CLOUDINARY-UPLOAD-PRESET';You can find these in your Cloudinary Console:
- Open your Cloudinary Dashboard.
- Copy your Cloud Name and Upload Preset (or create a new preset under Settings β Upload).
- Replace the placeholders above with your actual credentials.
FixTrack
βββ public
β βββ assets
β βββ logo
β β βββ FixTrack.ico
β β βββ FixTrack.png
β βββ index.html
β βββ vite.svg
βββ src
β βββ animation
β β βββ Map_Pinging.json
β βββ components
β β βββ BuiltWith
β β β βββ BuiltWith.css
β β β βββ BuiltWith.tsx
β β βββ ContactUs
β β β βββ ContactUs.css
β β β βββ ContactUs.tsx
β β βββ Footer
β β β βββ Footer.css
β β β βββ Footer.tsx
β β βββ Home
β β β βββ Home.css
β β β βββ Home.tsx
β β βββ HowItWorks
β β β βββ HowItWorks.css
β β β βββ HowItWorks.tsx
β β βββ LoadingSpinner
β β β βββ LoadingSpinner.css
β β β βββ LoadingSpinner.tsx
β β βββ Navbar
β β β βββ Navbar.css
β β β βββ Navbar.tsx
β β βββ OurTeam
β β β βββ OurTeam.css
β β β βββ OurTeam.tsx
β β βββ Auth.css
β β βββ Auth.tsx
β β βββ Chatbot.css
β β βββ Chatbot.tsx
β β βββ Dashboard.css
β β βββ Dashboard.tsx
β β βββ IssueForm.css
β β βββ IssueForm.tsx
β β βββ IssueList.css
β β βββ IssueList.tsx
β β βββ Profile.css
β β βββ Profile.tsx
β β βββ ProfileMenu.css
β β βββ ProfileMenu.tsx
β β βββ UserManagement.css
β β βββ UserManagement.css
β βββ pages
β β βββ LandingPage.css
β β βββ LandingPage.test.tsx
β β βββ LandingPage.tsx
β βββ App.css
β βββ App.tsx
β βββ firebaseConfig.ts
β βββ index.css
β βββ main.tsx
β βββ setupTests.ts
β βββ types.ts
β βββ vite-env.d.ts
βββ .env
βββ .eslintrc.cjs
βββ .firebaserc
βββ cors.json
βββ firebase.json
βββ firebase.rules
βββ index.html
βββ package-lock.json
βββ package.json
βββ tsconfig.json
βββ tsconfig.node.json
βββ vite.config.ts
βββ vitest.config.tsThis project uses Firebase for backend services.
To set it up:
- Create a new project in the Firebase Console.
- Add a new web app to your Firebase project.
- Copy the Firebase configuration object.
This project uses Firebase Hosting for deployment. Below are the steps and commands used to configure, build, and deploy FixTrack from Firebase Studio:
# Log in to Firebase
firebase login
# Link your local project to a Firebase project
firebase use --add
# Initialize Firebase Hosting (select "dist" or your build folder)
firebase init hosting
# Build the production-ready project
npm run build
# Deploy to Firebase Hosting
firebase deploy --only hostingAfter deployment, your production files will be available online via the Firebase Hosting URL. The optimized build files are located in the dist directory.
β Love this project? Donβt forget to star it!
