Skip to content
OnlyProjects
BCA · Cloud ComputingFor educational purposes only
Code included

Dockerised Coaching-Centre Fee & Attendance App with a Backup/DR Study (Python/Flask + MySQL)

One small app, two containers, a tested restore drill — operations discipline for a real tuition business

Mapped to your syllabusIGNOU BCA (revised) — BCSP-064 guidelines · BCSP-064 Project · Semester 6

Overview

1 min read

Dockerised Coaching-Centre Fee & Attendance App is a small but complete web application built for a typical Indian tuition/coaching centre (about 300–400 students across morning and evening batches), and it is deployed the way modern small services are deployed: as Docker containers with a written, tested backup and restore (DR) runbook.

The business side of the app is deliberately beginner-sized. The owner/admin manages batches, students and fee instalments and issues receipts; teachers mark batch attendance in a few taps; the dashboard shows today's collections, absentees and upcoming instalments. Security is a first-class section (hashed passwords, parameterised SQL, session handling) rather than an afterthought.

The cloud/operations side is what makes this project different from an ordinary CRUD project. The entire stack — Flask application, MySQL database and an Nginx reverse proxy — runs from one docker-compose.yml, so the system can be rebuilt on any machine in minutes. A backup service runs mysqldump on a schedule, and the project documents and actually executes a disaster-recovery drill: delete the database volume, rebuild the containers, restore from the latest dump and measure the recovery time against the stated RTO. A short study compares two deployment options (a local mini-PC versus a free-tier cloud VM) on cost, restart behaviour and backup safety.

For an IGNOU BCSP-064 project this gives you a level-2 DFD, a security section and a measured experiment — without needing any paid cloud account.

Relevant for
All India
Level
Beginner · 14 weeks · solo
Common at
Indira Gandhi National Open University, Bengaluru City University, Guru Gobind Singh Indraprastha University
Updated
Nov 2026

Syllabus alignment

IGNOU · BCA (revised) — BCSP-064 guidelines

BCSP-064 · Project · Semester 6 · 8 credits · 200 = report 150 + viva 50 (≥40% each)

Subjects this project applies
  • BCS-032 Internet Concepts and Web Design
  • Server-side web programming (Python / Flask)
  • Database Management Systems with MySQL
  • Operating systems, networking and Linux shell scripting
How it is evaluated

Team: individual only

synopsis with DFD (≥ level 2), ER/class diagrams; 50–80-page hardbound report (±10%); test cases; security section. Prohibited: C/C++ for DB projects, VB + MS-Access, dBase/FoxPro. Plagiarism → Exam Discipline Committee

Also fits: BCU SEP 2024, GGSIPU 4-year BCA 2024.

What's in the box

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

Problem & synopsis

5 min read

Problem statement

Coaching centres collect term fees in instalments and take attendance twice daily, yet most still track this on paper and a single spreadsheet. The spreadsheet has no backup, sits on one laptop shared with the family, and nobody knows how to rebuild the records if the disk dies. Requests like "which students have unpaid instalments?" or "was Rahul's second instalment paid in June?" take manual searching, and disputes are settled from memory. Attendance compilation for fee-blocking defaulters is done by hand every month.

The organisation needs a small, secure web application that records students, batches, instalments and attendance in one database, produces receipts and defaulter lists instantly — and, just as importantly, an operations plan that makes the data survive failure: containerised deployment that can be rebuilt anywhere, scheduled backups, and a disaster-recovery procedure that has actually been rehearsed and timed rather than merely written about.

Synopsis

Abstract

Small coaching centres in India run almost entirely on paper and spreadsheets: fee instalments are tracked in a diary, attendance in a register, and receipts are handwritten. Worse, whatever digital records do exist usually live on one office laptop with no backup — a disk failure can wipe out months of fee history. This project builds a small fee and attendance web application for such a centre and treats it as a real deployment problem: the application runs in Docker containers, backups run automatically, and a documented disaster-recovery procedure is tested end to end, with recovery time actually measured.

Introduction

The fictional organisation for this study, Ashirwad Career Academy, teaches about 350 school students in four batches. The owner collects fees in three instalments per term, teachers take attendance twice daily, and records live in a paper register plus an Excel sheet on a single laptop. The project replaces this with a Flask + MySQL web application with two roles, and then packages and operates it like a small production service.

Existing System

  • Fee instalments and dues are written in a diary; receipts are handwritten carbon copies.
  • Attendance is on paper; compiling a monthly defaulters list takes an evening of manual counting.
  • The Excel sheet exists on one laptop only; there is no backup schedule, no off-device copy and no documented recovery procedure.
  • Limitations: single point of failure, no audit trail, disputes about paid instalments, and heavy manual work at term boundaries.

Proposed System

  • A web application with batches, students, instalment plans, receipt recording and batch attendance, on a normalised MySQL schema.
  • Containerised deployment: the Flask app, MySQL and Nginx run as three containers defined in one Docker Compose file, so the whole system is reproducible from a clean machine.
  • Automated backups: a scheduled mysqldump job writes timestamped dumps to a mounted backup volume, with retention of the last 14 dumps.
  • Tested DR runbook: a written procedure with a stated RPO (24 hours — one backup cycle) and RTO (30 minutes), executed once as a drill: destroy the database container and volume, rebuild, restore, verify counts and record the measured recovery time.
  • Deployment study: a short comparison of hosting the stack on a spare mini-PC versus a free-tier cloud VM (cost, restart behaviour after power cuts, backup exposure), with screenshots and measurements.

Feasibility Study

  • Technical: Python/Flask and MySQL are covered in the IGNOU BCA curriculum; Docker Desktop runs on the student's own laptop, so nothing depends on a paid or internet-only service. Every command used is documented in the report.
  • Economic: the entire stack runs on free software. The cloud-VM option in the study uses a free-tier machine; the mini-PC option reuses existing hardware. Total cost ₹0.
  • Operational: two simple roles (Admin, Teacher) with a form-based interface; the owner needs one 30-minute walkthrough, teachers need none. The backup/restore runbook is a one-page checklist the office can follow unaided.

Objectives

  1. 01Design a normalised (3NF) MySQL schema for batches, students, guardians, instalment plans, receipts, payments and attendance.
  2. 02Build a role-based Flask application (Admin and Teacher) with hashed passwords, session handling and parameterised SQL throughout.
  3. 03Automate batch attendance marking and produce defaulter, collection and receipt reports without manual compilation.
  4. 04Containerise the full stack — app, MySQL and Nginx reverse proxy — in a single Docker Compose definition that starts from scratch on a clean machine.
  5. 05Implement scheduled mysqldump backups with a 14-dump retention policy and a documented restore procedure.
  6. 06Execute and time a full disaster-recovery drill (volume destroyed → rebuilt → restored) and report measured RTO against the stated target.
  7. 07Compare local mini-PC and free-tier cloud-VM deployment on cost, restart behaviour and backup safety, with evidence.
  8. 08Document a dedicated security section covering authentication, input validation, transport and backup protection.

Scope

In scope

  • One coaching centre, four batches, up to ~500 students; two roles (Admin, Teacher).
  • Student and guardian registry (contact numbers only — the design stores no government ID numbers), batch and subject mapping, instalment plans per student.
  • Receipt recording (cash/UPI reference number), dues and defaulter reports, printable receipt view.
  • Batch-wise attendance marking with a monthly summary; attendance-linked defaulters view.
  • Docker Compose deployment of app + MySQL + Nginx, scheduled backups, DR runbook, one executed restore drill with measurements.
  • Comparison study of two deployment options with a cost/reliability table.

Out of scope (v1)

  • Online payment gateway integration (payments are recorded with a reference number).
  • SMS/WhatsApp notifications to guardians.
  • Multi-branch or multi-tenant support; mobile apps (the web UI is responsive instead).
  • Production-grade monitoring stacks (Prometheus/Grafana) — a simple health endpoint and log review are used instead.

Methodology

The project follows the incremental SDLC model, chosen because a working system must exist early and each operations experiment (containerisation, backup, restore drill) needs the previous increment to be stable. Every increment was analysed, designed, built and tested before the next began, which suits an individual project stretched across the BCSP-064 semester.

PhaseWeeksActivitiesDeliverable
Requirement analysis1–2Visit the coaching centre, study the register and Excel workflow, list functional and non-functional requirementsSRS with use cases
Design3–4ER diagram, DFD level 0/1/2, schema design, wireframes, backup/DR plan (RPO/RTO targets)Design document
Increment 15–7Schema, authentication, roles, student/batch registry, instalment plansRegistry module
Increment 28–9Attendance marking, receipts, dues and defaulter reportsFee & attendance modules
Increment 310–11Dockerfile, docker-compose.yml, Nginx config, environment handlingContainerised stack
Increment 412Backup script, scheduled backup service, retention cleanupBackup service
DR drill & study13Execute restore drill with timing, run the two-deployment comparison, record resultsDR report with measurements
Testing & documentation14pytest unit tests, black-box test cases, final report and viva preparationSubmission package

Testing approach: unit tests for fee arithmetic (instalment totals, dues), transaction handling and authentication helpers using pytest; black-box test cases for every screen recorded in a test-case table; the DR drill itself is a repeatable test with an expected outcome (record counts match, measured recovery ≤ 30 minutes).

Architecture & tech stack

5 diagrams · 8 technologies · 3 min read

  • Python
  • Flask
  • MySQL
  • Docker
  • Docker Compose
  • Nginx
  • Jinja2
  • pytest

The system uses a three-tier architecture packaged as three containers. The presentation tier is server-rendered Jinja2 templates with minimal vanilla JavaScript. The application tier is a Flask app exposing page routes and a JSON health endpoint; all business rules (instalment calculations, dues, role checks) live in a service layer. The data tier is MySQL 8 with the database files on a named Docker volume. Nginx terminates HTTP traffic in front of the app and serves static files, so the Flask dev server is never exposed.

flowchart TD
  B[Browser: Admin / Teacher] -->|HTTP| N[Nginx reverse proxy]
  N --> A[Flask app container]
  A --> S[Service layer and role checks]
  S --> P[Parameterised SQL]
  P --> DB[(MySQL 8 container)]
  DB --- V[(mysql-data volume)]
  CR[cron backup job container] -->|mysqldump| DB
  CR --- BV[(backups volume)]
  A --> H[/health endpoint/]

ER diagram

erDiagram
  USER ||--o{ RECEIPT : records
  BATCH ||--o{ STUDENT : contains
  STUDENT ||--o{ INSTALMENT : "is billed"
  INSTALMENT ||--o{ PAYMENT : "is settled by"
  BATCH ||--o{ SESSION : schedules
  SESSION ||--o{ ATTENDANCE : "is marked in"
  STUDENT ||--o{ ATTENDANCE : belongs
  USER ||--o{ BACKUP_LOG : triggers

  USER {
    int id PK
    string username UK
    string passwordHash
    string role
  }
  BATCH {
    int id PK
    string name
    string subject
    string timing
  }
  STUDENT {
    int id PK
    int batchId FK
    string name
    string guardianPhone
    string status
  }
  INSTALMENT {
    int id PK
    int studentId FK
    decimal amount
    date dueDate
    string status
  }
  PAYMENT {
    int id PK
    int instalmentId FK
    decimal amount
    string reference
    date paidOn
  }
  SESSION {
    int id PK
    int batchId FK
    date sessionDate
  }
  ATTENDANCE {
    int id PK
    int sessionId FK
    int studentId FK
    string status
  }
  BACKUP_LOG {
    int id PK
    datetime startedAt
    string fileName
    string result
  }

DFD — Level 0 (context diagram)

flowchart LR
  AD([Admin]) -- students, plans, payments --> SYS((Coaching Centre<br/>Fee and Attendance System))
  SYS -- dues, defaulter and collection reports --> AD
  T([Teacher]) -- attendance --> SYS
  SYS -- batch attendance summary --> T
  BK([Backup job]) -- scheduled dump request --> SYS
  SYS -- dump files --> BK

DFD — Level 1

flowchart TD
  AD([Admin]) --> P1[1.0 Authenticate]
  T([Teacher]) --> P1
  P1 <--> D1[(D1 Users)]
  AD --> P2[2.0 Manage students and plans]
  P2 <--> D2[(D2 Students and Batches)]
  T --> P3[3.0 Mark attendance]
  P3 <--> D3[(D3 Sessions and Attendance)]
  AD --> P4[4.0 Record fees]
  P4 <--> D4[(D4 Instalments and Payments)]
  AD --> P5[5.0 Generate reports]
  P5 <--> D4
  P5 <--> D3
  P6[6.0 Run scheduled backup] --> D5[(D5 Backup Log)]
  P6 -- dump file --> BV[(Backup volume)]

DFD — Level 2 (process 4.0 exploded — required by the BCSP-064 synopsis format)

flowchart TD
  AD([Admin]) --> P41[4.1 Validate instalment request]
  P41 --> P42[4.2 Check dues status]
  P42 <--> D4[(D4 Instalments)]
  P42 --> P43{Fully paid?}
  P43 -->|yes| P44[4.4 Reject and show message]
  P43 -->|no| P45[4.3 Record payment and update status]
  P45 --> D4
  P45 --> D6[(D6 Receipts)]
  P45 -- receipt data --> R([Receipt view])

Every external entity, store and flow shown here appears in the report in the same order the viva asks for them: context first, then the level-1 decomposition, then the level-2 explosion of the fee-recording process.

Modules

7 modules

  1. Module 01

    Authentication & Roles

    Username/password login with Werkzeug password hashing and signed Flask session cookies. A before_request hook checks the role on every protected route, so teachers cannot reach admin screens and every failed attempt is logged. Passwords are never stored or printed in plain text.

  2. Module 02

    Student & Batch Registry

    Admin creates batches (subject, timing) and enrolls students with guardian phone numbers, admission date and instalment plan. The design deliberately stores no government ID numbers. Students can be moved between batches and marked inactive with full history retained.

  3. Module 03

    Attendance Marking

    A session is generated for each batch meeting; the teacher marks Present/Absent in one grid per session. Monthly summaries compute each student's percentage, and students below a configurable threshold appear in the defaulters view alongside their dues.

  4. Module 04

    Fees & Receipts

    Each student's plan creates instalment rows with due dates. Payments are recorded with amount, mode and a UPI/cash reference; the instalment status moves to Paid or Partial automatically. A printable receipt view and a term-wise collection report replace the handwritten carbon book.

  5. Module 05

    Backup Service

    A cron-based container runs mysqldump nightly against the MySQL container, writes timestamped .sql dumps to a dedicated backups volume and prunes dumps older than 14 copies. Every run appends a row to BACKUP_LOG (started at, file name, result) which the admin dashboard surfaces as last successful backup.

  6. Module 06

    Restore & DR Runbook

    A one-page documented procedure: docker compose down, remove the mysql-data volume, compose up, wait for MySQL health, pipe the latest dump into the restored server, then verify row counts and login. The drill was executed and timed — the report records the measured RTO against the 30-minute target and the RPO of 24 hours.

  7. Module 07

    Dashboard & Reports

    The admin dashboard shows today's collections, pending instalments in the next 7 days, batch-wise attendance for the month and the last backup status. Reports open as filtered tables that print cleanly for the office file.

Slides

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

  1. Slide 1

    Dockerised Coaching-Centre Fee & Attendance App

  2. Slide 2

    Organisation & Problem

  3. Slide 3

    Objectives

  4. Slide 4

    Technology Stack

  5. Slide 5

    System Architecture

  6. Slide 6

    Database Design

  7. Slide 7

    DFD Level 0 → 1 → 2

  8. Slide 8

    Application Modules

  9. Slide 9

    Containerised Deployment

  10. Slide 10

    Backup & Disaster Recovery Drill

  11. Slide 11

    Deployment Comparison Study

  12. Slide 12

    Security Section

  13. Slide 13

    Testing

  14. Slide 14

    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

    What is a container, and how is it different from a virtual machine?

    A container packages an application with its libraries and runs as an isolated process on the host operating system, sharing the OS kernel, so it starts in seconds and uses far less memory. A virtual machine virtualises the hardware and runs a full guest operating system, which is heavier. In this project the Flask app, MySQL and Nginx each run as a container on one host, whereas a VM approach would need three full operating systems.

  2. 02Concept

    Define RPO and RTO. What values did you set for this project and why?

    RPO, the recovery point objective, is the maximum amount of data loss measured in time that the organisation can accept; RTO, the recovery time objective, is how quickly service must return after a failure. I set an RPO of 24 hours because backups run nightly and the centre can tolerate losing at most one day of receipts, and an RTO of 30 minutes because the centre can work from a paper receipt book for half an hour but not for a whole day.

  3. 03Concept

    Why did you choose MySQL over MongoDB for this application?

    The data is highly relational and consistent by nature: instalments, payments, attendance sessions and students reference each other with foreign keys, and fee records must obey constraints such as payment amount not exceeding dues. MySQL provides ACID transactions, foreign keys and joins which fit this domain, while MongoDB would leave enforcing those relationships to application code, which is riskier for financial records.

+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

7 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

7 steps · source code zip

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

Unlock for ₹2,000

READMEFIRST

285 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

285 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

409 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

409 words · ~2 min read

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

Unlock for ₹2,000

References

9 sources

  1. IGNOU BCSP-064 Project Guidelines (official PDF, July 2023–Jan 2024 session)
  2. Flask Documentation — Quickstart
  3. Flask Documentation — Deploying to Production
  4. Docker Compose Documentation
  5. MySQL 8.0 Reference Manual — mysqldump: A Database Backup Program
  6. OWASP Top 10 — Web Application Security Risks
  7. OWASP SQL Injection Prevention Cheat Sheet
  8. Ian Sommerville, Software Engineering, 10th ed., Pearson
  9. Ramez Elmasri & Shamkant B. Navathe, Fundamentals of Database Systems, 7th ed., Pearson

Cite this bundle

OnlyProjects. (2026). Dockerised Coaching-Centre Fee & Attendance App with a Backup/DR Study (Python/Flask + MySQL): BCA Cloud Computing project bundle [Educational resource]. https://onlyprojects.online/projects/bca-cloud-coaching-centre-docker-backup-dr

Future scope

1 min read

  • Automated restore verification: a monthly job that restores the latest dump into a scratch database and reports row-count mismatches, so backups are proven good, not assumed good.
  • Off-site backup copy: push an encrypted dump to cloud object storage (free tier) so a laptop theft does not destroy both original and backup.
  • Guardian notifications over SMS/WhatsApp for absence and upcoming instalments.
  • Online payments via UPI deep links with automatic receipt reconciliation.
  • Prometheus + Grafana monitoring of the health endpoint and backup job, with alerting on a missed backup window.
  • Multi-branch support and a role for franchise owners with consolidated dashboards.

Keep browsing

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

BCACode included

Web Development

Smart Hostel Management System

Room allocation, complaints and mess billing without the register

  • Next.js
  • TypeScript
  • Node.js
  • +3

intermediate8 wk2 students