TailTag is a real-world convention game where players register fursuits, catch other fursuiters at events, and track catches, achievements, stats, and leaderboards.
app/andsrc/contain the Expo React Native mobile app.admin/contains the Next.js admin dashboard for operations, moderation, analytics, and event management.web/contains the Astro landing site.packages/achievement-rules/contains shared achievement and daily task rule definitions.supabase/contains database migrations, seed data, local Supabase config, and Edge Functions.docs/contains architecture notes, local development guidance, environment setup notes, release readiness notes, and backend runbooks.
- Node.js 22 is required because CI and local version files use Node 22.
- npm is used for dependency installation in each app/package.
- Expo and EAS tooling are only required when building or submitting native mobile builds.
- Supabase CLI is only required for backend work.
- Native platform tooling is required for
npm run iosandnpm run android:- Xcode for iOS builds.
- Android Studio and an Android SDK/device or emulator for Android builds.
Install the root mobile app dependencies first:
npm installThe admin dashboard and landing site have their own lockfiles and dependencies:
cd admin
npm installcd web
npm installFrom the repository root:
npm run startUseful mobile commands:
npm run ios
npm run android
npm run webThe default app environment is development. Native runs sync environment-specific config before launching.
The admin dashboard requires local environment variables. Copy admin/.env.example to admin/.env.local and fill in the Supabase values for the environment you want to use.
cd admin
npm run devThe app runs at http://localhost:3000 by default.
cd web
npm run devUse npm run build in web/ to build the static site.
Mobile public Supabase config is resolved in app.config.ts for development, staging, and production.
Backend work lives under supabase/. The repo includes migrations, reference seed data, local Supabase configuration, and Edge Functions. For provisioning storage buckets, realtime publications, cron jobs, Edge Function secrets, auth providers, and environment-specific setup, see docs/environment-setup.md.
Run the mobile validation command for app-only changes:
npm run validate:mobileRun the full repository validation command before PR handoff when Docker/Supabase local development is available:
npm run validate:repoValidate the admin dashboard only:
cd admin
npm run lint
npm run typecheck
npm run test:security
npm run buildValidate the landing site:
cd web
npm run buildType-check shared packages:
npm run validate:packagesdocs/architecture.mdexplains how the mobile app, admin dashboard, landing site, shared rules, and Supabase backend fit together.docs/local-development.mdhas deeper local setup and troubleshooting notes.docs/environment-variables.mdlists the environment variables used by each surface.docs/environment-setup.mdcovers backend and Supabase environment setup.docs/backend-overview.mdexplains the Supabase backend, Edge Functions, migrations, seeds, cron jobs, and operational scripts.docs/mobile-overview.mdexplains the Expo app structure, routing, state/data patterns, and native capabilities.docs/ci-cd-policy.mddefines required branch protection settings, required checks, and CI/CD delivery rules.docs/RELEASE_READINESS.mdtracks release readiness work.docs/runbooks/release-management.mdcovers production release versioning, tags, and branch handling.docs/runbooks/sync-environments.mdcovers environment sync operations.docs/runbooks/rollback.mdcovers rollback operations.admin/README.mdhas more detail about the admin dashboard.
Contribution guidelines will be added later.