Hostel Management Backend
Multi-campus hostel bookings, fees and Razorpay AutoPay / EMI billing.
Role · Backend engineer — domain model, payments, scheduling and deployment.
- 13
- Domain modules
- 2
- Payment providers
- Beat
- Scheduler
- SSO
- Auth
Overview
The backend for a hostel management system. It handles student bookings across campuses, hostels and bed types; fees, concessions, scholarships, discounts and refunds; one-off and recurring Razorpay payments; and scheduled fee capture, reconciliation and SMS / WhatsApp reminders.
Architecture
Modular apps
Separate Django apps for core, rooms, bookings, payments, discounts, concessions, refunds, recurring billing, activity logs, records, webhook events and notifications.
Scheduler
Celery Beat drives capture, reconciliation and reminder jobs on a Redis-backed worker.
Deploy
Docker Compose stack with Caddy, Gunicorn, Celery worker and beat, and Redis.
What it does
Bookings
- Hostels, rooms and bed types per campus
- Bookings link student, course, campus, hostel, bed type, discount, scholarship and lead owner
- Academic-year scoping and a public booking preview
Fees & finance
- Fee structures, concessions, scholarships and discounts
- Refunds and recurring payments
- Activity logs and records
Payments
- Razorpay one-off payments and AutoPay / EMI mandates with customer reuse
- Payment links, failed-payment webhooks and reconciliation
- Jodo Pay as a second provider
Automation
- Scheduled fee capture and reconciliation
- SMS and WhatsApp payment reminders
Identity
- Staff single sign-on delegated to the learning platform
- Custom staff model with Django model-permission RBAC
Platform
- Object storage for documents, Sentry monitoring
- Webhook event store and notifications
- pytest suite for the payment flow
Engineering decisions
Recurring money is messy
Mandate creation, EMI capture, failed-payment webhooks and refunds are reconciled by scheduled jobs so finance sees one consistent ledger.
Year boundaries
Academic-year scoping threads through bookings, fees and reports so rollovers don't mix cohorts.