flutter
Flutter는 wger용 피트니스·운동 앱입니다
리프팅 프로그램 선택·탭으로 세트 기록·912가지 운동 단계별 학습·초보자용·성장 가능·앱스토어 무료
Pick a lifting program, log sets in a tap, and learn 912 exercises step by step. Built for beginners, with room to grow. Free on the App Store for iPhone.
스포츠·피트니스TypeScript · PLpgSQLGitHub @alanmh1온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Strength training app for people in their first 6 months of lifting. iOS and web, built with Claude Code, Expo, Supabase, and Vercel.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A strength training app for people in their first 6 months of lifting. It picks a starter program, makes logging a set one tap, and keeps you coming back with a weekly streak.
I'm Alan Harris, a growth and lifecycle marketer (Segment, Retool, TLDR). I'm not a software engineer. I built LiftCamp with AI coding tools to see how far a marketer could take a real product, and to have a lifting app I'd recommend to a friend who just joined a gym.
The history shows how that went. The first version came from a single prompt in Lovable in June 2026 (it's saved in docs/original-lovable-prompt.md). In September I moved the code to GitHub, Vercel, and my own Supabase project, and since then I've built it with Claude Code. That's about 2,000 commits, 65 database migrations, and an iOS app that went through App Store review in October.
Weight is free text. People log "40 (x2)" for a pair of dumbbells or "Body weight (-100)" for an assisted machine. Forcing a number field would break the fastest path through the app, so the raw text is kept and a separate numeric column is derived from it for charts.
Each set keeps its own unit. Switching from lb to kg converts the display, never the stored data, so old workouts stay exactly as logged.
Row-level security on every table. All access is scoped to auth.uid(), including anonymous guests, so guest mode needed no special policies.
Leaving Lovable. Lovable got the first version running fast. Once I needed a mobile app, my own auth setup, and control over the database, I moved everything to infrastructure I own. The migration plan and its gotchas are in CLAUDE.md.
Licensed exercise media. Demo animations are licensed from ExerciseDB, and the license terms decided where they can appear. A lot of the exercise art is original, drawn in a consistent clay style around the app's mascot.
SEO as the acquisition channel. The website is a public exercise library, routine guides, a plate calculator, and strength standards by lift. Each page targets a search a new lifter actually makes.
An MCP server. LiftCamp's catalog is available to AI assistants at liftcamp.app/mcp. It has 4 tools: exercise guides, exercise swaps, routine finder, and strength level. A beginner asking ChatGPT or Claude for a workout can get a LiftCamp routine back with a link to start it.
Retention before revenue. The roadmap keeps logging, history, and every starter program free forever, and holds paid features until retention numbers say people are sticking.
| Mobile | Expo (React Native), iOS live, Android in progress |
| Web | TanStack Start, Tailwind, deployed on Vercel |
| Backend | Supabase (Postgres, Auth, Storage, Edge Functions) |
| Resend | |
| Repo | pnpm monorepo |
apps/mobile Expo app for iOS and Android
apps/web liftcamp.app: public site, guides, admin, MCP server
packages/shared Types, Supabase client, and logic both apps use
supabase/ Migrations and edge functions
docs/ Feature specs, SQL notes, roadmap
All rights reserved. The code is public so people can see how it was built. Please don't reuse it in another app.