Horse racing tipping app

Horse racing tipping app

Horse racing tipping app

Upwork

Upwork

Remoto

1 month ago

No application

About

Hi I’m reaching out for a formal quote to build the backend for “Farmer Bets,” a subscription-based horse-racing tips app. The stack and scope align closely with your experience. PROJECT OVERVIEW Farmer Bets delivers curated horse-racing tips with transparent rationale, performance metrics, and a paywalled real-time feed. We’re starting with a backend-first MVP and wiring in Stripe subscriptions at AUD $33/month. SCOPE (MVP BACKEND) 1) Tech stack - API: FastAPI (Python 3.11+) - DB: PostgreSQL 14+ (schema provided) - Background jobs: simple scheduled workers (e.g., grading tips, metrics recompute) – stubbed for MVP - Hosting: containerized (Docker). Please recommend deployment (Render/Fly.io/AWS/GCP) with cost notes 2) Data model (already designed) - Users, tipsters, races, horses, runners, odds_snapshots, tips, results, tip_grades, metrics_daily - Subscriptions tied to a plans catalog (plan: “pro_monthly” at AUD 33/month) - Views for feed and entitlements - I will provide the DDL SQL you can run directly 3) Subscriptions & paywall (must-have) - Plan catalog seeded with “pro_monthly” (AUD 33/month) - Stripe Checkout (mode=subscription) using a stored price_id - Webhook to handle lifecycle events (checkout.session.completed, customer.subscription.created/updated/deleted, invoice.*) - Subscriptions table updates: status, renews_at, canceled_at, amount_cents, currency, external_ref - Entitlements view (v_user_entitlements) used to gate “pro” access - Tips are premium by default; free users only see non-premium or unlocked tips (paywalled_until = now) 4) Required endpoints (initial) - POST /subscriptions/checkout → returns Stripe checkout_url - POST /webhooks/stripe → updates subscription records - GET /me/subscription → returns current user’s subscription + is_pro - GET /tips?visibility=free|pro → free respects paywall; pro requires entitlement - Plus skeletons for races/tips ingestion we’ll expand later - OpenAPI 3.0 spec provided; please keep handlers in sync 5) Security & basics - Bearer JWT auth (stub verifier is fine for now; I will wire real auth later) - Input validation, basic rate limiting recommendations, and sane error handling - Logging and simple health check 6) Deliverables - Running API that passes Postman/pytest acceptance tests - SQL migrations (or a single bootstrap SQL) ready for a clean Postgres - OpenAPI 3.0 YAML kept current - Dockerfile and docker-compose (API + Postgres) with readme - Minimal seed script for plans and a demo user - Deployment runbook (step-by-step) for staging and production 7) Acceptance criteria (high level) - Complete Stripe subscription flow: checkout → webhook → DB reflects active status → /me/subscription shows is_pro=true - Paywall logic enforced server-side (402 Payment Required for pro without entitlements) - Code is readable, documented, and organized (PEP8, type hints where sensible) - Unit tests for subscription lifecycle handlers and paywall gating - All endpoints match the OpenAPI spec and return appropriate HTTP codes MILESTONES (SUGGESTED) 1) DB + OpenAPI + project skeleton (FastAPI, Docker) – delivers running service with health check 2) Plans + subscriptions tables, /me/subscription endpoint, entitlement view 3) Stripe checkout + webhook end-to-end in test mode, with unit tests 4) Tips feed with paywall enforcement (free vs pro) 5) Packaging, docs, deploy scripts, and staging handover WHAT I NEED FROM YOU 1) A fixed-price quote per milestone and a total; include your hourly rate for out-of-scope items 2) A delivery timeline with start date and key checkpoints 3) Your approach to deployment (preferred host), estimated monthly infra costs, and any trade-offs 4) A brief description of your testing approach (unit/functional) and what you consider “done” 5) A short support window post-handover (e.g., 30 days for bug fixes) 6) Any assumptions or exclusions 7) 1–2 relevant references or code samples (Stripe subscription work is a plus) ADMIN & LEGALS - IP: Work-for-hire; Farmer Bets owns the code - Access: You’ll receive the schema.sql, openapi.yaml, a small FastAPI starter, and test tokens for Stripe - Timezone: Australia/Sydney; we can align on a weekly stand-up cadence - Optional: I can provide a mutual NDA upon request NEXT STEPS If you’re interested, please reply with your quote and questions. I’m ready to proceed immediately once we align on scope and milestones. Best regards, Warren Carlyle Farmer Bets