๐ A modern web application for managing campus issues - built with React, Firebase, and Tailwind CSS.
Students can report issues while administrators track and resolve them efficiently.
๐ Live Demo: issue-tracker-38509.web.app
A comprehensive web application for managing and tracking campus-related issues, built with React, Firebase, and modern web technologies. This platform enables students to report issues and allows administrators to efficiently manage and resolve them.
- Issue Reporting: Submit detailed reports with attachments (images/videos)
- Real-time Status Updates: Track issue progress from submission to resolution
- Dashboard: Personal overview of submitted issues with filtering and search
- Categorization: Organized issue categories (Facilities, Technology, Academic, etc.)
- Profile Management: Manage user profile and preferences
- Comprehensive Dashboard: Overview of all issues with statistics and analytics
- Issue Management: Efficiently review, assign, and track issue resolution
- User Management: Manage user accounts and permissions
- Category Management: Create and organize issue categories and subcategories
- Analytics & Reporting: Detailed insights with charts and downloadable reports
- Notifications System: Stay updated on new issues and status changes
- Bulk Operations: Export data and manage multiple issues
- Real-time Updates: Firebase Firestore for live data synchronization
- Dark/Light Theme: Complete theming support with user preference storage
- Responsive Design: Optimized for desktop, tablet, and mobile devices
- Search & Filtering: Advanced filtering by status, category, priority, and dates
- Media Support: Cloudinary integration for image and video uploads
- Authentication: Secure Firebase Authentication with role-based access
- Progressive Web App: Works offline and can be installed on devices
- React 19 - Modern UI library with latest features
- React Router DOM 7.2 - Client-side routing
- Tailwind CSS 3.4 - Utility-first CSS framework
- Lucide React - Beautiful and consistent icons
- Recharts - Interactive charts and analytics
- Firebase 11.6 - Backend-as-a-Service
- Authentication (user management)
- Firestore (real-time database)
- Storage (file uploads)
- Hosting (deployment)
- Cloudinary - Media management and optimization
- Vite 6.3 - Fast build tool and dev server
- ESLint - Code linting and quality
- PostCSS & Autoprefixer - CSS processing
- Concurrently - Run multiple commands simultaneously
Before running this project, make sure you have:
- Node.js (v16 or higher)
- npm or yarn package manager
- Firebase project with the following services enabled:
- Authentication
- Firestore Database
- Storage
- Hosting (for deployment)
- Cloudinary account (for media uploads)
git clone <repository-url>
cd my-issue-trackernpm install- Create a Firebase project at Firebase Console
- Enable Authentication, Firestore, and Storage
- Create a
src/config/firebase.jsfile with your Firebase configuration:
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
import { getStorage } from 'firebase/storage';
const firebaseConfig = {
// Your Firebase config object
apiKey: "your-api-key",
authDomain: "your-project.firebaseapp.com",
projectId: "your-project-id",
storageBucket: "your-project.appspot.com",
messagingSenderId: "your-sender-id",
appId: "your-app-id"
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const db = getFirestore(app);
export const storage = getStorage(app);
export default app;Create a src/config/cloudinary.js file:
export const cloudinaryConfig = {
cloudName: 'your-cloud-name',
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
};Create a .env file in the root directory:
# Firebase Configuration
VITE_FIREBASE_API_KEY=your-firebase-api-key
VITE_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your-sender-id
VITE_FIREBASE_APP_ID=your-app-id
# Cloudinary Configuration
VITE_CLOUDINARY_CLOUD_NAME=your-cloud-name
VITE_CLOUDINARY_API_KEY=your-api-keynpm run devThe application will be available at http://localhost:5173
npm run emulatorsnpm run dev:emulatorsnpm run lintnpm run buildnpm run previewfirebase deploy- Registration: Create an account using email/password
- Profile Setup: Complete your profile with room number, roll number, etc.
- Report Issues: Use the "Create Issue" button to submit new issues
- Track Progress: Monitor your issues from the dashboard
Administrators have additional privileges:
- Access to admin dashboard (
/admin) - Issue management and assignment
- User management
- Analytics and reporting
- Category management
To make a user an admin, update their role in Firestore:
// In Firestore, update the user document
{
email: "[email protected]",
role: "admin",
// other user fields...
}src/
โโโ components/ # Reusable UI components
โ โโโ common/ # Common components (Button, Card, etc.)
โ โโโ dashboard/ # Dashboard-specific components
โ โโโ forms/ # Form components
โ โโโ layout/ # Layout components (Header, Sidebar)
โ โโโ navigation/ # Navigation components
โโโ features/ # Feature-based organization
โ โโโ admin/ # Admin-specific features
โ โโโ analytics/ # Analytics and reporting
โ โโโ auth/ # Authentication
โ โโโ dashboard/ # Dashboard pages
โ โโโ issues/ # Issue management
โ โโโ student/ # Student-specific features
โ โโโ settings/ # User settings
โโโ contexts/ # React contexts (Auth, Theme, etc.)
โโโ hooks/ # Custom React hooks
โโโ services/ # API and Firebase services
โโโ styles/ # CSS files and theme variables
โโโ utils/ # Utility functions
The application supports dark and light themes. Customize themes in:
src/styles/themeVariables.csstailwind.config.js
Issue categories can be managed through:
- Admin panel (
/admin/categories) src/utils/categories.jsfor default categories
- Firebase Authentication with email/password
- Role-based access control (student/admin)
- Firestore security rules in
firestore.rules - User can only access their own data
- Admins have broader access permissions
- Cloudinary for secure media uploads
- File type validation
- Size limitations
The application includes comprehensive analytics:
- Issue volume trends
- Resolution time metrics
- Category distribution
- Priority analysis
- Performance dashboards
npm run testnpm run test:e2e- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Use ESLint configuration
- Follow React best practices
- Maintain consistent naming conventions
- Write meaningful commit messages
For support and questions:
- Check the FAQ section
- Create an issue in the repository
- Contact the development team
- Mobile app (React Native)
- Email notifications
- Advanced analytics
- Integration with campus systems
- Multi-language support
- API for third-party integrations
- v1.0.0 - Initial release with core features
- v1.1.0 - Added analytics and reporting
- v1.2.0 - Enhanced UI/UX and mobile responsiveness
- Firebase team for excellent backend services
- Tailwind CSS for the utility-first CSS framework
- React community for continuous innovation
- All contributors and testers
Campus Issue Tracker - Making campus life better, one issue at a time! ๐โจ