BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
TriOS public marketing / landing site (Next.js + Vercel)
翻訳待ち
Loading the full README.
Read the full README ↗Public marketing site for TriOS — iron-distance triathlon training software (early access).
npm run build)@neondatabase/serverless)resend)| Path | Page |
|---|---|
/ | Home — hero + morning brief promise |
/features | Capability cards |
/how-it-works | Closed loop (import → understand → plan → execute → learn) |
/early-access | Early-access waitlist signup |
/faq | FAQ — early-access honest answers |
/changelog | Starter changelog (early alpha) |
/about | About TriOS |
/privacy | Privacy placeholder |
/terms | Terms placeholder |
/support | Support / contact |
Primary CTA → TriOS app (staging)
Copy .env.example to .env.local for local development. Never commit secrets.
| Variable | Required | Notes |
|---|---|---|
DATABASE_URL | Yes (for waitlist) | Neon connection string for project trios-site-waitlist. Server-only. Set the same value in Vercel project env for production/preview. |
RESEND_API_KEY | Recommended | Resend API key (server-only). Used to send one confirmation email after a new waitlist signup. If missing, signup still succeeds and send is skipped (logged). |
RESEND_FROM | Optional | From address. Defaults to TriOS <[email protected]> until a custom domain is verified in Resend. |
The waitlist writes to table waitlist_signups (email unique, optional name, source default early-access). Duplicate signups do not send another confirmation email. Email failures never roll back a successful insert.
npm install
cp .env.example .env.local # then set DATABASE_URL from Neon
npm run dev
npm run build
/early-access — no payment/checkout in this marketing site yet. Pricing comes later.