Skip to content
All projects
BackendDjango 5 REST API · Celery · RazorpayPrivate codebase

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

  1. Modular apps

    Separate Django apps for core, rooms, bookings, payments, discounts, concessions, refunds, recurring billing, activity logs, records, webhook events and notifications.

  2. Scheduler

    Celery Beat drives capture, reconciliation and reminder jobs on a Redis-backed worker.

  3. 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.