Time Stack is a Flutter-based event staff management application designed for timekeeping and staff check-in/check-out functionality. Optimized for both tablets and mobile devices with robust offline support and responsive design.
App Launch
↓
Splash Screen (Firebase auth, locale setup)
↓
[Firebase auth success?]
├─ Yes → [Team stored?]
│ ├─ Yes → Login Screen
│ └─ No → Team Selection → Login Screen
└─ No → Team Selection → Login Screen
↓
Login (Username/Password)
↓
Authenticate & Verify User
↓
Load Event Data
↓
Event Selection
↓
Load Event Staff & Schedule
↓
Enable Wake Lock
↓
Timecard Screen (Main Interface)
Purpose: Team/organization selection
Features:
Responsive Layout:
Purpose: User authentication
Features:
Loading Sequence:
Purpose: Event/location selection
Features:
Data Loading:
Purpose: Primary staff check-in/check-out interface
Tablet Layout (Landscape):
Mobile Layout (Portrait):
Large Visual Buttons:
Today's Schedule:
QR Code Integration:
Timecard Screen Display
↓
User Action (Tap IN or OUT button)
↓
Show QR Scanner
↓
Scan Staff QR Code
↓
Validate Staff Token
↓
[Check-in or Check-out?]
├─ Check-in:
│ └─ [Already checked in?]
│ ├─ No → Record check-in → Show welcome message
│ └─ Yes → Show "already checked in" error
└─ Check-out:
└─ [Currently checked in?]
├─ Yes → Record check-out → Show goodbye message
└─ No → Show "not checked in" error
↓
Return to Main Interface
Purpose: Staff label printing and management
Tablet Layout:
Mobile Layout:
Participant Panel:
Staff Management Panel:
Printing Integration:
Purpose: Administrative configuration
Access: Hidden gesture-based access from timecard screen
1. User Panel:
2. General Panel:
3. Printer Panel:
4. Staff Panel:
Wide Screen (>700px):
Mobile:
Format:
Validation Flow:
Scan QR Code
↓
Parse Token
↓
Validate Format
↓
Check Staff Exists
↓
Verify Event Assignment
↓
Check Current Status (IN/OUT)
↓
Process Check-in/Check-out
Display Components:
Real-time Updates:
Label Content:
Printer Support:
Printing Workflow:
Gesture-Based Entry:
Security:
Cached Data:
Offline Operations:
Automatic Sync:
Manual Sync:
Purpose: Prevent screen sleep during operation
Implementation:
Supported Languages:
Localized Elements:
✅ Use dedicated tablets at check-in stations
✅ Position at eye level for easy QR scanning
✅ Keep devices charged throughout event
✅ Configure wake-lock to prevent sleep
✅ Test QR scanner before event starts
✅ Train staff on QR code positioning
✅ Ensure adequate lighting for scanning
✅ Monitor check-in status regularly
✅ Sync timecard data during breaks
✅ Print staff labels in advance
✅ Restart app if QR scanner unresponsive
✅ Verify network for sync issues
✅ Check printer connection before printing
✅ Clear cache if performance degrades
git clone git@git.trainspot.jp:trainspot/time-stack-app.git
cd time-stack-app
flutter pub get
TEAM_NAME=trainspot
FIREBASE_PROJECT_ID=time-stack-prod
GRAPHQL_ENDPOINT=https://api.eventstacks.io/graphql
ENVIRONMENT=production
# Development
flutter run
# Release (Android)
flutter build apk --release
# Release (iOS)
flutter build ipa --release
QR Scanner Not Working:
Check-in Fails:
Printer Not Found:
Schedule Not Loading:
Issues: time-stack-app/issues
Slack: #time-stack-support
Email: dev@trainspot.jp
Last Updated: October 2025
App Version: 2.0
Maintained By: Mobile Development Team