Skip to content

Migration to Kotlin Multiplatform #72

@kkostov

Description

@kkostov

This issue tracks progress for the migration of the app to Kotlin Multiplatform.
Commits are done in the vnext-kmp branch.

Preparations

  • Setup project and gradle structure
  • Migration plan for resources - images, translations
  • Add support for SQLite queries using existing storage and schema
  • Windows builds
  • Pipeline setup for releases
  • Add signing for macOS and Windows
  • Add pretix application icons for distribution
  • Document translation workflow using weblate

Functional implementation

Each point can be tackled in two steps - implementing the feature functionally (bringing in all needed dependencies, writing out a compatible view model etc) and second step of refining the UI to meet our needs on desktop.

  • Welcome - disclaimer screen
  • Setup (connection and initialisation of the device)
  • Multi-event mode
    • Enforce the same list can't be selected in two events
  • Main Screen (input and submission of ticket codes)
    • Select event
    • Select check-in list
    • Input ticket code using keyboard or scanner
    • List search results
    • Select search result to show detail
      • Clear search results after handling a ticket
      • Auto-scan: detect and submit scanned ticket codes with a hand-held scanner
    • Ticket validation feedback
      • Play sound
      • Show check-in status dialog
      • Show attention markers
      • Auto-dismiss success status after 30s
      • Dismiss success status with Space key
    • Check-in Questions
      • Show existing answers
      • Allow inputting new answers per question type
      • Question types:
        • N – number
        • S – one-line string
        • T – multi-line string (max 2 lines)
        • B – boolean
        • C – choice from a list
        • M – multiple choice from a list
        • F – file upload
        • D – date
        • H – time
        • W – date and time
        • CC – country code (ISO 3666-1 alpha-2)
        • TEL – telephone number
        • EMAIL
    • Check-in unpaid ticket
  • Settings screen
    • Configure printing
    • Select printer
    • Printer layout and options
    • Option to print a badge
    • Configure webcam
    • Option to select default camera
    • Option to enable or disable playing sound
    • Option to show blink for special tickets
    • Option to automatically switch events
    • Contact and license information
    • Option to toggle offline sync
  • Printing
  • Offline sync
  • When pretixSCAN is installed on a system with existing v1 installation, migrate the settings automatically on first run
  • Windows Installer configuration - prefix logo and branding, license information, create desktop icon option

Design and layout refinements

  • Select event, select check-in list dialogue should have a way to reload available events
  • Keyboard shortcuts from previous app version should work throughout the app
    • Pressing Enter on the Connect screen/forms should submit
  • Date and time picker design may be improved
  • Question CC - preselect appropriate default value (similar to Android)
  • Questions dialog - the right questions are not always shown, missing validation error

To Research, Nice to have

  • Is it possible to invoke libsync in a non-blocking way?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions