Weekly Update

Date: 2026-05-26 To: Isaac Botkin

Beta Program & Discovery

  • Received sample NDA from T.REX — reviewing and adapting it for RDP before beta release
  • Following up with Lyrinda to get the individual beta tester list — discovery conversations will start as soon as that’s in hand
  • Web crawler exploration for range/church pipeline on hold during build sprint

Last Week

  • Stood up the backend with core features — accounts, drills, scores, events, users, leaderboards, push notifications, and media uploads
  • iOS and Android app shells are taking shape (screenshots further below) — login, scoring, drill favorites, leaderboards, friends, events, range bag, dry fire training, and challenges are in progress on both platforms
  • Admin dashboard has a working drill builder shell (screenshot further below) with permission-based access, search/filters, and scoring configuration
  • Streamlined local development tooling and set up automated build pipelines for server, iOS, and Android
  • Majority of roadmap work items are complete — remaining items are in draft
  • Moved billing and event enrollment to post-MVP to keep the critical path focused

This Week

  • Next round of mobile features: push notifications, content feed, media uploads, achievements
  • Stand up the staging environment and begin work on server monitoring
  • Start on the dashboard event builder and roster builder
  • Begin UX polish on mobile and dashboard — working with placeholder styling until design guidelines arrive from Ryan
  • Set up recurring calls with Isaac and Ryan — especially as staging comes online and UX/UI becomes the focus alongside core feature development
  • Finalize the NDA for beta and continue discovery conversations with testers
iOSAndroidDashboard

Changelog

Server APIs

  • Auth service — 8 endpoints: registration, login, token refresh, password reset, email verification, org invites
  • Drill service — 15 endpoints: create, read, update, delete, visibility, copy, favorites, scoring profiles, courses
  • Score service — 6 endpoints: create, batch create, void, list, get
  • Event service — 10 endpoints: event create/read/update/delete, roster management, drill/course assignment
  • User service — 11 endpoints: profile, org members, search, friendships
  • Leaderboard service — per-drill, friends, and org leaderboards
  • Range bag service — personal gear/equipment management
  • Challenge service — friends-only challenge invites
  • Location service — 5 endpoints, 19 integration tests
  • Achievement service — read-only endpoints
  • Content feed service — list entries and mark-as-read
  • Media service — two-phase signed-URL upload flow, pluggable storage (local + DigitalOcean Spaces)
  • Push infrastructure — Apple (APNs) and Google (FCM) push notifications with multi-platform routing, preferences, and token lifecycle
  • 102+ integration tests across the workspace

Core Crate (Rust, shared across all platforms)

  • 12 entity models with full validation
  • Scoring engine — 5 calculation methods (HitFactor, TimePlus, PointsOnly, TimeOnly, PassFail)
  • Offline queue with append-only score sync
  • Proto conversion layer — type-safe conversions for all 20 entities + 11 enums
  • ScoringEngine — offline-first state machine with UniFFI exports

Database

  • 27 tables, 16 Postgres enums, leaderboard indexes
  • Embedded Postgres via CLI — auto-downloads on first run, no Docker required
  • CLI commands: db start, stop, migrate, rollback, reset

Mobile (iOS: SwiftUI, Android: Jetpack Compose)

  • UniFFI bindings (Universal Foreign Function Interface) — both platforms call Rust core natively
  • Auth — login, register, reset password, secure session persistence, token refresh
  • 4-tab shell navigation
  • Scoring — offline-first engine, score queue management, score history
  • Event browsing
  • Per-drill leaderboard views
  • Friends list and user search
  • Drill favorites
  • Range bag with shared validation and offline cache
  • Dry fire training with par timer
  • Challenges with friends-only invites

Dashboard (Dioxus — Rust compiled to WebAssembly)

  • Auth flow — login, register, reset password, email verification, session management
  • Drill builder — create, read, update, delete, role-based UI visibility, search/filters, step reorder, zone overrides, scoring profile selection

Tooling & Infrastructure

  • rangeday CLI — serve (multi-target), setup, build, test, test-summary, check, fmt, bindings, proto, db lifecycle
  • rangeday serve ios,android — starts embedded Postgres, runs migrations, starts server, builds + launches app, tears down on Ctrl+C
  • ConnectRPC transport (switched from tonic)
  • CI pipelines: server, iOS, Android (GitHub Actions)
  • Self-hosted macOS CI runner for iOS builds
  • HTTP request tracing, cross-origin request handling, pre-commit hooks (Rust linting + doc linting)
  • 22 proto files across 15 services with schema validation

Docs & Planning

  • 45 roadmap work items with dependency graph
  • Decision docs: Native App Configuration, Instance Verification and Licensing, Dual Protobuf Runtime
  • Billing and event enrollment moved to post-MVP
  • 8+ idea notes captured (dry fire tracking, BLE triggers, SQL perf trending, ballistic calculator quiz, etc.)