---
task_id: T-FEAT-MASA-APP-001
human_title: "MasaApp - web app z przepisami na mase i live skalowaniem kalorii"
agent_role: claude-code
priority: low
estimated_time: L
phase: design
due_date: 2026-99-99
executor: claude
model: claude-sonnet-4-6
prompt_file: ./T-FEAT-MASA-APP-001.prompt.md
code_zones: /Users/damian/Desktop/masa-app/ (nowy projekt poza Aivenue)
---

# MasaApp - task zaparkowany

## Geneza i cel biznesowy

Damian zobaczyl ebook PDF znajomego (Maciej Katarzyniak - "Przepisy na Mase dla niejadkow", 40 przepisow, warianty 2800-3500 kcal). Format: PDF -> tabelki -> "odejmij 10g platkow dla 2800 kcal". Statyczne, brak interakcji, brak filtrow, brak planera.

Damian: "po prostu mam lepsze narzedzia niz on". Robimy lepsza wersje jako konkurencyjny produkt - wlasny content (zero kopiowania przepisow Macka), wlasna marka, killer features ktorych PDF nigdy nie da.

PDF-y Macka sa w tym katalogu i sluza wylacznie jako benchmark:

- `Strona/Przepisy-na-mase-dla-niejadkow-A4.pdf` - oryginalny benchmark tresci/struktury
- `Strona/Przepisy-na-mase-dla-niejadkow-PREMIUM-redesign.pdf` - benchmark prezentacji/pakietu premium

Uzywamy ich tylko do wyciagniecia benchmarku typu: kategorie, zakresy kalorii, sposob tagowania, UX statycznego PDF-a, reguly skalowania gramatur. Nie kopiujemy przepisow, nazw, opisow, ukladu ani tekstu jako contentu produktu.

Status: task na przyszlosc. Nie odpalamy teraz. Damian chce miec zapisane co i jak, zeby wrocic jak bedzie czas / gdy ktorys inny projekt zakonczy sie i bedzie wolna sesja.

## Problem statement

Ebook PDF jako produkt:

- Statyczny - zeby zmienic gramatury z 3000 na 3500 kcal user musi w glowie dodawac 15g do kazdego skladnika
- Brak filtrow - szukasz "sniadanie po treningu" -> przewijasz 18 stron
- Brak planera tygodniowego - sam musisz ukladac 7 dni x 4 posilki, pilnowac makro
- Brak listy zakupow - agregujesz skladniki recznie z 28 przepisow
- Zero rozszerzalnosci - chcesz dodac przepis = wydac kolejny PDF
- Brak retencji - jednorazowa transakcja, zero recurring

Cala ta wartosc siedzi w web app i nikt jeszcze nie zrobil dobrego polskiego SaaSa pod ten use-case (target: ludzie na masie, niejadki, fitness poczatkujacy).

## Requirements

### Must-have (Faza 1 - MVP)

- Browser przepisow: lista z miniaturkami + szczegoly po kliknieciu
- 200+ unikalnych przepisow PL wygenerowanych przez Claude Sonnet (nie skopiowanych)
- 4 kategorie: sniadania / drugie sniadania / obiady / kolacje
- Live skalowanie kalorii - slider 2200-3800 kcal, kazda gramatura przelicza sie real-time (nie tabelka, slider)
- Filtry: kategoria, zakres kcal, tagi ("po treningu", "do pracy", "bez gotowania", "wege"), czas przygotowania
- Makro per przepis (B/T/W) liczone z bazy USDA / Fineli (lub generowane z LLM przy generation)
- Responsive (mobile-first - niejadki czytaja z telefona w sklepie)
- Bez logowania na razie (publiczny browser)
- Deploy na Vercel z custom domena

### Should-have (Faza 2 - Subskrypcja)

- Logowanie (Supabase Auth, magic link)
- Ulubione przepisy
- Plan tygodniowy auto-gen - user wpisuje "3000 kcal, 180g bialka, 5 dni z miesem", strona losuje 7 x 4 = 28 przepisow spelniajacych makro
- Lista zakupow - agreguje skladniki z planu tygodnia, eksport PDF / share na WhatsApp
- Stripe subskrypcja: 39 zl/mc albo 199 zl lifetime
- Free tier: browser + 3 przepisy w ulubionych. Pro: plan tygodniowy + lista zakupow + nieograniczone ulubione

### Nice-to-have (Faza 3 - Premium)

- Filmik per przepis 15-sec (AI gen - Sora / Veo lub aktualny najlepszy model w dniu reaktywacji)
- Tracking spozytych przepisow + integracja Apple Health (ile kcal/bialka zjedzono dzis)
- AI-coach pyta "jak ci poszlo z masa w tym tygodniu?" raz na 7 dni -> korekta planu
- Tryb "cut" (deficyt) i "maintenance" - ten sam silnik, inny target kcal
- Aplikacja iOS native (po sprawdzeniu trakcji na webie)
- Marketplace przepisow - userzy wrzucaja swoje, peer review, top 10 trafia do bazy

## Environment + Stack

- Working dir: `/Users/damian/Desktop/masa-app/` - nowy projekt, nie w Aivenue. Osobny git repo
- Frontend: Next.js 14+ (App Router) + TypeScript + Tailwind + shadcn/ui
- Backend Faza 1: zero - `data/recipes.json` w repo wystarczy na browser-only MVP (decyzja 2026-05-07)
- Backend Faza 2+: Supabase (Postgres + Auth + Storage) - wchodzi dopiero przy auth/ulubionych/planera/subskrypcji
- LLM: OpenRouter (klucz `OPENROUTER_API_KEY` w istniejacym `.env`, jesli nadal aktualne przy reaktywacji) - model do wyboru po bake-off
- Obrazki: Flux Schnell przez Replicate albo aktualny najlepszy tani model obrazow
- Platnosci: Stripe (test mode w Fazie 2)
- Deploy: Vercel (free tier do walidacji)
- Domena: poddomena Aivenue, np. `masa.aivenue.pl`, latwa do przerzucenia na wlasna domene po walidacji
- Analytics: Plausible albo Vercel Analytics
- Bench PDF-y: lokalnie w `Strona/`, patrz sekcja "Geneza i cel biznesowy"

## Deliverables

### Faza 0 (reaktywacja taska)

1. Potwierdzic z Damianem: "ruszamy MasaApp".
2. Wyciagnac benchmark z PDF-ow do `BENCHMARK.md`:
   - struktura kategorii
   - zakresy kalorii
   - typowe tagi/funkcje posilkow
   - reguly skalowania gramatur
   - obserwacje UX, bez przepisywania contentu
3. Zrobic bake-off LLM: 20 sample przepisow z 2-3 modeli, Damian ocenia smak/spojnosc/realnosc.
4. Dopiero po wyborze modelu scaffoldowac repo `masa-app/`.

### Faza 1 (MVP - wymagane do startu)

1. Repo `masa-app/` - Next.js setup, Tailwind, shadcn, ESLint + Prettier, README z instrukcja uruchomienia
2. `scripts/generate-recipes.ts` - generation pipeline:
   - input: kategorie x cele kaloryczne x tagi (definicje w `data/categories.json`)
   - output: `data/recipes.json` - 200 przepisow z polami: `id`, `title`, `category`, `base_kcal`, `macro {B,T,W}`, `ingredients [{name, base_grams, base_kcal, base_macro}]`, `steps`, `tags`, `prep_time_min`, `image_url`
   - kazdy przepis tagowany kategoria + 2-3 tagami funkcyjnymi
   - walidacja: makro per przepis musi sie zgadzac z suma makro ze skladnikow (tolerancja +/-5%)
3. UI lista przepisow - `app/page.tsx` + `components/RecipeCard.tsx` + `components/Filters.tsx`:
   - grid kart z miniaturka, tytulem, kcal, makro
   - sticky filters sidebar (mobile: drawer)
   - filtry: kategoria, slider kcal, multi-select tagi, slider czasu prep
4. UI szczegoly przepisu - `app/recipes/[id]/page.tsx`:
   - skladniki + kroki
   - slider kalorii gora strony (2200-3800 kcal, default 3000) - gramatury i makro przeliczaja sie live
   - tagi i czas prep
5. Deploy Vercel - preview deploy dziala, custom domena po decyzji Damiana
6. Commit + push - repo na GitHub `masa-app` (osobny od `aivenue`)

### Faza 2 (Subskrypcja - po walidacji Fazy 1)

1. Supabase Auth + magic link login
2. Tabele: `users`, `favorites`, `weekly_plans`, `subscriptions`
3. Plan tygodniowy generator - `app/plan/page.tsx` + `lib/plan-generator.ts`:
   - user input: target kcal, target bialko, dni z miesem, dni bez gotowania
   - algorytm: knapsack-like dobor 28 przepisow (7 dni x 4) by suma kcal/bialka per dzien ~= target
   - output: tabelka 7 x 4 z mozliwoscia zamiany pojedynczego przepisu
4. Lista zakupow - `app/plan/shopping-list/page.tsx`:
   - agregacja skladnikow z planu tygodnia
   - eksport PDF (jspdf) + share link (Supabase Storage)
5. Stripe subskrypcja - `lib/stripe.ts`:
   - pricing page (`app/pricing/page.tsx`)
   - checkout flow
   - webhook -> update `users.subscription_status`
   - Pro tier feature gates

### Faza 3 (Premium - po walidacji Fazy 2 z >= 50 placacymi userami)

1. Filmik per przepis (AI gen pipeline `scripts/generate-videos.ts`)
2. Tracking spozytych przepisow (kalkulator dziennego spozycia)
3. AI-coach (cron weekly check-in z OpenRouter)
4. Tryb cut/maintenance - drobny refactor planera

## Git commit messages (PL)

- `feat(masa): setup Next.js + shadcn`
- `feat(masa): generation pipeline 200 przepisow`
- `feat(masa): UI browser z live skalowaniem kalorii`
- `feat(masa): filtry przepisow i widok szczegolow`
- `feat(masa): planner tygodniowy i lista zakupow`

## Definition of Done

### Faza 1

- [ ] Repo `masa-app` na GitHub, dziala lokalnie `npm run dev`
- [ ] `data/recipes.json` zawiera >=200 przepisow, walidacja makro przechodzi (`npm run validate`)
- [ ] Browser na produkcji (Vercel deploy URL dziala)
- [ ] Slider kalorii skaluje gramatury live (manual test: 3000 -> 3500, np. "120g makaronu" -> "140g")
- [ ] Filtry dzialaja (manual test: kategoria=obiady + tag="po treningu")
- [ ] Mobile responsive (DevTools test 375px)
- [ ] `CLAUDE.md` w `masa-app/` wyjasnia stack i komendy
- [ ] Commit + push na origin

### Faza 2

- [ ] Supabase Auth dziala (magic link na email)
- [ ] Plan tygodniowy generuje 28 przepisow spelniajacych target +/-10% kcal/bialka per dzien
- [ ] Lista zakupow eksportuje PDF
- [ ] Stripe test checkout przechodzi (test card 4242)
- [ ] Pro feature gates blokuja free userow

### Faza 3

- [ ] Filmiki dla 200 przepisow wygenerowane i zhostowane
- [ ] Tracking dzienny dziala
- [ ] AI-coach wysyla weekly check-in

## Risks i mitigacje

| Ryzyko | Prawdopodobienstwo | Mitigacja |
|---|---:|---|
| Generation 200 przepisow daje slabej jakosci output (powtorki, niejadalne kombinacje) | medium | Bake-off: wygeneruj 20 sample z 2-3 modeli, Damian ocenia, wybiera najlepszy jakosciowo/kosztowo |
| Skalowanie liniowe gramatur daje absurdy (np. "0.3 jajka") | high | Reguly: jajka/bajgle/tortille zaokraglane do calosci, dodatki tluszczowe +/-5g, bazy weglowodanowe +/-10g |
| Stripe nie obsluzy polskiego BLIK | low | Stripe z kartami wystarczy do MVP platnosci; BLIK/Przelewy24 jako Faza 2.5 jesli userzy chca |
| Konkurencja ma lepszy content | medium | Po Fazie 1 sprawdzic top 10 polskich appek fitness na App Store + Google Play i oceniac trakcje, nie sam fakt istnienia |
| Maciek sie obrazi, ze robisz konkurencje | low | Zero contentu skopiowanego, wlasna marka, wlasne przepisy. Damian zna sytuacje osobiscie |

## Out of scope

- App native iOS / Android - dopiero po walidacji web
- Marketplace user-generated recipes - pozniejszy osobny task
- Integracja z dietetykiem (consult slot booking) - osobny task jesli popyt
- Zakupy online (Frisco / Carrefour API) - pozniejsza faza
- Tlumaczenie na EN - najpierw walidacja PL market

## Decisions log

- 2026-05-07 - task zaparkowany jako low-priority. Konkurencyjny produkt do ebooka Macka, wlasny content, zero kopiowania.
- 2026-05-07 - domena: poddomena Aivenue (`masa.aivenue.pl` lub pokrewna). Powod: produkt nie dla Aivenue core, latwo do przerzucenia na wlasna domene gdy sie zwaliduje.
- 2026-05-07 - stack Faza 1: bez Supabase. JSON file w repo + Next.js static = browser-only MVP. Supabase wchodzi dopiero w Fazie 2.
- 2026-05-07 - generation 200 przepisow wstrzymane. Przed odpaleniem zrobic bake-off Sonnet vs MiniMax / inny aktualny model na 20 sample.
- 2026-05-07 - PDF-y sa juz w `Strona/`. Sesja po reactivation wyciaga benchmark do `BENCHMARK.md`.
- 2026-05-07 - status: parked. Reactivation trigger = Damian explicite mowi "ruszamy MasaApp".

## Related tasks

Brak na razie - standalone projekt poza Aivenue.

## Prompt do wklejenia do nowej sesji

Patrz: [`./T-FEAT-MASA-APP-001.prompt.md`](./T-FEAT-MASA-APP-001.prompt.md)
