POS Stack is a comprehensive Flutter-based Point of Sale (POS) application designed for event-based retail operations. It combines product management, multiple payment methods, cart operations, and receipt printing into a streamlined mobile/tablet interface.
- Product Catalog: Organized categories with search functionality
- Shopping Cart: Real-time cart management with product notes
- Multiple Payment Methods: Cash, Credit Card, QR Code payments
- Receipt Printing: Thermal printer integration
- Offline Support: Full transaction capability without internet
- Age Verification: Automatic verification for restricted products
- Responsive Design: Optimized for tablets and mobile devices
Splash Screen
↓
[Team saved?] → No → Team Screen
↓ ↓
Yes Enter team name → Validate
↓ ↓
Login Screen ←────┘
(Username/Password + QR Login)
↓
Event Selection
↓
POS Selection
↓
[POA exists?] → Yes → Point of Access Screen (Multi-select)
↓ ↓
No Set offline mode
↓ ↓
Main Screen (3 tabs: Checkout, Orders, Settings)
¶ Main Screen - Tab Navigation
Product Selection:
- Product grid with category filters
- Search functionality
- QR code scanner for quick product lookup
- Product images and pricing
- Stock availability indicators
Cart Management:
- Add/remove products
- Quantity adjustment
- Product notes (special instructions)
- Cart total calculation
- Discount application (if enabled)
Actions:
- Proceed to Payment
- Clear cart
- Save cart (for later)
Transaction History:
- List of all transactions
- Date/time filtering
- Status indicators (completed, pending, cancelled)
- Transaction search
Order Details:
- View transaction details
- Receipt preview
- Reprint receipt option
- Customer information
Sync Management:
- Sync pending transactions
- View sync status
- Retry failed syncs
5 Configuration Panels:
- User profile information
- Current session details
- Event/POS assignment
- Logout options
- Language selection
- Display preferences
- App behavior settings
- Default configurations
- Receipt template customization
- Logo configuration
- Footer text
- Print layout options
- Payment method configuration
- Coiney card reader setup
- QR payment provider settings
- Cash drawer management
¶ Maintenance Panel
- Database cleanup
- Cache management
- Sync diagnostics
- Debug information
Payment Methods:
- Amount tendered input
- Automatic change calculation
- Cash drawer prompt
- Receipt printing
- Coiney integration
- Card reader connection
- Transaction processing
- Receipt with card details
Supported Providers:
- SBPS: Japanese QR payment gateway
- PokePay: Digital wallet integration
- PayPay: Popular Japanese payment app
QR Payment Flow:
Select QR Payment
↓
Choose Provider (SBPS/PokePay/PayPay)
↓
Generate QR Code
↓
Customer Scans QR
↓
Payment Confirmation
↓
Receipt Generation
Automatic Triggers:
- Alcohol products
- Tobacco products
- Age-restricted items
Verification Process:
- System detects restricted product in cart
- Age verification prompt appears
- Staff confirms customer age
- Transaction proceeds or cancelled
Collect customer information for analytics:
- Age range
- Gender
- Nationality
- Visit frequency
Transaction Completion:
- Transaction summary display
- Digital receipt generation
- Print receipt option
- Transaction ID
Administrative Actions (Admin only):
- Transaction cancellation via QR scan
- Refund processing
- Receipt regeneration
Return to Checkout:
- Cart automatically cleared
- Ready for next transaction
Enabled at Point of Access (POA) screen during initial setup.
Local Storage:
- Complete product catalog
- Product images and pricing
- Transaction queue
- Customer data cache
Offline Operations:
- Full POS functionality
- Transaction recording
- Receipt printing
- Cart management
Sync Queue:
- Automatic sync when online
- Manual sync trigger
- Conflict resolution
- Sync status monitoring
- Hierarchical category structure
- Category filtering
- Category-based navigation
- Visual category icons
- Name and description
- Price (with currency support)
- Product images
- Stock levels
- Age restrictions
- Notes and variants
- Text search across products
- QR code scanning for products
- Barcode scanner support
- Recent products list
- Event branding and logo
- Transaction details
- Product list with prices
- Subtotal and total
- Payment method
- Transaction ID and timestamp
- Footer text (customizable)
- Automatic printing (configurable)
- Manual print trigger
- Receipt preview
- Multiple copies
- Email receipt (if configured)
- Tablets: iPad, Android tablets (primary)
- Phones: iPhone, Android phones (secondary)
- Card Readers: Coiney terminals
- Printers: Epson thermal printers
- Barcode Scanners: USB barcode scanners
- Printer IP setup
- Card reader pairing
- Scanner configuration
- Wake lock (prevent sleep)
Supported Languages:
Localized Elements:
- UI labels and buttons
- Product names (if provided)
- Currency formatting
- Date/time display
- Receipt content
- User authentication required
- Event-based permissions
- POS assignment restrictions
- Admin-only functions (cancellation)
- Encrypted local storage
- Secure payment processing
- Audit trail logging
- Transaction signing
¶ Tablet Mode (Landscape)
- Expanded product grid
- Split-screen cart view
- Enhanced navigation
- User profile display
- Compact product list
- Full-screen cart
- Bottom navigation
- Simplified controls
✅ Configure all payment methods before event
✅ Test printer connectivity
✅ Enable offline mode for outdoor events
✅ Pre-load product catalog
✅ Set up age verification rules
✅ Sync transactions regularly during event
✅ Monitor sync queue for failures
✅ Keep device charged
✅ Test card reader before shifts
✅ Train staff on all payment methods
✅ Clear cache if performance issues
✅ Restart app if sync fails
✅ Verify network for online payments
✅ Check printer status regularly
git clone git@git.trainspot.jp:trainspot/pos-stack-app.git
cd pos-stack-app
flutter pub get
TEAM_NAME=trainspot
FIREBASE_PROJECT_ID=pos-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
Payment Processing Fails:
- Check network connectivity
- Verify payment provider credentials
- Test card reader connection
- Review payment logs
Printer Not Working:
- Check printer IP address
- Verify same network
- Test print from settings
- Check printer power/paper
Products Not Loading:
- Verify event selection
- Check POS assignment
- Sync product catalog
- Clear app cache
Offline Sync Issues:
- Check network status
- Review sync queue
- Verify server connectivity
- Retry failed transactions
- Regular cache cleanup
- Limit transaction history display
- Optimize product images
- Enable lazy loading
- Clear old transactions
- Compress receipt images
- Limit concurrent operations
- Monitor memory usage
Issues: pos-stack-app/issues
Slack: #pos-stack-support
Email: dev@trainspot.jp
Last Updated: October 2025
App Version: 2.0
Maintained By: Mobile Development Team