- The Problem
- Our Solution
- Technology Stack
- Core Features
- System Architecture
- Getting Started
- Deployment
- Contributing
Campus infrastructure breaks down. A lot. And when it does, the response is almost always reactive rather than preventive:
The Reality:
- 💧 Water leaks in the same spots, semester after semester
- ⚡ Power outages disrupt classes without warning
- 📶 WiFi dead zones frustrate students and faculty
- 🚽 Sanitation issues impact health and comfort
- 🔧 Maintenance teams work blind, without data
Why Traditional Systems Fail:
Most campuses rely on scattered complaint emails, phone calls, or paper forms. There's no central intelligence, no pattern recognition, no way to see which buildings are problem hotspots, and no data to justify budget allocation.
The Gap: Without spatial intelligence and trend analysis, every issue feels new. Resources get wasted on symptoms while root causes go unaddressed.
CampusCare transforms scattered complaints into actionable intelligence.
We combine real-time geospatial visualization, AI-powered insights, and community engagement to help campuses shift from reactive firefighting to data-driven infrastructure planning.
📱 Report → 🗺️ Visualize → 📊 Analyze → 🤖 AI Insights → ⚡ Prioritize → ✅ Resolve
|
🗺️ See the Patterns 🎯 Know What Matters 🤖 Understand Why 🏆 Engage the Community 📧 Stay Informed |
Real-Time Intelligence
Smart Prioritization
Admin Power Tools
Community Rewards
|
The Result? Administrators get a data-backed command center. Maintenance teams know where to focus. Students feel heard. And the campus infrastructure actually gets better over time.
|
|
|
|
|
|
|
|
|
|
|
|
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#1976d2','primaryTextColor':'#fff','primaryBorderColor':'#0d47a1','lineColor':'#424242','secondaryColor':'#388e3c','tertiaryColor':'#f57c00','noteBkgColor':'#fff9c4','noteTextColor':'#000'}}}%%
graph TB
subgraph Frontend["🖥️ Frontend - Vercel"]
NextJS["Next.js 14<br/>App Router + RSC"]
Leaflet["Leaflet Maps<br/>Real-time Heatmaps"]
AdminUI["Admin Dashboard<br/>Charts & Analytics"]
end
subgraph Backend["⚙️ Backend - Railway"]
Express["Express + TypeScript<br/>REST API"]
AdminModule["Admin Module<br/>User/Issue Management"]
EmailService["Nodemailer<br/>HTML Templates"]
end
subgraph Data["💾 Data Layer"]
Firestore["Firebase Firestore<br/>GeoPoint Queries"]
FirebaseAuth["Firebase Auth<br/>JWT Tokens"]
end
subgraph AI["🤖 AI Layer"]
Gemini["Gemini 1.5 Flash<br/>Natural Language Insights"]
end
NextJS --> Express
Leaflet --> NextJS
AdminUI --> AdminModule
Express --> Firestore
Express --> FirebaseAuth
Express --> Gemini
EmailService --> Express
AdminModule --> Firestore
style Frontend fill:#1976d2,stroke:#0d47a1,stroke-width:2px,color:#fff
style Backend fill:#388e3c,stroke:#2e7d32,stroke-width:2px,color:#fff
style Data fill:#7b1fa2,stroke:#6a1b9a,stroke-width:2px,color:#fff
style AI fill:#f57c00,stroke:#e65100,stroke-width:2px,color:#fff
|
Next.js 14
|
Express API
|
Firestore
|
Gemini AI
|
|
Features:
|
Features:
|
||||||
|
|||||||
| Field | Type | Description |
|---|---|---|
| issue_id | UUID | Unique identifier |
| category | Enum | Water, Electricity, WiFi, Sanitation, etc. |
| latitude | Float | Geographic latitude |
| longitude | Float | Geographic longitude |
| severity | Integer | Severity level (1-5) |
| timestamp | DateTime | Issue creation time |
| status | Enum | Open, In Progress, Resolved |
| description | Text | Issue details |
| building_id | String | Associated building identifier (optional) |
|
v18 or higher |
Free Spark Plan |
From AI Studio |
# Create Firebase project
# (console.firebase.google.com)
# Enable Firestore
# Enable Authentication
# Download service account keyGet:
|
cd backend
npm install
# Add .env file
FIREBASE_SERVICE_ACCOUNT_KEY='{...}'
GOOGLE_GEMINI_API_KEY='your_key'
EMAIL_USER='your@gmail.com'
EMAIL_PASS='app_password'
# Deploy to Railway
npm run build |
cd frontend
npm install
# Add .env.local
NEXT_PUBLIC_API_URL='https://your-api.railway.app'
NEXT_PUBLIC_FIREBASE_CONFIG='{...}'
# Run locally
npm run dev
# Deploy to Vercel
vercel --prod |
| Service | URL | Description |
|---|---|---|
| 🎨 Frontend | http://localhost:3000 | Next.js app with heatmaps |
| ⚙️ Backend | http://localhost:3001 | Express API on Railway |
| 🔥 Firestore | Firebase Console | Database & authentication |
| 📧 Admin Panel | /admin/dashboard | User/issue management |
🤖 Gemini API Key (1500 requests/day)
- Visit aistudio.google.com
- Click "Create API Key"
- Copy to
GOOGLE_GEMINI_API_KEYin .env
🔥 Firebase Config (No credit card)
- Go to Firebase Console
- Create new project
- Enable Firestore Database
- Enable Authentication (Email & Google)
- Project Settings → Service Accounts → Generate new private key
- Copy JSON to
FIREBASE_SERVICE_ACCOUNT_KEY
📧 Gmail SMTP (For email notifications)
- Enable 2FA on your Google account
- Generate App Password: myaccount.google.com/apppasswords
- Add to .env:
EMAIL_USER=your@gmail.com EMAIL_PASS=your_16_char_app_password
Backend (.env):
FIREBASE_SERVICE_ACCOUNT_KEY='{"type":"service_account",...}'
GOOGLE_GEMINI_API_KEY='AIzaSy...'
EMAIL_USER='your@gmail.com'
EMAIL_PASS='your_app_password'
PORT=3001
FRONTEND_URL='http://localhost:3000'Frontend (.env.local):
NEXT_PUBLIC_API_URL='http://localhost:3001'
NEXT_PUBLIC_FIREBASE_CONFIG='{"apiKey":"...","authDomain":"...",...}'campuscare/
├── 📄 README.md # You are here!
├── 🐳 docker-compose.yml # Multi-service orchestration
├── 📚 docs/ # Comprehensive documentation
│ ├── FIREBASE_SETUP.md # Firebase configuration guide
│ ├── architecture/ # System design docs
│ ├── api/ # API specifications
│ └── prompts/ # AI prompt templates
│
├── ⚙️ backend/ # Node.js + Express + TypeScript
│ ├── src/
│ │ ├── config/ # Firebase initialization
│ │ ├── modules/ # Feature modules
│ │ │ ├── issues/ # Issue management
│ │ │ ├── analytics/ # Data analytics
│ │ │ ├── ai/ # Gemini integration
│ │ │ └── auth/ # Firebase auth
│ │ ├── middlewares/ # Express middleware
│ │ ├── types/ # TypeScript definitions
│ │ └── utils/ # Helper functions
│ └── package.json # Dependencies (Firebase Admin)
│
├── 🎨 frontend/ # Next.js 14 + TypeScript
│ ├── src/
│ │ ├── app/ # Next.js app router
│ │ ├── components/ # React components
│ │ │ ├── Map/ # Leaflet + OpenStreetMap
│ │ │ ├── Charts/ # Data visualization
│ │ │ └── Dashboard/ # Admin interface
│ │ ├── lib/ # Firebase SDK & utilities
│ │ └── styles/ # Tailwind CSS
│ └── public/ # Static assets
│
├── 📊 analytics/ # Analytics Scripts
│ └── firestore/ # Firestore queries & aggregations
│
└── 🏗️ infra/ # Infrastructure as Code
├── firebase.json # Firebase hosting
└── firestore.rules # Firestore security rules
# Backend tests
cd backend
npm test
npm run test:coverage
# Frontend tests
cd frontend
npm test
# Build and deploy
cd backend
gcloud run deploy campuscare-backend \
--source . \
--platform managed \
--region us-central1 \
--allow-unauthenticatedAuto-configured:
|
# Build Next.js app
cd frontend
npm run build
# Deploy to Firebase
firebase deploy --only hosting
# Or deploy to Vercel
vercel --prodFeatures:
|
|
|
|
|
Extend to multiple institutions with tenant isolation |
Connect real-time sensors for automated monitoring |
Native iOS/Android apps for field staff |
Scale to public infrastructure management |
graph LR
A[🍴 Fork] --> B[🌿 Branch]
B --> C[💻 Code]
C --> D[✅ Test]
D --> E[📝 Commit]
E --> F[🚀 Push]
F --> G[🔄 Pull Request]
style A fill:#e3f2fd
style G fill:#c8e6c9
Quick Steps:
- 🍴 Fork the repository
- 🌿 Create feature branch (
git checkout -b feature/AmazingFeature) - 💻 Make your changes
- ✅ Add tests
- 📝 Commit (
git commit -m 'Add AmazingFeature') - 🚀 Push to branch (
git push origin feature/AmazingFeature) - 🔄 Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
|
Cloud Infrastructure Serverless computing, managed databases, and global CDN |
AI Intelligence Natural language insights and automated report generation |
Interactive Maps Open source mapping with no API key required |
Open Source Maps Free, unlimited map tiles with no API key required |








