How trianglebear/ev_ap works
Ev_Ap is a desktop RFID event-attendance application. Users register members, create events, select an event, scan RFID cards to record attendance, and review or export attendance data. MainApp wires the views, managers, and database facade; the facade selects local SQLite or the Google Sheets API backend. The README also documents points, settings-based backend switching, and CSV/Excel export. Unexcerpted modules are included where README or SOURCE INDEX establishes their role; links to unsampled behavior are omitted unless documented.
Main entry points: rfid_app.py Application shell · dblite.py Database facade · home_view.py Dashboard · settings_view.py Database settings
Components 19
Desktop UI
- App entry
App/main.py - Application shell
App/rfid_app.py - Dashboard
App/views/home_view.py - Theme manager
App/theme/theme_manager.py - Members view
App/views/members_view.py - Events view
App/views/events_view.py - Help view
App/views/help_view.py - About view
App/views/about_view.py
Attendance Workflows
- Member registration
App/managers/member_manager.py - Event creation
App/managers/event_manager.py - Attendance scanning
App/managers/table_manager.py
Persistence
- Database facade
App/database/dblite.py - Backend configuration
App/database/config.py - SQLite backend
App/database/sqlite_db.py - Sheets API client
App/database/sheet_db.py
Reports And Settings
- Reports and export
App/views/reports_view.py - Database settings
App/views/settings_view.py
Other components
- Operator
- Google Sheets service
Connections 27
- Operator → App entry: launches
App/main.py - App entry → Application shell: starts
App/main.py - Application shell → Database facade: initializes
App/rfid_app.py - Application shell → Theme manager: creates
App/rfid_app.py - Application shell → Dashboard: loads
App/rfid_app.py - Application shell → Members view: loads
App/rfid_app.py - Application shell → Events view: loads
App/rfid_app.py - Application shell → Reports and export: loads
App/rfid_app.py - Application shell → Database settings: loads
App/rfid_app.py - Application shell → Help view: loads
App/rfid_app.py - Application shell → About view: loads
App/rfid_app.py - Dashboard → Member registration: opens registration
App/views/home_view.py - Dashboard → Event creation: opens creation
App/views/home_view.py - Dashboard → Attendance scanning: opens selected event
App/views/home_view.py - Members view → Member registration: opens registration
App/views/members_view.py - Member registration → Database facade: registers member
App/managers/member_manager.py - Event creation → Database facade: creates event
App/managers/event_manager.py - Attendance scanning → Database facade: reads and records attendance
App/managers/table_manager.py - Attendance scanning → Member registration: checks scan cache
App/managers/table_manager.py - Reports and export → Database facade: fetches report data
App/views/reports_view.py - Database settings → Database facade: switches backend
App/views/settings_view.py - Database facade → Backend configuration: reads mode and URL
App/database/dblite.py - Database facade → SQLite backend: delegates local storage
App/database/dblite.py - Database facade → Sheets API client: delegates cloud storage
App/database/dblite.py - Sheets API client → Google Sheets service: sends API requests
App/database/sheet_db.py - Database settings → Backend configuration: saves backend settings
App/views/settings_view.py - Database settings → Sheets API client: tests connection
App/views/settings_view.py