How rare-art/gents-pg-electricity works
GentsPG Electricity Manager is a PG-owner portal for managing residents, meters, monthly electricity bills, and payments. The owner uses the dashboard to maintain records, generate and split a meter bill among residents, then track payment status and view reports. The React app calls an Express API backed by Mongoose models; OTP login protects owner operations. The tree and excerpts establish the main routes and bill workflow, but unsampled page and route implementations limit detail on their internal behavior.
Main entry points: App.jsx Portal shell · api.js API client · index.js Express server · auth.js Auth routes
Components 27
Owner portal
- Portal shell
client/src/App.jsx - Dashboard
client/src/pages/Dashboard.jsx - Residents
client/src/pages/Residents.jsx - Meters
client/src/pages/Meters.jsx - Bills
client/src/pages/Bills.jsx - Payment reports
client/src/pages/Reports.jsx - Bill generator
client/src/components/BillModal.jsx - Login modal
client/src/components/LoginModal.jsx - WhatsApp dialog
client/src/components/WhatsAppModal.jsx - API client
client/src/api.js
Backend API
- Express server
server/index.js
Owner authentication
- Session context
client/src/context/AuthContext.jsx - Auth routes
server/routes/auth.js - JWT middleware
server/middleware/auth.js - User model
server/models/User.js
Utility records
- Resident routes
server/routes/residents.js - Meter routes
server/routes/meters.js - Bill routes
server/routes/bills.js - Payment routes
server/routes/payments.js - Stats route
server/routes/stats.js - Resident model
server/models/Resident.js - Meter model
server/models/Meter.js - Bill model
server/models/Bill.js - Payment model
server/models/Payment.js
Other components
- PG owner
- MongoDB
- Email service
Connections 42
- PG owner → Portal shell: uses
- Portal shell → Dashboard: renders
client/src/App.jsx - Portal shell → Residents: renders
client/src/App.jsx - Portal shell → Meters: renders
client/src/App.jsx - Portal shell → Bills: renders
client/src/App.jsx - Portal shell → Payment reports: renders
client/src/App.jsx - Portal shell → Bill generator: renders
client/src/App.jsx - Portal shell → Login modal: renders
client/src/App.jsx - Portal shell → WhatsApp dialog: renders
client/src/App.jsx - Portal shell → Session context: provides session
client/src/App.jsx - Portal shell → API client: fetches initial data
client/src/App.jsx - Session context → API client: requests identity
client/src/context/AuthContext.jsx - Bill generator → API client: creates bill
client/src/components/BillModal.jsx - API client → Auth routes: HTTP auth requests
client/src/api.js - API client → Resident routes: HTTP resident requests
client/src/api.js - API client → Meter routes: HTTP meter requests
client/src/api.js - API client → Bill routes: HTTP bill requests
client/src/api.js - API client → Payment routes: HTTP payment requests
client/src/api.js - API client → Stats route: HTTP stats requests
client/src/api.js - Express server → Auth routes: registers routes
server/index.js - Express server → Resident routes: registers routes
server/index.js - Express server → Meter routes: registers routes
server/index.js - Express server → Bill routes: registers routes
server/index.js - Express server → Payment routes: registers routes
server/index.js - Express server → Stats route: registers routes
server/index.js - Auth routes → User model: reads and updates
server/routes/auth.js - Auth routes → JWT middleware: protects identity route
server/routes/auth.js - Bill routes → JWT middleware: protects mutations
server/routes/bills.js - Bill routes → Bill model: reads and writes
server/routes/bills.js - Bill routes → Payment model: creates and deletes
server/routes/bills.js - Bill routes → Meter model: updates reading
server/routes/bills.js - Resident routes → Resident model: uses model
server/routes/residents.js - Resident routes → Payment model: uses model
server/routes/residents.js - Meter routes → Meter model: uses model
server/routes/meters.js - Payment routes → Payment model: uses model
server/routes/payments.js - Stats route → Bill model: aggregates data
server/routes/stats.js - Stats route → Payment model: aggregates data
server/routes/stats.js - Stats route → Resident model: aggregates data
server/routes/stats.js - Stats route → Meter model: aggregates data
server/routes/stats.js - Express server → MongoDB: connects database
server/index.js - Auth routes → Email service: sends OTP
server/routes/auth.js - Auth routes → User model: stores OTP state
server/routes/auth.js