Lesson 1Wallet design: active tickets, ticket lifecycle, expiration, restore and transfer scenariosDesign a wallet dat manages active, upcoming, and expired tickets. You go 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 de trip planner UI from inputs to results. You go 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 localization considerationsLesson 3User controls for alerts: subscriptions, quiet hours, per-line filtering, accessibility of alertsDesign user-facing controls dat govern which alerts received. You go 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 go 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 dat balances speed, transfers, walking, and accessibility. You go define filters, scoring models, tie-breaking rules, and UX patterns so riders can quick find routes dat 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 go design event schemas, user properties, funnels, and privacy controls dat 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 minimizationLesson 7Ticket purchase flow: product catalog, fare rules, seats/reservations vs proof-of-payment modelsDesign de ticket purchase flow from product selection to confirmation. You go model fare rules, passes, reservations, and proof-of-payment, ensuring clarity, validation, and compatibility wid agency backends.
Product catalog 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 de end-to-end journey from app launch to route results. You go design permission prompts, location handling, shortcuts, and recent searches so riders can reach relevant trip options wid minimal friction and clear privacy expectations.
Cold start, splash, and onboarding decisionsRequesting and explaining location permissionsQuick actions, favorites, and home-work shortcutsRecent searches, recents ranking, and clearingHandling denied permissions and manual locationLesson 9In-app alert presentation: inbox, banners, contextual route alerts, personalization and prioritizationDefine how alerts appear inside de app across contexts. You go design inboxes, banners, and contextual surfaces, wid prioritization, grouping, and personalization dat keep riders informed without overwhelming dem.
Alert inbox layout and filtering optionsTransient banners, toasts, and modalsContextual alerts on route and ticket viewsPrioritization, grouping, and rate limitingPersonalization 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 go design retries, idempotent operations, offline queues, and clear error messaging dat 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, tokenizationExplore payment integration options and security boundaries. You go compare hosted pages and in-app SDKs, design tokenization, and reduce PCI scope while keeping de checkout smooth, trustworthy, and compliant.
Hosted checkout vs native SDK tradeoffsReducing PCI scope with tokenization3-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 tokenizationLearn secure local storage patterns for tickets and tokens. You go compare encrypted databases, Keychain or Keystore, and platform APIs, designing key rotation, backup behavior, 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 behavior