Featured Project 04 / Full-Stack / Hotel Operations
ROOM ATTENDANCE SYSTEM
React • TypeScript • Express • Prisma • SQLite • Socket.IO
Prototype / rules-based automation
Project insight
Overview
A hotel housekeeping operations prototype, not a classroom attendance system. It connects room status, attendant shifts, assignments, and lead-hand inspections.
Problem
Supervisors and attendants need a shared view of room progress, active shifts, inspection feedback, and daily records.
My Contribution
Built the React/TypeScript interface and Express API with Prisma persistence, Socket.IO change notifications, QR shift tokens, inspection workflows, and ExcelJS reports.

Main Technologies
- React 18
- TypeScript
- Vite
- Chakra UI
- TanStack Query
- Express 5
- Prisma 5
- SQLite
- Socket.IO
- ExcelJS
Key Technical Decisions
- Used TanStack Query for fetched state and invalidated queries on Socket.IO data:changed events.
- Kept hotel records in SQLite through Prisma and exposed operations through an Express API.
- Implemented rules and timers for shift workflows while retaining human inspection decisions.
Challenges and Solutions
- Keeping supervisor and attendant views aligned after room or shift changes.
- Emitted data:changed notifications so connected clients invalidate and refetch their queries.
- Returning inspection failures to attendants with actionable context.
- Connected pass/fail inspections and failure notes to the room workflow and attendant feedback view.
Outcome
The repository implements connected housekeeping workflows from room assignment and shift access through inspection feedback and Excel reporting.
Limitations / Verification Boundary
- Role-header authentication is incomplete and is not a production security boundary.
- RFID ingestion endpoints exist, but physical reader integration is not verified.
- Current automation uses rules and timers, not AI. Human-supervised AI assistance is a planned concept, not an implemented feature.
- The project is a prototype; production deployment and operational impact are not established by the source audit.









