How malik-bilawal/campus-coin works
Campus Coin is a student budgeting web app: users authenticate, record or import transactions, and review budgets, dashboards, reports, and spending guidance. Its Next.js client fronts an Express/Mongoose API; server controllers coordinate domain records and services. Major documented branches include AI insights/chat, voice, email-shared reports, notifications/realtime, bookmarks, tips, and administration. The graph reflects README capabilities and shown imports/calls; several client screens and server subsystems are unsampled, so their internal wiring is not asserted.
Main entry points: models Domain records · transaction.controller.js Transactions · notify.js Notifications · admin.controller.js Admin tools
Components 22
Web client
- Next.js app
client/src/app - Voice input
client/src/lib/voice - API client
client/src/lib/api.js
API platform
- Express API
server/src/app.js - Authentication
server/src/controllers/auth.controller.js - Access control
server/src/middlewares/auth.js - API routes
server/src/routes
Budgeting domain
- Transactions
server/src/controllers/transaction.controller.js - Budgets
server/src/controllers/budget.controller.js - Categories
server/src/controllers/category.controller.js - Dashboard
server/src/controllers/dashboard.controller.js - Reports
server/src/controllers/report.controller.js - Domain records
server/src/models
Guidance and voice
- AI endpoints
server/src/routes/ai.routes.js - AI services
server/src/services/ai - Voice services
server/src/services/tts.service.js
Engagement and admin
- Notifications
server/src/services/notify.js - Socket service
server/src/config/socket.js - Admin tools
server/src/controllers/admin.controller.js - Email service
server/src/services/mail.service.js - Daily tips
server/src/services/tipsEngine.js
Other components
- Student
Connections 28
- Student → Next.js app: uses
- Next.js app → API client: requests data
- Next.js app → Voice input: offers voice input
- API client → Express API: calls REST API
- Express API → API routes: mounts routes
server/src/app.js - API routes → Transactions: routes requests
server/src/routes/transaction.routes.js - API routes → Access control: protects endpoints
server/src/routes/transaction.routes.js - Authentication → Domain records: reads and writes users
server/src/controllers/auth.controller.js - Authentication → Email service: sends verification mail
server/src/controllers/auth.controller.js - Transactions → Domain records: reads and writes transactions
server/src/controllers/transaction.controller.js - Transactions → AI services: suggests categories
server/src/controllers/transaction.controller.js - Transactions → Budgets: checks budget alerts
server/src/controllers/transaction.controller.js - Transactions → Notifications: notifies user
server/src/controllers/transaction.controller.js - Transactions → Socket service: emits transaction event
server/src/controllers/transaction.controller.js - Budgets → Domain records: uses budget records
- Categories → Domain records: uses category records
- Dashboard → Domain records: summarizes activity
- Reports → Domain records: reads report data
server/src/controllers/report.controller.js - Reports → Email service: shares PDF by email
server/src/controllers/report.controller.js - AI endpoints → AI services: dispatches AI requests
server/src/routes/ai.routes.js - AI endpoints → Domain records: loads categories
server/src/routes/ai.routes.js - Voice services → Student: returns speech audio
- Notifications → Domain records: stores notifications
server/src/services/notify.js - Notifications → Socket service: emits updates
server/src/services/notify.js - Admin tools → Domain records: manages platform data
server/src/controllers/admin.controller.js - Admin tools → Notifications: broadcasts announcements
server/src/controllers/admin.controller.js - Admin tools → Email service: sends account notices
server/src/controllers/admin.controller.js - Daily tips → Domain records: uses spending history
server/src/services/tipsEngine.js