Explore the key features and interface of bCampus through these interactive screenshots.
All-in-one academic toolkit featuring GPA, marks analysis, and attendance tracking
University and batchmate rooms with live messaging, replies, and reactions
Sync grades, marks, attendance, and timetable directly from LPU UMS
Expo Android/iOS app with offline caching and native notifications for timetable and exams
Share academic profiles with classmates and compete on the CGPA leaderboard
Academic companion for LPU students — calculators, UMS sync, real-time campus chat, notifications, and shareable academic profiles.
bCampus is an all-in-one academic toolkit designed specifically for LPU students. Track GPA/CGPA, analyze marks, monitor attendance, plan reappear strategies, sync data from UMS, and chat with your campus community from the web or mobile app.
🔗 Live: campus.bhemu.in
apps/frontend/src/lib/mobileRelease.ts and served at /mobile/update.jsonpnpm workspaces + Turborepo. All apps live under apps/, all shared packages under packages/.
Bhemu-Campus/
├── package.json # Root workspace (turbo scripts, engines)
├── pnpm-workspace.yaml # Workspace definitions
├── turbo.json # Turborepo task pipeline
│
├── packages/
│ ├── shared/ # @bhemu/shared — pure TypeScript types, parsers, calculators, and chat helpers
│ ├── chat/ # @bhemu/chat — shared chat API client and protocol constants
│ └── firebase/ # @bhemu/firebase — shared Firebase academic data services
│
│ # @bhemu/shared internals
│ └── shared/src/
│ ├── constants/ # Grade, UMS, storage, and chat constants
│ ├── types/ # Shared academic, UMS, and chat interfaces
│ ├── utils/ # Pure calculators and chat helpers
│ └── parsers/ # String → struct parsers (parseProgram, …)
│
├── apps/
│ ├── frontend/ # Next.js 16 web app (React 19, Firebase 12)
│ ├── mobile/ # Expo SDK 57 React Native app
│ ├── ums-extension/ # Plasmo Chrome MV3 UMS sync extension
│ └── chat-worker/ # Hono + Cloudflare Durable Objects chat backend
│
└── docs/ # Documentation (firestore-schema, design decisions)
npm install -g pnpm)# Clone the repository
git clone https://github.com/adarsh3699/Bhemu-Calculator.git
cd Bhemu-Calculator
# Install all workspace dependencies from root
pnpm install
# Setup environment variables
cp apps/frontend/.env.example apps/frontend/.env
# Edit .env with your Firebase config
# Start frontend dev server
pnpm dev:web
# Start the mobile app
pnpm dev:mobile
# Run the local chat Worker (optional)
cd apps/chat-worker && pnpm dev
Open http://localhost:3000 to see the app.
# Start extension dev server (from repo root)
pnpm dev:ext
# Or from inside the workspace
cd apps/ums-extension
pnpm dev # Development build with watch mode
pnpm build # Production build
pnpm package # Build + zip for Chrome Web Store
Load unpacked extension in Chrome from apps/ums-extension/build/chrome-mv3-dev.
cd apps/mobile
pnpm start
# Native development builds
pnpm android
pnpm ios
See apps/mobile/README.md and docs/mobile-updates.md for mobile builds and releases.
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript 6 |
| UI Library | React 19 |
| Styling | Tailwind CSS v4 |
| Icons | Lucide React |
| Charts | Recharts |
| Backend | Firebase (Firestore, Auth) |
| Package Manager | pnpm |
| Category | Technology |
|---|---|
| Framework | Expo SDK 57, React Native 0.86 |
| Routing | Expo Router |
| Native WebView | react-native-webview 13.16 |
| Updates | Expo Updates + APK fallback |
| Notifications | Expo Notifications |
| Category | Technology |
|---|---|
| Runtime | Cloudflare Workers |
| HTTP API | Hono |
| Real-time | WebSockets + Durable Objects |
| Database | Neon PostgreSQL + Drizzle ORM |
| Auth | Firebase token exchange |
| Category | Technology |
|---|---|
| Framework | Plasmo 0.90.5 (Chrome MV3) |
| Language | TypeScript |
| UI | React |
| Backend | Firebase 12 (JS SDK) |
| Parser | linkedom (DOM manipulation) |
@bhemu/chat client and the deployed Cloudflare Worker/WebSocket serviceonSnapshot for live collaboration@bhemu/shared contains chat types, limits, timestamp formatting, grouping, and message merge helpers@bhemu/chat provides the platform-neutral REST API clientSee CLAUDE.md for detailed architecture docs.
| Command | Description |
|---|---|
pnpm dev:web | Start frontend dev server |
pnpm dev:ext | Start extension dev server |
pnpm dev:mobile | Start Expo mobile development server |
pnpm build | Build all workspaces (correct order via turbo) |
pnpm build:shared | Build @bhemu/shared only |
pnpm build:web | Build frontend (shared builds first) |
pnpm build:ext | Build extension (shared builds first) |
pnpm typecheck | Type-check all workspaces |
pnpm lint | Lint all workspaces |
pnpm test | Run @bhemu/shared unit tests |
cd apps/chat-worker)| Command | Description |
|---|---|
pnpm dev | Run the Worker locally with Wrangler |
pnpm deploy | Deploy the Worker to Cloudflare |
pnpm typecheck | Type-check the Worker |
pnpm test:all | Run unit, integration, and end-to-end tests |
pnpm db:generate | Generate Drizzle migrations |
pnpm db:migrate | Apply database migrations |
cd apps/frontend)| Command | Description |
|---|---|
pnpm dev | Start dev server with Turbopack |
pnpm build | Production build |
pnpm start | Serve production build |
pnpm lint | Run ESLint |
pnpm clean | Remove .next + node_modules, reinstall |
cd apps/ums-extension)| Command | Description |
|---|---|
pnpm dev | Plasmo dev (watch mode) |
pnpm build | Production build |
pnpm package | Build + zip for Chrome Web Store |
pnpm lint | ESLint |
pnpm lint:fix | ESLint with auto-fix |
.env# Firebase Config
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=
# Optional local chat Worker override
NEXT_PUBLIC_CHAT_API_BASE=
.envPLASMO_PUBLIC_FIREBASE_API_KEY=
PLASMO_PUBLIC_FIREBASE_AUTH_DOMAIN=
PLASMO_PUBLIC_FIREBASE_PROJECT_ID=
PLASMO_PUBLIC_FIREBASE_STORAGE_BUCKET=
PLASMO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
PLASMO_PUBLIC_FIREBASE_APP_ID=
This is a private project. Contributions are currently not accepted.
Adarsh Suman
This project is private and proprietary. All rights reserved.