A comprehensive, AI-powered cross-platform Web and Android application designed to streamline university project group registration, file submission, WebRTC video calling, supervisor assignment, and administrative management.
This system replaces manual workflows with a smart, fully digital solution featuring real-time communication, AI chatbots, and Excel data processing.
- Group Registration: Register teams of exactly 5 members. Validation ensures no duplicate registrations. Improved UI with password visibility toggles.
- AI Mentor Chatbot: A Grok AI-powered AI assistant that answers project-related queries and provides guidance.
- Project Submissions: Drag-and-drop Cloudinary uploading for PPTs and PDFs (up to 10MB). Students can dynamically delete incorrectly uploaded files.
- Live Video Calls: Start direct WebRTC video calls with assigned supervisors (powered by Socket.IO signaling).
- Group Management: View assigned groups with dedicated submission status indicators. Enter individual milestone review marks and let the dashboard auto-calculate final averages (validated 0-100).
- AI PDF Summarizer: One-click Grok AI summaries for submitted student documents, saving countless reading hours.
- Video Conferencing: Participate in live, browser-to-browser WebRTC video calls with student groups.
- Profile Security: Secure password management and customizable group-load preferences.
- Bulk Import (Excel): Instantly upload
.xlsxfiles to onboard hundreds of Students and Supervisors. - Smart Assignment Engine: Run the auto-assignment algorithm to perfectly balance supervisor loads and group needs.
- Entity Management: Manually create, delete (with cascade data wipe), and oversee all supervisors and groups.
- Sentry Health Tracking: Comprehensive production error tracking and rate-limiting security.
| Category | Technology |
|---|---|
| π¨ Frontend | React.js (Vite), Tailwind CSS, Socket.IO Client |
| βοΈ Backend | Node.js, Express.js, Socket.IO, Multer, Sentry |
| ποΈ Database | PostgreSQL (NeonDB), node-postgres (pg) |
| π€ AI & Media | Grok API (XAI_API_KEY), Cloudinary |
| π Security | JWT (JSON Web Tokens), Bcryptjs, Express-Rate-Limit |
| π DevOps | GitHub Actions (CI build/lint pipeline) |
π¦ CapstoneDesk
β£ π backend
β β£ π routes # Express API routes (groups, supervisors, admin, chatbot, videoCall...)
β β£ π middleware # JWT Auth & Rate Limiters
β β£ π db.js # PostgreSQL connection pool
β β£ π index.js # Main server & Socket.IO initialization
β β£ π db_schema.sql # Run this in your DB to create all tables
β β π .env # (Must be created by user)
β£ π frontend
β β£ π src
β β β£ π components # React UI elements (Dashboards, AIChatbot, VideoCall, FileUpload)
β β β£ π App.jsx # React Router declarations
β β β£ π index.css # Tailwind CSS & custom glassmorphism styles
β β β π api.js # Axios instance with centralized JWT interceptors
β β π .env # Frontend environment vars
β π .github/workflows/ci.yml # CI setupFollow these instructions to set up and run the project locally.
Make sure you have installed:
- Node.js (v16+ recommended)
- Git
- PostgreSQL Database (e.g., Neon or Supabase)
- Api Keys for: Grok AI, Cloudinary, and Sentry.
git clone https://github.com/GitH22Ash/CapstoneDesk.git
cd CapstoneDeskNavigate to the backend folder and install dependencies:
cd backend
npm installCreate a .env file inside the backend/ folder and configure:
# Database
DATABASE_URL="postgres://postgres:[YOUR-PASSWORD]@db.example.co:5432/neondb"
# Auth
JWT_SECRET="generate_a_strong_secret_string"
ADMIN_EMAIL="admin@university.edu"
ADMIN_PASSWORD="supersecretpassword"
# Google Gemini API
GROK_API_KEY="your_grok_api_key"
# Cloudinary (File Uploads)
CLOUDINARY_CLOUD_NAME="your_cloud_name"
CLOUDINARY_API_KEY="your_api_key"
CLOUDINARY_API_SECRET="your_api_secret"
# Error Tracking (Optional but recommended)
SENTRY_DSN="your_sentry_dsn_url"
β οΈ Run the Database Schema: Execute the SQL statements insidebackend/db_schema.sqlon your PostgreSQL provider to correctly build the tables (supervisors,students,project_groups,submissions,video_rooms, etc.).
Start the backend server:
npm run devServer runs at π
http://localhost:5000
Open a new terminal tab and navigate to the frontend:
cd frontend
npm installCreate a .env file inside the frontend/ folder:
VITE_BACKEND_URL="http://localhost:5000"Start the Vite development server:
npm run devFrontend runs at π
http://localhost:5173
The project is fully wrapped with native Android support via Capacitor. To generate your own Android .apk:
- Ensure the frontend is built:
cd frontend && npm run build - Sync the assets to the Android library:
npx cap sync - Download and install Android Studio.
- Inside Android Studio, open the
frontend/android/folder. - In the top nav menu, click Build > Generate App Bundles or APKs > Build APK(s).
- Admin Init: Log into the Admin panel (
/admin/login) utilizing the.envcredentials. Upload students and supervisors via Excel using the new Bulk Import feature. - Student Signup: Students go to the landing page and register a 5-member group. They generate a custom group password for future logins.
- Admin Assortment: Admin clicks "Assign Groups" to automatically distribute student teams balancing supervisor loads.
- Collaboration: Students log into their dashboard. They can chat with the AI Mentor, drop files into the submission portal, or start a live Video call with their supervisor.
- Supervisor Review: Supervisors log in to see submissions, trigger AI-summaries on long PDFs, conduct video calls, and enter passing marks.
The project leverages a heavily customized Glassmorphism design language, employing deep, dynamic gradients (#3b82f6 to #06b6d4), translucent frosted-glass modal cards, subtle border opacities, and fluid keyframe animations (fade-in, scale up, hover glow effects) designed carefully in pure CSS paired with Tailwind utilities.
Contributions are always welcome! Please create a pull request with detailed commit references describing your changes.
Copyright (c) 2026. All Rights Reserved.
This project is proprietary and confidential. No part of this software may be copied, distributed, or modified without explicit written permission from the owner. See the LICENSE file for more details.