StoryForge
Fullstack'owa platforma do pisania wspierana przez AI
Monorepo Next.js 16 + NestJS 11 + PostgreSQL — nowoczesne praktyki, TypeScript strict, CI/CD, Docker, testy automatyczne.
Kod źródłowy dostępny na życzenie
Wypróbuj aplikacjęStack technologiczny
Nowoczesne technologie i sprawdzone wzorce architektoniczne
- Next.js 16 (App Router)
- React 19
- TypeScript 5 (strict)
- Tailwind CSS v4
- shadcn/ui + Radix UI
- TanStack React Query v5
- Zustand v5
- next-intl (PL/EN)
- @dnd-kit (drag & drop)
- AI SDK gateway (Gemini)
- Sentry
- NestJS 11
- TypeORM
- PostgreSQL 16
- pgvector (wyszukiwanie wektorowe)
- JWT + Passport.js
- bcrypt
- class-validator
- Swagger / OpenAPI
- Sentry
- Jest 30 + Supertest (87 unit + 75 E2E testów, ~56% pokrycia)
- Turborepo (monorepo)
- Docker (multi-stage builds)
- GitHub Actions CI/CD
- Caddy (reverse proxy, auto-TLS)
- VPS deployment
- GHCR (container registry)
- Shared packages (ESLint, TS, Prettier, Sentry)
Zaimplementowane funkcjonalności
Działające funkcje dostępne w aktualnej wersji aplikacji
Uwierzytelnianie JWT
Rejestracja, logowanie, tokeny JWT, hashowanie haseł z bcrypt.
Zarządzanie książkami
CRUD, publikowanie/cofanie, statusy, gatunki literackie.
Edytor rozdziałów
Auto-save co 2s, licznik słów, status zapisu w czasie rzeczywistym.
Drag & drop
Zmiana kolejności rozdziałów z optymistycznym UI (@dnd-kit).
Dwujęzyczność
Pełna obsługa PL/EN z next-intl, automatyczna detekcja.
Biblioteka publiczna
Przeglądanie opublikowanych książek bez konieczności logowania.
Kontrola dostępu
Ownership validation, OptionalJwtAuthGuard, zabezpieczenia endpointów.
Swagger / API Docs
Interaktywna dokumentacja API z autoryzacjÄ… Bearer token.
Testy automatyczne
87 unit + 75 E2E testów, ~56% pokrycia kodu w backendzie.
Monitoring błędów
Sentry z profilowaniem wydajności i breadcrumbs we frontendzie i backendzie.
Baza wektorowa (pgvector)
Wyszukiwanie semantyczne z indeksem HNSW i embeddingami 768-wymiarowymi.
RAG Pipeline
Chunkowanie tekstu, generowanie embeddingów, wyszukiwanie kontekstu całej książki.
Integracja z LLM
Google Gemini (AI SDK gateway) w warstwie BFF, backend bez zależności AI.
Streaming AI
Odpowiedzi LLM w czasie rzeczywistym przez Server-Sent Events.
Architektura systemu
Przejrzysta separacja odpowiedzialności i wzorzec BFF
Przeglądarka ──► Frontend (Next.js, :3000)
├── Komponenty UI (React)
└── Warstwa AI BFF (app/api/ai/*) ──► Gemini / OpenAI
│
â–¼
Backend (NestJS, :3001) ──► PostgreSQL + pgvector (:5432)
CRUD: Książki, Rozdziały, Chunki, AutoryzacjaKluczowe decyzje
- BFF pattern — logika AI we frontendzie (Vercel AI SDK), backend to czysty CRUD bez zależności od LLM
- Monorepo z Turborepo — wspólne paczki (ESLint, TypeScript, Prettier, Sentry), zoptymalizowane buildy
- Docker multi-stage builds — non-root użytkownik, health checks, zoptymalizowane warstwy
- Caddy — auto-HTTPS, reverse proxy, security headers, przekierowanie www
Planowane funkcjonalności
Kolejne kroki w rozwoju projektu
- W planachAnaliza stylu tekstu
- W planachEdytor WYSIWYG (Tiptap / Lexical)
- W planachMigracje bazy danych (produkcja)
StoryForge jest projektem w aktywnej fazie rozwoju. Aplikacja może zawierać błędy, a część funkcjonalności jest jeszcze w trakcie implementacji. Projekt służy jako demonstracja umiejętności technicznych i podejścia do tworzenia oprogramowania.