Presencia
Presencia is a full-stack attendance and absence management system built for ESI-SBA, replacing manual paper-based attendance procedures with a digital solution. Teachers mark student attendance via QR code scanning or manual checklist, with real-time updates pushed instantly to the teacher's interface. Students track their absences, submit justifications, and receive alerts when approaching the institutional absence threshold. Registrar staff review submitted justifications, while admins manage the full academic structure — schedules, rooms, exams, and reports. Built as a third-year project at ESI-SBA by a team of six students.
Project Details
Overview
Presencia is a full-stack attendance and absence management system built for ESI-SBA, replacing manual paper-based attendance procedures with a digital solution. Teachers mark student attendance via QR code scanning or manual checklist, with real-time updates pushed instantly to the teacher's interface. Students track their absences, submit justifications, and receive alerts when approaching the institutional absence threshold. Registrar staff review submitted justifications, while admins manage the full academic structure — schedules, rooms, exams, and reports. Built as a third-year project at ESI-SBA by a team of six students.
Technologies Used
- Python
- Django
- Django REST Framework
- Django Channels
- PostgreSQL
- Redis
Key Features
- Dual Attendance Marking: Teachers can mark attendance either by generating a time-limited QR code that students scan via mobile, or through a manual checklist. At the end of the session, unscanned students are automatically marked absent.
- Real-Time QR Scan Updates: When a student scans the QR code, the teacher's interface updates instantly without any page refresh, showing the student's name and photo in real time.
- Absence Justification Workflow: Students submit justifications with supporting documents for their absences. Registrar staff review, approve, or reject them with a mandatory written reason.
- Threshold Alerts: The system automatically notifies students and registrar staff when a student's absence count crosses the institutional warning or suspension threshold.
Contribution
This project was developed by a team of six students — three on backend and three on frontend — as part of our third-year coursework at ESI-SBA. I was part of the backend team.
But what I'll remember more than the features is what happened around the code. I drew all the UML diagrams, wrote the full SRS document, ran sprints as Scrum Master, and reviewed backend pull requests to make sure nothing broke the architecture or the business logic. For the first time I wasn't just a developer — I was responsible for the whole picture.
Challenges & Solutions
- Understanding Client Needs: The first challenge was translating the client's requirements into something concrete and agreed upon. I solved this by drawing all the UML diagrams (use-case, class, sequence, ER, activity) and writing a full Software Requirements Specification (SRS) following Ian Sommerville's structure. The SRS acted as a contract between our team and the client, making sure everyone was aligned before writing a single line of code.
- Planning and Respecting Deadlines: Managing a team of six across a complex project risked missing deadlines without a clear structure. I solved this by breaking the project into sprints, defining tasks for each sprint, assigning them to developers, and running the team as Scrum Master. This kept the work predictable and the team focused.
- Real-Time Updates for Teacher: When a student scans the QR code, the teacher needed to see it instantly without refreshing the page. I solved this by implementing a WebSocket connection using Django Channels backed by a Redis channel layer. On a successful scan, the server broadcasts a student_present event to the teacher's channel group, delivering the student's name and photo in real time.
Lessons Learned
- Learned how to work directly with a client — gathering requirements, translating them into UML diagrams, and formalizing them into an SRS document.
- Gained practical experience with Agile/Scrum methodology — sprint planning, task assignment, and running a development team as Scrum Master.
- Deepened my knowledge of Django and Django REST Framework, building a modular backend with RBAC, JWT authentication, and a clean layered architecture.



















