Skip to content
OnlyProjects
MCA · Mobile App DevelopmentFor educational purposes only
Code included

Kalyana Mantapa (Marriage Hall) Booking and Advance Tracking App (Android/Java)

Muhurtham-date calendar, split-day slots, advance ledger with refund slabs and numbered PDF receipts for a Chennai marriage hall

Mapped to your syllabusAnna University MCA Regulation 2021 · Project Work · Semester 4

Overview

1 min read

MantapaBook is an Android app that replaces the fat date register, diary of phone enquiries and bundle of handwritten advance receipts kept at the front desk of a typical Chennai kalyana mantapa (marriage hall). Marriage-hall bookings in Tamil Nadu cluster violently around auspicious muhurtham dates: on such days a popular hall may receive thirty calls for one slot, and the paper register is where double-booking disputes, lost advance receipts and forgotten refunds are born.

The app gives the hall's owner and manager a live calendar of every hall — main mantapa, mini hall and dining block — colour-coded as Booked, On Hold, Free or Maintenance, with full-day and split-day slots (morning and evening can go to different parties only where the hall permits). Each booking walks a tracked lifecycle — Enquiry → Date Hold → Advance Paid → Confirmed → Completed, with holds that expire automatically if the advance does not arrive and cancellations that follow a configurable refund-slab table by days remaining. Every payment is a ledger entry; every receipt a numbered PDF. Bookings are written inside a Room transaction guarded by a unique index, so two managers booking the same muhurtham slot at the same moment cannot both succeed.

Built with Java on Android using Room, MVVM and WorkManager — the mobile-application course (MC4204) applied with the transaction and schema discipline of Advanced Database Technology (MC4202) — it runs fully offline, needs no server or subscription, and is a practical, viva-defensible Anna University MCA R2021 Semester-4 project.

Relevant for
Tamil Nadu
Level
Intermediate · 14 weeks · solo
Common at
Anna University, Chennai, Jawaharlal Nehru Technological University Hyderabad, IGNOU
Updated
Nov 2026

Syllabus alignment

Anna University · MCA Regulation 2021

Project Work · Semester 4

Subjects this project applies
  • MC4204 Mobile Application Development
  • MC4202 Advanced Database Technology (schema design and transactions applied to Room)
  • Java (object-oriented design for the Android app)
  • MC4009 DevOps (Git-based workflow)
How it is evaluated

See your department's project guidelines.

Also fits: JNTUH MCA R22, IGNOU MCA_NEW — MCSP-232 guidelines (2025), Bharathiar University 2023-24.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

5 min read

Problem statement

A marriage hall's front office sells the same handful of muhurtham dates many times over — as enquiries, holds and confirmed bookings — but tracks them in a wall calendar and a diary. Holds are promises kept in someone's memory, advances are recorded in handwritten receipt books, and refund amounts depend on who is arguing. The result is double-booking disputes on exactly the dates that matter most, receipts that cannot be produced at settlement time, refunds applied inconsistently, and no answer to basic questions such as what the hall earned last month or how many enquiries became bookings. There is a need for an offline-first Android application that shows live slot availability, enforces the booking lifecycle with automatically expiring holds, records every advance, balance and refund in an auditable ledger, generates numbered PDF receipts, applies a written refund-slab policy, and reports revenue and occupancy — while storing only the customer's name, mobile number and event details, never Aadhaar or other identity documents.

Synopsis

Abstract

This project delivers an offline-first Android application for a marriage hall's front office: an availability calendar with full-day and split-day slots, a lifecycle with expiring holds and refund slabs, an advance-and-payment ledger with numbered PDF receipts, and dashboards for dues and monthly revenue. It is implemented in Java with Room on SQLite following MVVM, and the design centres on one guarantee — no date is ever sold twice.

Introduction

Chennai's kalyana mantapas run on thin margins and phone calls. A mid-size hall hosts 120–180 weddings a year, with demand concentrated on a handful of muhurtham dates that families fix months ahead. The desk tracks availability on a paper calendar, quotes rates by memory, takes advances against handwritten receipts and settles refunds by negotiation. Disputes cost the hall its reputation, and with one desk, two staff and unreliable broadband, the answer must be a single-device offline app, not a cloud portal.

Existing System and Its Limitations

  • Availability lives on a wall calendar; enquiries sit in a diary against a name and a promise.
  • Holds are enforced by memory — a family that delayed its advance finds the date gone.
  • Advance receipts are handwritten carbon books; refund amounts are settled by argument, not by a written policy.
  • Owners learn monthly revenue by totalling the diary; enquiry-to-booking conversion is unknown.
  • Gap: event-venue software for banquet chains is subscription-priced and cloud-first; nothing simple, free and offline serves a single hall's front desk.

Proposed System

  • A per-hall month calendar with dates marked Free, Hold, Booked or Maintenance and slots of Full Day / Morning / Evening; split-day use is per-hall configuration.
  • A booking lifecycle Enquiry → Date Hold → Advance Paid → Confirmed → Completed, plus Cancelled and Expired; holds expire by default after 7 days, enforced by a WorkManager sweep and an on-launch check.
  • Every confirmed-advance write happens in a Room transaction guarded by a unique index on hall, date and slot, so double-selling is impossible even with two rapid taps.
  • A payment ledger with part payments (cash/UPI reference) and a configurable refund-slab table (for example 80% above 60 days, 50% between 30 and 60, none below 30) applied automatically on cancellation.
  • Numbered PDF receipts from a per-financial-year counter, rendered with Android's PdfDocument.
  • A dashboard of expiring holds, pending balances and the next 30 days of events, plus monthly revenue, occupancy and enquiry-conversion reports with CSV export.

Feasibility Study

  • Technical: Room provides compile-time-checked queries and transactional writes; WorkManager runs expiry sweeps reliably even after reboots; PdfDocument needs no licence. The app runs on any Android 8+ tablet or phone.
  • Economic: Zero recurring cost — no server, no subscription — against a cloud venue tool's ₹200–500 monthly fee, and it survives the hall's patchy broadband.
  • Operational: The app mirrors the desk's paper flow screen by screen; training takes under an hour, and the register can run in parallel for one cycle as a safety net.

Objectives

  1. 01Model halls, dates and slots (full day, morning muhurtham, evening reception) so that availability is always explicit and per-hall configurable.
  2. 02Enforce the booking lifecycle Enquiry → Date Hold → Advance Paid → Confirmed → Completed, with automatic expiry of unpaid holds.
  3. 03Guarantee through a Room transaction and unique index that the same hall, date and slot can never hold two active bookings.
  4. 04Maintain a complete payment ledger — advances, part payments, balances and refunds — linked to each booking.
  5. 05Apply a configurable refund-slab policy by days remaining before the event, instead of ad-hoc negotiation.
  6. 06Generate sequentially numbered PDF receipts for every payment using Android's PdfDocument API.
  7. 07Provide reminders for expiring holds, pending balances and upcoming events, and monthly revenue/occupancy/enquiry-conversion reports with CSV export.
  8. 08Keep the app fully offline with role-gated access (owner, manager) and a customer record limited to name, mobile number and event details.

Scope

In scope

  • One mantapa property with multiple halls (main, mini, dining) and per-hall slot configuration; single shared device.
  • Two roles: owner (rates, refund policy, users, reports) and manager (calendar, bookings, payments, receipts).
  • Booking lifecycle with holds, expiry sweeps, cancellation and slab-based refunds; numbered PDF receipts.
  • Payment ledger with cash/UPI-reference entries; dashboards, reminders and CSV exports; seeded demo season of 24 months.

Out of scope (v1)

  • A customer-facing app or website (enquiries are recorded by the desk from phone calls and walk-ins).
  • Online payment collection (UPI is recorded as a reference, not processed in-app).
  • Caterer/decorator vendor management beyond free-text vendor notes per booking.
  • SMS/WhatsApp confirmations and multi-branch (group-of-halls) support.

Methodology

The project follows an incremental SDLC with a fixed design front-end: the slot model and lifecycle are settled in design (weeks 3–4) because retrofitting a double-booking guarantee later is painful, while features ship in four fortnightly increments, each demoed to the guide.

PhaseWeeksActivitiesDeliverable
Requirements1–2Interview a mantapa manager, document the diary/register flow, list functional and non-functional requirementsSRS + synopsis
Design3–4Room schema (3NF), booking state diagram, slot-conflict rules, wireframesDesign document
Increment 15–6Halls, calendar, slot configuration, auth and rolesCalendar module
Increment 27–8Booking lifecycle, holds, transactional date guard, expiry sweepCore booking module
Increment 39–10Payment ledger, refund slabs, PDF receiptsLedger module
Increment 411–12Dashboards, reminders, reports, CSV export, seed dataReporting module
Testing & hardening13Unit, DAO and Espresso tests; concurrency and expiry trialsTest report
Documentation & demo14Final report, PPT, demo rehearsalSubmission

Testing approach: JUnit tests for the refund calculator, slot-overlap logic and receipt numbering; AndroidX instrumented tests for Room DAOs including the unique-index rejection; Espresso flows for the booking path; and a concurrency trial that fires two rapid bookings for the same muhurtham slot and asserts exactly one succeeds.

Architecture & tech stack

3 diagrams · 10 technologies · 2 min read

  • Java 17
  • Android SDK (minSdk 26)
  • Room (SQLite)
  • MVVM with ViewModel and LiveData
  • Jetpack Navigation
  • XML layouts with ViewBinding
  • Material Components (M3)
  • WorkManager (hold-expiry sweeps)
  • Android PdfDocument (receipts)
  • JUnit 4 + AndroidX Test + Espresso

The app is a single-device, offline-first Android application in strict MVVM, with the business rules living below the UI where they can be tested.

  1. UI layer: activities and fragments with XML layouts and ViewBinding; Material 3 components; Jetpack Navigation between calendar, booking, ledger and reports. Fragments observe LiveData and never touch the database.
  2. ViewModel layer: one ViewModel per screen holding UI state and invoking repository methods; survives rotation during a booking entry.
  3. Data layer: repositories wrap Room DAOs. The booking write runs inTransaction, re-checking slot availability and relying on the unique index on (hallId, eventDate, slot) as the final guarantee. A WorkManager periodic worker expires stale holds; an identical on-launch sweep makes expiry correct even if the worker was killed. Receipts render through PdfDocument from a per-financial-year counter table incremented inside the same transaction as the payment.
flowchart TD
  U["Owner / Manager"] --> F["Fragments: calendar, booking, ledger"]
  F -->|"actions"| VM["ViewModels (LiveData state)"]
  VM --> RP["Repositories + business rules"]
  RP --> TX["Booking transaction: availability check + unique index"]
  TX --> DB[("Room / SQLite")]
  RP --> WM["WorkManager: hold-expiry sweep"]
  RP --> PDF["PdfDocument receipt generator"]
  RP --> CSV["CSV report exporter"]

ER diagram

erDiagram
  USER ||--o{ BOOKING : manages
  CUSTOMER ||--o{ BOOKING : places
  HALL ||--o{ BOOKING : "is booked as"
  BOOKING ||--o{ PAYMENT : "is settled by"
  BOOKING ||--o{ CHECKLIST_ITEM : "tracks"
  USER ||--o{ PAYMENT : records

  USER {
    string id PK
    string name
    string role
    string passwordHash
  }
  HALL {
    string id PK
    string name
    int capacity
    boolean splitDayAllowed
    string status
  }
  CUSTOMER {
    string id PK
    string name
    string mobile
    string address
  }
  BOOKING {
    string id PK
    string hallId FK
    string customerId FK
    string eventDate
    string slot
    string status
    datetime holdExpiresAt
    decimal agreedAmount
  }
  PAYMENT {
    string id PK
    string bookingId FK
    string kind
    decimal amount
    string mode
    string receiptNo UK
    datetime paidAt
  }
  CHECKLIST_ITEM {
    string id PK
    string bookingId FK
    string label
    boolean done
  }

Booking state machine

flowchart LR
  E["Enquiry"] --> H["Date Hold"]
  H -->|"advance received"| A["Advance Paid"]
  H -->|"hold expiry"| X["Expired"]
  A --> C["Confirmed"]
  C --> D["Completed"]
  A -->|"cancelled"| K["Cancelled"]
  C -->|"cancelled"| K
  K --> RF["Refund per slab"]

The customer table deliberately holds only name, mobile and event details — no Aadhaar, PAN or identity uploads — so a lost backup exposes nothing.

Modules

6 modules

  1. Module 01

    Authentication & Roles

    Email/password login with bcrypt-hashed passwords stored in Room, plus a quick four-digit PIN for re-entry during a busy desk session. Two roles only: the owner configures halls, rates, the refund-slab table and users; the manager runs the calendar, bookings and ledger. Role checks happen in the repository layer, so navigation shortcuts cannot bypass them.

  2. Module 02

    Halls, Calendar & Slot Configuration

    Each hall carries capacity, base rate, amenities and whether split-day use is allowed. The calendar shows any month with dates colour-coded Free, Hold, Booked or Maintenance; tapping a date opens its slots (Full Day, Morning, Evening) and existing bookings. Maintenance blocks are owner-only entries that make a date unsellable without inventing a fake booking.

  3. Module 03

    Booking Lifecycle & the Double-Booking Guard

    A booking starts as an Enquiry (source, event type, expected guests), moves to Date Hold with an expiry timestamp, to Advance Paid when the first ledger entry arrives, Confirmed when the advance crosses the configured percentage, and Completed after the event. The hold-to-advance write runs inside a Room transaction that re-checks availability and hits the unique index on hall, date and slot — the second of two rapid bookings for the same muhurtham slot fails with a clear message instead of corrupting the calendar.

  4. Module 04

    Hold-Expiry Sweeps

    A periodic WorkManager worker expires holds whose deadline passed without an advance, and the same sweep runs idempotently at every app launch so a rebooted or rarely-synced device still shows a truthful calendar. Every expiry writes a ledger-note row, so the manager can see that a date freed itself and call the family before someone else does.

  5. Module 05

    Advance & Payment Ledger with Refund Slabs

    Every rupee is a ledger row: advance, part payment, balance settlement or refund, each with mode (cash or UPI reference), timestamp and sequential receipt number. Cancellation refunds are computed from the owner's slab table (for example 80% above 60 days, 50% at 30–60, none below 30), shown to the manager before confirmation, and recorded as their own receipt.

  6. Module 06

    Receipts, Dashboards & Reports

    Receipts render as A5 PDFs from Android's PdfDocument with the hall's name, booking summary and receipt number from a per-financial-year counter, ready to share or print. The dashboard lists holds expiring in 48 hours, pending balances and the next 30 days of events; monthly reports cover revenue per hall, occupancy percentage and enquiry-to-booking conversion, all exportable as CSV.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    MantapaBook — Marriage Hall Booking & Advance Tracking

  2. Slide 2

    Context: A Mantapa Front Desk

  3. Slide 3

    Problem Statement

  4. Slide 4

    Existing vs Proposed System

  5. Slide 5

    Objectives

  6. Slide 6

    Technology Stack and Why

  7. Slide 7

    Architecture (MVVM, Offline)

  8. Slide 8

    Data Model

  9. Slide 9

    Booking Lifecycle (Demo)

  10. Slide 10

    The Double-Booking Guard (Deep Dive)

  11. Slide 11

    Testing

  12. Slide 12

    Conclusion & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 16 answered free · 13 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Why a fully offline Room-based app instead of Firebase or a web portal?

    The hall's front desk is one or two staff with unreliable broadband, and every function — calendar, holds, ledger, receipts — is used only at the desk, so a local Room database gives instant response and zero recurring cost. Firebase is my planned extension for a customer-facing enquiry portal, but the desk workflow itself never needs the cloud, and offline means the viva demo cannot fail on Wi-Fi.

  2. 02Concept

    Explain MVVM as used in your app. Why not write database calls in the Activity?

    MVVM separates the screen (fragment), the state-holder (ViewModel) and the data (repository plus Room). The fragment observes LiveData and forwards actions; the ViewModel survives rotation so a booking half-typed is not lost; the repository holds the rules and the transaction. Database calls in the Activity would tie logic to a lifecycle that Android destroys and recreate, making it untestable and loss-prone.

  3. 03Concept

    Why is Android with Java the right choice for MC4204, and not Flutter or Kotlin?

    MC4204 teaches mobile application development on the Android platform, and Java remains the course's primary language, so the app demonstrates exactly that foundation — activities, fragments, Room, WorkManager — at project depth. I can argue the trade-off honestly: Kotlin and Flutter are excellent, but the syllabus alignment and Java's OOP emphasis make this the defensible choice for this slot.

+13 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

6 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

6 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

240 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

240 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

331 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

331 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

7 sources

  1. Android Developers — documentation, architecture guide and Jetpack
  2. Save data in a local database using Room — Android Developers
  3. Firebase Documentation (planned customer-portal extension)
  4. Material Design 3 — official design system guidance
  5. OWASP Mobile Top 10 (2024) — mobile application security risks
  6. Goods and Services Tax portal, Government of India (hall-rent taxability and receipt practice)
  7. Brian Hardy et al., Android Programming: The Big Nerd Ranch Guide, 6th ed., Pearson

Cite this bundle

OnlyProjects. (2026). Kalyana Mantapa (Marriage Hall) Booking and Advance Tracking App (Android/Java): MCA Mobile App Development project bundle [Educational resource]. https://onlyprojects.online/projects/mca-mobile-kalyana-mantapa-booking-app

Future scope

1 min read

  • A customer-facing enquiry portal (Firebase Auth + Firestore) so families request dates and the desk converts them into holds.
  • Online advance payments via UPI intent links with automatic ledger reconciliation.
  • SMS/WhatsApp confirmations for holds, receipts and event-day reminders.
  • Multi-hall groups with an owner console across branches and a shared enquiry pool.
  • Seasonal pricing and demand analytics — suggesting fair rates for high-demand muhurtham dates from enquiry history.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.