Lovat is Highlander Robotics Team 8033's scouting system for FIRST Robotics Competition events. It collects match observations, analyzes team performance, supports scouting operations, and presents data for match strategy and alliance selection.
| Path | Purpose | Technology |
|---|---|---|
apps/collection |
Field-side match collection, offline history, and report upload | Expo, React Native, TypeScript |
apps/server |
API, authentication, storage, imports, caching, and analysis | Node.js, Express, TypeScript, Prisma, PostgreSQL, Redis |
apps/dashboard |
Analysis, scouting management, predictions, and picklists | Flutter and Dart |
apps/website |
Public site and selected operational routes | SvelteKit and TypeScript |
apps/learn |
User guides for Dashboard and Collection | Astro, Starlight, MDX, Svelte |
Collection ── reports ──> Server <── schedules and results ── The Blue Alliance
│
├── PostgreSQL: durable data
├── Redis: analysis cache
└── authenticated API ──> Dashboard
Website provides public pages and selected operational integrations.
See docs/architecture.md for boundaries and cross-application contracts.
- Server: Node.js 22.20.0, PostgreSQL, and Redis.
- Collection: Node.js 24.6.0 and Expo/EAS tooling.
- Dashboard: Flutter; CI versions are documented in its local instructions.
- Website: Node.js 20.19.6.
- Learn: Node.js 22 and npm.
- macOS and Xcode are required for local iOS builds.
Each application retains its own lockfile. Install dependencies inside the application directory.
./scripts/check-structure.sh
./scripts/check-all.shApplication development commands:
cd apps/server && npm run dev
cd apps/collection && npm start
cd apps/dashboard && flutter run -d chrome
cd apps/website && npm run dev
cd apps/learn && npm run devSeveral applications require environment files or external services for full runtime behavior. Copy only committed .env.example files and never commit credentials.
Read AGENTS.md and the nearest app-local AGENTS.md before editing. Keep changes within the app that owns the behavior. Update all affected producers and consumers together when a shared contract changes.
This repository configures Linear as a project-scoped MCP server for Codex. Authentication is stored per user and is never committed.
After cloning the repository, trust the project when Codex prompts you, then authenticate:
codex mcp login linearRun codex mcp get linear to verify the server configuration, or use /mcp inside an interactive Codex session. Start a new Codex session if one was already open when you authenticated.
The server test overview can be published by CI after successful server checks on main. See test report hosting for setup.
-
Server: Railway, repository root
/, config/apps/server/railway.json, Dockerfileapps/server/Dockerfile(includespackages/db). See database deployment requirements. -
Dashboard: Netlify web deployment and GitHub Actions Android artifact.
-
Collection: EAS, project root
apps/collection. -
Website: Netlify, base directory
apps/website. -
Learn: static site; base directory
apps/learn, buildnpm run build, outputdist.
See the changelog for changes grouped by month and feature across Lovat's full history and the complete commit archive for all retained main and tagged application history, beginning in December 2022.
This repository combines formerly separate repositories, including MangoSwirl/lovat-learn (see Learn import). Default-branch histories and namespaced release tags are retained. Original-to-rewritten maps and migration evidence are in docs/migration; the source repositories remain the record for old pull requests and feature branches.