Lesson 1Wallet design: active tickets, ticket lifecycle, expiration, restore and transfer scenariosDesign a wallet that manages active, upcoming, and expired tickets. You will model ticket states, validation, expiration, and device changes, while supporting restore, transfer, and fraud prevention in a clear, predictable interface.
Ticket state machine and lifecycle eventsActive, upcoming, and expired ticket viewsValidation states and visual security cuesRestore flows after reinstall or device lossTransfer rules, limits, and fraud controlsLesson 2Trip planner UI/UX: required inputs (origin, destination, time, preferences) and output elements (route, duration, transfers, walking segments)Design the trip planner UI from inputs to results. You will specify required fields, preference controls, and result cards, ensuring accessibility, clarity of tradeoffs, and fast comparison between alternative routes and modes.
Input forms for origin, destination, and timePreference controls for modes and walkingDesigning route result cards and summariesDetail views for legs, transfers, and faresAccessibility and localisation considerationsLesson 3User controls for alerts: subscriptions, quiet hours, per-line filtering, accessibility of alertsDesign user-facing controls that govern which alerts are received. You will implement subscriptions, quiet hours, per-line filters, and accessibility options so riders can tune relevance while still receiving critical safety messages.
Subscription models: lines, stations, routesQuiet hours, do-not-disturb, and overridesPer-line and per-topic filtering optionsCritical vs optional alert categoriesAccessibility settings for alert deliveryLesson 4Real-time alerts delivery: push notifications, WebSocket/Socket.IO, server-sent events, and fallback pollingExplore real-time alert delivery channels and tradeoffs. You will compare push, WebSockets, SSE, and polling, design reconnection and backoff, and ensure alerts stay timely, deduplicated, and power efficient on mobile devices.
Choosing push vs WebSocket vs SSE vs pollingConnection management and reconnection logicOrdering, deduplication, and idempotent alertsBattery, data usage, and background limitsFallback strategies when real-time failsLesson 5Route ranking and filtering: fastest, fewest transfers, accessibility, least walkingDesign ranking logic that balances speed, transfers, walking, and accessibility. You will define filters, scoring models, tie-breaking rules, and UX patterns so riders can quickly find routes that match their preferences and constraints.
Ranking by time, transfers, and walking distanceAccessibility-aware route scoring and penaltiesUser-configurable filters and presetsHandling incomplete or low-quality GTFS dataExplaining rankings with clear UI labelsLesson 6Analytics events for core features: trip searches, ticket purchases, alert interactionsDefine analytics for trip searches, ticket purchases, and alerts. You will design event schemas, user properties, funnels, and privacy controls that help improve features while respecting regulations and user expectations.
Core events for search, purchase, and alertsEvent naming, versioning, and schemasFunnels, cohorts, and retention analysisAttribution of alerts to user actionsPrivacy, consent, and data minimisationLesson 7Ticket purchase flow: product catalogue, fare rules, seats/reservations vs proof-of-payment modelsDesign the ticket purchase flow from product selection to confirmation. You will model fare rules, passes, reservations, and proof-of-payment, ensuring clarity, validation, and compatibility with agency backends.
Product catalogue structure and fare familiesFare rules, zones, caps, and concessionsSeat reservations vs open proof-of-paymentValidating eligibility and rider typesPurchase confirmation and receipt designLesson 8User flow from app launch to route results: permissions, location access, quick actions, recent searchesMap the end-to-end journey from app launch to route results. You will design permission prompts, location handling, shortcuts, and recent searches so riders can reach relevant trip options with minimal friction and clear privacy expectations.
Cold start, splash, and onboarding decisionsRequesting and explaining location permissionsQuick actions, favourites, and home-work shortcutsRecent searches, recents ranking, and clearingHandling denied permissions and manual locationLesson 9In-app alert presentation: inbox, banners, contextual route alerts, personalisation and prioritisationDefine how alerts appear inside the app across contexts. You will design inboxes, banners, and contextual surfaces, with prioritisation, grouping, and personalisation that keep riders informed without overwhelming them.
Alert inbox layout and filtering optionsTransient banners, toasts, and modalsContextual alerts on route and ticket viewsPrioritisation, grouping, and rate limitingPersonalisation based on usage and linesLesson 10Error handling and retry patterns during purchase and network failuresLearn patterns for handling purchase and network failures without losing user trust. You will design retries, idempotent operations, offline queues, and clear error messaging that protect payments and avoid duplicate charges or broken tickets.
Classifying transient vs permanent failuresDesigning safe retry and backoff strategiesIdempotency keys for payment operationsOffline queues and local operation logsUser-facing error messages and recovery flowsLesson 11Payment integration: hosted pages vs in-app SDKs, PCI scope reduction, tokenisationExplore payment integration options and security boundaries. You will compare hosted pages and in-app SDKs, design tokenisation, and reduce PCI scope while keeping the checkout smooth, trustworthy, and compliant.
Hosted checkout vs native SDK tradeoffsReducing PCI scope with tokenisation3-D Secure, SCA, and regional rulesHandling declines, reversals, and refundsStoring and updating payment instrumentsLesson 12Local storage for tickets: secure storage options (encrypted database, keystore/Keychain) and tokenisationLearn secure local storage patterns for tickets and tokens. You will compare encrypted databases, Keychain or Keystore, and platform APIs, designing key rotation, backup behaviour, and protections against tampering or cloning.
Threat model for stored tickets and tokensUsing Keychain or Keystore for secretsEncrypted databases for ticket metadataKey rotation, revocation, and migrationBackup, restore, and multi-device behaviour