Inspiration
We mashed two worlds that rarely meet: the social spark of working out together and the gameful incentives of a market. Fitness apps often lose steam without friends; markets make tiny actions feel meaningful. We asked: what if meeting for a run felt like unlocking a quest reward—and you could trade that effort? That became SweatMarket.
What it does
- Find partners: Profiles with sport, time window, and region; browse posts/offers; DM to coordinate.
- Verify meetups: Host shows a QR, partner scans; both devices send GPS. Success if within 100 m and 120 s.
- Earn coins: On verification, both users receive FitCoin and a wallet transaction is recorded.
- Reward formula (Markdown + LaTeX):
$$\text{FitCoin}=\left\lfloor\frac{t\cdot\iota}{10}\right\rfloor + 10\cdot \mathbf{1}_{\text{verified}}$$ where (t) = workout minutes, (\iota\in{1,2,3}) = intensity bucket.
- Reward formula (Markdown + LaTeX):
- Play the market: Lightweight DEX-style page to post buy/sell orders for FitCoin (toy economy; no real money).
- See history: Wallet balance + transaction list.
How we built it
- Stack: FastAPI + SQLModel/SQLite + Uvicorn, Jinja2 templates, Tailwind CSS.
- Auth & sessions: Starlette
SessionMiddleware; simple username/password. - Data model:
users (coins),txs(wallet ledger),orders(orderbook), plusposts,comments,chat_rooms,messages. - Endpoints:
/signup,/login,/wallet,/dex(+/dex/new), and/landing. - Demo mode for speed: Toggle via
SWEATMARKET_DEMO=1or?demo=1to seed fake orders and wallet so UI works even when other modules are unfinished. Soft-imports prevent crashes while teammates iterate.
Challenges we ran into
- Concurrency & merges: Multiple people touching templates/models → conflicts. We used frequent rebases, one-owner policy for shared files, and small PRs.
- Schema churn: Adding
users.coinsmid-sprint required a tiny migration or dev DB reset. - Anti-cheat vs. simplicity: Balanced realism with QR + 100 m geofence instead of heavy sensor attestation.
- Scope control: Built a post-only orderbook (no matching engine) to hit the 12-hour MVP.
Accomplishments that we're proud of
- End-to-end meet → verify → earn → trade loop shipped within the hackathon window.
- Demo mode kept momentum when other parts weren’t ready.
- Clean, responsive UI with a sticky header and consistent context (passing
userintobase.html). - QR + geo verification that feels real without complexity.
What we learned
- Decoupled modules win hackathons. Feature flags and demo data unblock UI/UX early.
- Pass context early (e.g.,
userintobase.html) to prevent template drift. - Keep tiny migrations or be ready to recreate SQLite locally.
- Rebase +
--force-with-leaseand clear ownership make teamwork smooth.
What's next for Sweat Market
- Swipe-style matching by sport/time/region and availability.
- HealthKit/Google Fit integrations for stronger proof-of-workout.
- Streaks, seasons, leaderboards with decay/bonus mechanics.
- Stronger anti-cheat: Bluetooth co-presence, timed photo prompts.
- Market upgrades: Simple matching/clearing; badges purchasable with FitCoin.
- PWA & push notifications for nearby offers and streak reminders.
Log in or sign up for Devpost to join the conversation.