CampusClick is a dynamic, modern community platform designed to serve as a digital hub for campus life. It combines event management, social features, and a living archive of memories into a seamless, meaningful user experience.
CampusClick is built to connect students, capturing the essence of campus life through a digitized timeline, event participation, and shared galleries. It features a robust Role-Based Access Control (RBAC) system, ensuring secure management of content and users while providing a vibrant interface for students and contributors.
- Create Memories: Users can upload photos to the shared Gallery (subject to moderation).
- Event Discovery: Browse and save upcoming campus events.
- Tech Hub & Insights: Access educational resources and campus insights.
- Interactive Timeline: View a chronological history of campus milestones.
- Leaderboard: Engage with gamified elements of the platform.
- Personal Dashboard: Manage saved events, track profile activity, and customize settings.
- Secure Authentication: Sign up and login securely via Firebase Auth.
- Admin Dashboard: Centralized control functionality for the platform.
- User Management: View, block, or delete users to maintain community standards.
- Content Moderation: Review and approve/reject user uploads to the gallery.
- Activity Logs: Comprehensive audit trails of all administrative actions.
- Analytics: Visual insights into user engagement and platform usage.
This project leverages a modern, high-performance web stack:
- Core: React 19
- Build Tool: Vite
- Routing: React Router Dom
- State Management: React Context API
- Language: JavaScript (ES Modules)
- Framework: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React
- Notifications: React Toastify
- Charts: Chart.js & Recharts
- BaaS: Firebase (Authentication, Firestore, Storage)
- AI Integration: Google Gemini API (for content analysis/generation)
- Client-Side Rendering: The application is a Single Page Application (SPA) served by Vite, providing instant navigation and rich interactivity.
- Authentication Flow: Users authenticate directly with Firebase Auth. Their session state is managed via
AuthContextacross the app. - Data Management: User data, events, and gallery items are stored in Firebase Firestore. Images are stored in Firebase Storage.
- Role Security: Protected routes (
RequireAuth,RequireAdmin) actively check user claims before granting access to sensitive pages. - AI Power: The
gemini.jsservice leverages Google's Gemini AI to assist with content generation and insights.
Follow these steps to set up the project locally.
- Node.js (v18 or higher recommended)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd Campusclick
-
Install Dependencies
npm install
Create a .env file in the root directory and configure your Firebase and Gemini credentials:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_bucket.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_FIREBASE_MEASUREMENT_ID=your_measurement_id
VITE_GEMINI_API_KEY=your_gemini_api_keyStart the development server:
npm run devThe application will be available at http://localhost:5173.
To create an optimized production build:
npm run buildCampusclick/
├── public/ # Static assets
├── src/
│ ├── assets/ # Images and fonts
│ ├── components/ # Reusable UI components
│ │ ├── Auth/ # Auth guards and forms
│ │ ├── Layout/ # Header, Footer, Transitions
│ │ └── ...
│ ├── context/ # AuthContext, ThemeContext
│ ├── pages/ # Application route pages
│ │ ├── Admin/ # Admin dashboards and management
│ │ ├── Auth/ # Login/Register pages
│ │ └── ...
│ ├── services/ # Firebase, Gemini, and API services
│ ├── App.jsx # Main App component
│ ├── Router.jsx # Route definitions
│ └── main.jsx # Entry point
└── ...config files
- Sign Up: Create an account via the registration page.
- Explore: Browse events and the gallery.
- Engage: Upload photos or save events to your profile.
- Manage: Update profile settings in the Dashboard.
- Login: Access the dedicated Admin Portal.
- Monitor: Check the Dashboard for real-time stats.
- Moderate: Go to the Moderation tab to approve/reject user content.
- Manage Users: specific user oversight in the User Management tab.