Musimy opracować aplikację według poniższego TŻ, będziemy pracować etapami (zobacz mapę drogową poniżej), teraz musimy wybrać ostateczną kwotę, za którą zrealizujesz cały system od początku do końca, a także muszę wybrać wykonawcę, będziemy pracować przez sejf, proponujcie budżety i przypadki.
Załączyłem szkic projektu, od którego zaczniemy (to jest punkt odniesienia dla rozwoju od GPT)
Co otrzymuje klient (wynik w ≤ 1 minutę)
Własna mini-aplikacja (PWA) pod osobną subdomeną w formie u123-abc.myapps.com (na początku można myapps.com/deploy/slug).
Naprawdę przydatne klasy (od prostych do „średnio-skomplikowanych”, ale bez backendu):
To-Do / Menedżer zadań z sekcjami i priorytetami
Tracker nawyków/wydatków z lokalną statystyką (wykresy)
Kalkulatory według własnych formuł (FOPO/wszystkie wyrażenia)
Mini-CRM (kontakty + notatki)
Personalizowany pulpit (widgety: notatki, timer, pogoda)
Unikalizacja „pod siebie”: własne pola, własne formuły, własne filtry/logika — nie „szablon”, a własne narzędzie.
Dostęp offline (PWA + IndexedDB), eksport/import JSON, historia wersji i szybkie edycje przez czat.
Jak to działa (przepływ)
Użytkownik widzi reklamę → wchodzi do bota Telegram → /start.
Pisze zadanie: „Zrób kalkulator według mojej formuły X z stroną wyników”.
Bot → AI (GPT-5) generuje zestaw plików (HTML/JS/CSS + manifest.json + service-worker.js) ściśle według schematu (Structured Outputs) i, przy poprawkach, punktowymi łatkami (function/tool-calling). platform.openai.com+1
Budowniczy zapisuje pliki, wdraża statykę → przekazuje link.
Użytkownik otwiera i instaluje jako aplikację (PWA).
Każda nowa replikacja „Dodaj widget/logo/formułę/timer” → przegenerowanie i wdrożenie nowej wersji.
Na życzenie otwiera Mini WebApp (wbudowany panel) z bota — do list projektów i „szybkich” edycji. Telegram WebApp wysyła dane z powrotem do bota przez wbudowane mechaniki (initData/sendData). core.telegram.org
Architektura (minimum dla żywego MVP)
Interfejsy
Bot Telegram — główny UI (dialogi, tworzenie/edycje, lista projektów). Dostarczanie aktualizacji: albo long polling, albo webhooks (dowolny z oficjalnie wspieranych sposobów). core.telegram.org+1
Telegram Mini WebApp — lekki panel sterowania (lista projektów, zmiana nazwy, „przegeneruj”, podgląd). Autoryzacja przez initData. core.telegram.org
PWA projektów — statyczne aplikacje, hostowane i przekazywane przez CDN.
Serwer (Node.js + TS)
API-brama: REST endpointy /projects, /generate, /edit, /versions, /deploy.
Usługa kodogeneracji (AI): wywołuje OpenAI Responses API z Structured Outputs i function/tool-calling (ściśle określone schematy JSON planów i łatek). Reutersplatform.openai.com+1
Budowniczy: zbiera/waliduje statykę (Vite/React lub czysty HTML/JS), pakuje artefakt.
Usługa wdrożeniowa: umieszcza artefakt w magazynie i przekazuje URL; później — automatycznie podnosi CNAME subdomenę przez Cloudflare-API.
Magazyny:
meta (users/projects/versions/logs) — SQLite → Postgres przy wzroście,
pliki/artefakty — lokalnie → R2/S3 przy wzroście,
cache/kolejki — Redis/BullMQ (asynchroniczne budowy).
Serwer statyczny: Express dla /deploy/<slug> → później przenosimy na Cloudflare Pages/R2 (CDN).
Domena i DNS
Dane i schematy (uproszczone)
users: id, tg_id, username, plan, created_at
projects: id, user_id, slug, title, last_url, created_at, updated_at
versions: id, project_id, number, summary, created_at
files: id, project_id, path, storage_key, sha256, created_at
builds: id, project_id, version_id, status, logs_url, artifact_key, created_at
events (audyt/metryki): user_id, project_id, type, meta, ts
conversations: powiązanie replik z wersjami (przezroczysty ślad poprawek)
API (minimalny kontur)
POST /projects → utworzyć projekt
GET /projects → lista projektów użytkownika
POST /projects/:id/generate → początkowe tworzenie według promptu
POST /projects/:id/edit → wtórne poprawki (punktowe łatki)
GET /projects/:id/versions → lista wersji
POST /projects/:id/rollback → cofnięcie
POST /projects/:id/build → ręczne zbudowanie
POST /projects/:id/deploy → wdrożyć i uzyskać URL
Warstwa AI (solidna generacja i poprawki)
Structured Outputs: zmuszamy model do ściśle zwrócenia PLAN według schematu JSON: jakie pliki stworzyć/poprawić/usunąć i dlaczego. platform.openai.comopenai.com
Wywoływanie funkcji/narzędzi: narzędzia read_file, apply_patch(unified diff z base_sha), create_file, delete_file, pwa_scaffold, run_build, deploy_static. Model najpierw planuje, potem wywołuje narzędzia, następnie sprawdza budowę i dopiero potem odpowiada użytkownikowi. platform.openai.com
Relewantny kontekst: zamiast „całego projektu” dajemy drzewko + potrzebne kawałki (szybko i tanio).
Łatki zamiast przegenerowania: wtórne zapytania — mikro-diff w odpowiedni plik (zbyt duże zmiany są zabronione polityką).
Formuły/zasady: dla FOPO i innych — w kodzie dodajemy mini-silnik wyrażeń (ograniczony, bez eval), aby klient mógł zmieniać formuły w jednym miejscu (JSON lub tokens.ts).
Ograniczenia bezpieczeństwa: operacje tylko w /workspace/{projectId}, rozmiar plików/łatek ograniczamy, base_sha — obowiązkowy, cofnięcia i dziennik.
PWA i dane
Archiwum projektu:
telegram-codegen-mvp-updated/
│── package.json # zależności, skrypty (start, dev, build, serve, cf:dns:create itd.)
│── tsconfig.json # konfiguracja TypeScript
│── .env.example # przykład zmiennych środowiskowych (TELEGRAM_BOT_TOKEN, OPENAI_API_KEY, PUBLIC_BASE_URL itd.)
│── README.md # instrukcja uruchomienia i opis projektu
│
├── src/ # źródła TypeScript
│ ├── bot.ts # Bot Telegram (Telegraf): tworzenie projektów, edycje, wydawanie linków
│ ├── server.ts # Express REST API + wydawanie statyki (deploy + webapp)
│ ├── db.ts # SQLite: users, projects, versions, conversations
│ ├── config.ts # ładowanie .env i zmiennych globalnych
│ ├── openai.ts # integracja z OpenAI Responses API (Structured Outputs → pliki)
│ ├── schemas.ts # schematy JSON (PLAN/PATCH dla AI)
│ ├── tools.ts # narzędzia: read/create/patch/delete, run_build, deploy_static, pwa_scaffold
│ └── deploy.ts # pomocnicze wdrożenie plików (slug, url)
│
├── webapp/ # Mini WebApp (panel sterowania)
│ └── index.html # prosty panel: wprowadzenie TG ID → lista projektów (nazwy + linki)
│
├── scripts/ # pomocnicze narzędzia
│ ├── cf-dns-create.mjs # tworzenie subdomen przez Cloudflare API
│ └── serve-webapp.mjs # skrypt zastępczy do uruchomienia webapp
│
├── cloudflare/
│ └── README.md # wyjaśnienie dotyczące pracy z Cloudflare DNS
│
└── data/ # robocza folder (tworzony w czasie działania)
├── app.db # baza SQLite
├── workspace/ # robocza katalog projektów (źródła plików)
├── artifacts/ # zbudowane wersje (kopie workspace)
└── deployments/ # wdrożone wersje (przekazywane przez Express lub CDN)
⚡ Logika:
Bot (src/bot.ts) — punkt wejścia dla użytkownika, tworzy projekt, przyjmuje zapytania, wywołuje OpenAI, wdraża i wydaje link.
OpenAI (src/openai.ts) — otrzymuje od modelu PLAN (JSON) i stosuje go przez tools.ts.
Narzędzia (src/tools.ts) — zestaw dozwolonych operacji (tworzenie pliku, łatanie, budowanie, wdrażanie).
Serwer (src/server.ts) — REST API dla integracji + wydaje /deploy/* i /webapp/.
Mini WebApp (webapp/index.html) — szybki UI w Telegramie (lista projektów i otwieranie linków).
Skrypt Cloudflare — pozwala nadać każdemu projektowi swoją subdomenę w formie u123-abc123.myapps.com.