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.
Elige tus deportes, ligas y equipos y recibe cada mañana la agenda con los próximos partidos, carreras y peleas por WhatsApp o email, en tu horario.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @srostagnoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Trimry App
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Trimry is a personalized sports events notifier. Users pick the sports, leagues and teams they follow and receive a personal agenda of upcoming matches, races and fights by email and WhatsApp, in their own time zone. Scout is the conversational assistant (web widget + WhatsApp) that can search teams, follow them and answer "what is on tonight?" with real fixtures.
• Next.js 13 (App Router), React 18, TypeScript
• Tailwind CSS with the tr-* utility layer in src/app/globals.css (light theme, brand gradient)
• External API integration over fetch with credentialed cookies (src/lib/api-client.ts)Read the full README ↗Trimry is a personalized sports events notifier. Users pick the sports, leagues and teams they follow and receive a personal agenda of upcoming matches, races and fights by email and WhatsApp, in their own time zone. Scout is the conversational assistant (web widget + WhatsApp) that can search teams, follow them and answer "what is on tonight?" with real fixtures.
tr-* utility layer in src/app/globals.css (light theme, brand gradient)fetch with credentialed cookies (src/lib/api-client.ts)| Route | Purpose |
|---|---|
/ | Landing: live preview of upcoming events per sport, how it works, Scout, pricing, FAQ |
/activate | 4-step onboarding: sports → teams & leagues → delivery (inline account creation for anonymous visitors) → review + Stripe trial |
/account/register, /account/login | Name + email registration (no password required; login links supported) |
/checkout/start | Stripe Checkout handoff and cancel/resume state |
/account/delivery (/account/whatsapp) | Channel, hour and WhatsApp number settings after checkout |
/dashboard | Tabs: Agenda (personal feed), Teams & leagues, Delivery & billing, Account; admins also get Admin sends and Sports sync |
/legal/* | Terms, privacy, data & accuracy notice, data deletion |
Anonymous visitors can complete steps 1–2 of /activate; the draft is stored in localStorage (trimry:sports-preferences-draft) and sent with POST /auth/register as sportsPreferences.
components/scout-chat-widget.tsx — floating Scout chat. Uses GET/POST /assistant/chat with a persistent visitorId (localStorage) so anonymous conversations are claimed on login. Dispatches trimry:scout-preferences-updated when Scout changes preferences so the dashboard refreshes.components/sports-preferences-editor.tsx — SportPicker, TeamSearch, LeaguePicker, RhythmPicker, PreferencesSummary and the composed SportsPreferencesEditor.components/upcoming-events-feed.tsx — renders an UpcomingFeed grouped by local day with team/league badges.components/dashboard/admin-send-campaigns.tsx — legacy dark admin tooling, scoped by .tr-admin-surface.components/dashboard/admin-sports-sync.tsx — events cache status (OpenAI web search provider) and manual sync.Copy .env.example:
NEXT_PUBLIC_API_BASE_URL (for example http://localhost:4000/api/v1)NEXT_PUBLIC_SITE_URL (for example https://trimry.com)NEXT_PUBLIC_GA_MEASUREMENT_IDNEXT_PUBLIC_META_PIXEL_IDcorepack pnpm install
corepack pnpm dev
Open http://localhost:3000. pnpm typecheck, pnpm lint and pnpm build must pass before shipping.
POST /auth/register (accepts sportsPreferences), POST /auth/login, POST /auth/login-link/request|consume, POST /auth/refresh, POST /auth/logout, POST /auth/whatsapp-checkoutGET /me, GET /me/upcoming-events, PATCH /me/activation-funnel, PATCH /users/me, PUT /users/me/sports-preferences, PATCH /users/me/preferences, PATCH /users/me/password, DELETE /users/meGET /sports/catalog, GET /sports/leagues, GET /sports/teams/search, GET /sports/events/previewGET /assistant/chat, POST /assistant/chatPOST /subscription (subscribe, update-delivery, send-sample), GET /billing/plan, POST /billing/checkout-session, POST /billing/portal-session, POST /billing/cancel-subscription, POST /billing/reactivate-subscription/admin/send-*, /admin/subscriptions/*, GET|POST /admin/sports/sync