UniDRL (University Discipline & Engagement Management System) is a frontend-only web application developed as an academic prototype to digitally manage student event participation, attendance tracking, and discipline point evaluation (ฤiแปm Rรจn Luyแปn).
The system replaces traditional paper-based workflows with a modern QR-codeโdriven process, improving transparency, efficiency, and traceability for both students and administrators.
โ ๏ธ Academic Disclaimer This project is developed strictly for educational purposes. It uses LocalStorage as a mock persistence layer and does not include a real backend system. It is not intended for production use without additional backend, authentication, and security mechanisms.
- Overview
- Features
- Tech Stack
- Project Structure
- Installation
- Usage Guide
- Architecture & Workflows
- LocalStorage Schema
- Troubleshooting
- Project Team
In many universities, student activity participation and discipline point evaluation (ฤiแปm Rรจn Luyแปn) are still handled manually using paper attendance sheets and post-event data entry. These approaches are inefficient, error-prone, and lack transparency for students.
- Time-consuming manual check-in processes
- Paper waste and poor data traceability
- Limited visibility for students regarding participation history
- High risk of errors or fraudulent attendance records
UniDRL digitizes the entire workflow using a QR-based event management model:
- Digital event registration and QR ticket generation
- Real-time QR-based check-in verification
- QR-based checkout combined with post-event evaluation
- Automated participation tracking and badge assignment
-
Students Register for events, use QR tickets, and track participation history (My Journey).
-
Admin (Unified Role) Manage events, participants, QR scanning, badge rules, and reports.
โน๏ธ Note on role design: At the current development stage, roles such as Advisor and Manager are not separated. All administrative responsibilities are grouped under a single Admin role. This design choice simplifies implementation for an academic prototype. Role-based authorization is planned for future expansion.
- User authentication (Login / Signup)
- Browse and search available events
- One-click event registration
- Automatic QR ticket generation (
StudentID_EventID) - QR-based event check-in
- QR-based event checkout
- Post-event Q&A evaluation
- Badge system (Bronze / Silver / Gold)
- Participation history tracking (My Journey)
- Personal profile management
- Create, update, and close events
- Participant list management
- QR-based check-in via camera scanner
- Time-limited checkout QR generation
- Badge rule and Q&A configuration
- Attendance statistics and report export
| Category | Technologies |
|---|---|
| Core | HTML5, CSS3, JavaScript (ES6 Modules) |
| Styling | Tailwind CSS (Utility-first) |
| Architecture | Component-based, Service-oriented |
| Persistence | LocalStorage (Mock Database) |
| Libraries | html5-qrcode, Google Fonts |
| Tools | VS Code, Live Server, Git |
UniDRL/
โโโ admin/ # Admin-facing pages
โ โโโ badge-system.html # Configure gamification badges
โ โโโ check-in-management.html # QR Scanner for checking students in
โ โโโ participants-management.html # List and manage attendees
โ โโโ report.html # Data visualization and CSV export
โโโ assets/ # Static assets (images, icons, etc.)
โโโ css/ # Global styles
โ โโโ style.css # Custom overrides and base styles
โโโ js/ # Application source code
โ โโโ components/ # Reusable UI components (header, footer, cards)
โ โโโ config/ # App constants (roles, storage keys)
โ โโโ data/ # Mock data (initial seed for events)
โ โโโ guards/ # Auth guards (redirect if not logged in)
โ โโโ libs/ # Adapters for third-party libs
โ โโโ managers/ # Feature-specific logic managers
โ โโโ pages/ # Scripts specific to HTML pages
โ โโโ services/ # Business logic (Auth, Event, Badge services)
โ โโโ utils/ # Helpers (DateTime, Storage wrapper)
โโโ student/ # Student-facing pages
โ โโโ my-event.html # List of registered events
โ โโโ my-journey.html # History timeline
โ โโโ profile.html # User profile settings
โโโ event-detail.html # Individual event view
โโโ home.html # Main dashboard
โโโ index.html # Landing page
โโโ login.html # Sign in page
โโโ signup.html # Sign up page
โโโ package.json # Project dependencies and scripts
โโโ pnpm-lock.yaml # Dependency lock file
โโโ postcss.config.js # PostCSS configuration
โโโ tailwind.config.js # Tailwind CSS configuration- Modern browser (Chrome, Edge, Firefox)
- Visual Studio Code
- Live Server extension (recommended)
-
Clone the repository:
git clone https://github.com/trvanluc/UniDRL.git cd UniDRL -
Open the project in Visual Studio Code.
-
Right-click
index.htmlโ Open with Live Server. -
Access the application in your browser:
http://127.0.0.1:5500/index.html
โ ๏ธ Important: Running via a local server is required due to ES6 Module restrictions. Opening HTML files directly will cause module loading errors.
- Register and log in to the system
- Browse available events
- Register for an event to receive a QR ticket
- Present the QR code for event check-in
- Scan the Adminโs checkout QR at event end
- Complete the post-event Q&A evaluation
- Receive a badge and updated participation history
- Create and manage events
- Scan student QR codes for check-in
- Generate checkout QR codes with configurable time limits
- View attendance statistics and export reports
graph TD
UI[HTML Pages] --> Components
Components --> Pages
Pages --> Guards
Guards --> Services
Services --> Utils
Utils --> Storage[(LocalStorage)]
sequenceDiagram
participant Student
participant Admin
participant System
Student->>System: Register Event
Student->>Admin: Present QR Ticket
Admin->>System: Scan QR Code
System->>System: Validate Ticket
alt Valid
System-->>Admin: Success
else Invalid
System-->>Admin: Error
end
โน๏ธ Note for academic submission: Mermaid diagrams are optional. If not supported, they still demonstrate architectural understanding.
| Key | Type | Description |
|---|---|---|
UNIDRL_USERS |
Array<User> |
Stores all registered user accounts, including students and administrators |
UNIDRL_EVENTS |
Array<Event> |
Contains metadata of all events in the system |
UNIDRL_REGISTRATIONS |
Array<Registration> |
Maintains the mapping between students and their registered events |
UNIDRL_CURRENT_USER |
User | null |
Holds session data of the currently authenticated user |
UNIDRL_BADGE_CONFIG |
Object<EventId, BadgeConfig> |
Defines badge rules and post-event Q&A evaluation criteria per event |
Ensure the application runs on localhost or HTTPS. Browsers block camera access on insecure origins.
Do not open HTML files directly. Always use Live Server or another local HTTP server.
Check internet connection. Tailwind CSS is loaded via CDN.
Group 3 UniDRL Development Team
Course: Web Development
Institution: Vietnam-UK Institute for Research and Executive Education
| No. | Full Name | Student ID | Key Responsibilities |
|---|---|---|---|
| 1 | Nguyen Vu Hoang Long | 23090026 | System architecture & authentication: designed the overall project structure, prepared technical documentation, developed authentication services, route guards, and shared UI components (dialogs, toast notifications), Design UI and core logic. |
| 2 | Tran Van Nhan | 23090036 | QR core & check-in module: integrated QR code scanning, implemented check-in management logic, generated checkout QR codes, rendered QR tickets, handled camera access and permissions, and implemented badge and participation journey display logic. |
| 3 | Tran Van Luc | 23090019 | Student portal: developed the student dashboard, managed user profile features, and integrated technical requirements requested by the lecturer (Vite build optimization and Google Analytics). |
| 4 | Huynh Huu Nhu Man | 23090020 | Admin dashboard: implemented event CRUD operations, participant management features, modal manager, and designed the overall UI styling and theme system. |
All team members collaborated on system design, implementation, testing, and documentation of this academic prototype.