Własne aplikacje i fullstack

Wdróż dowolną aplikację przez git (także spoza katalogu), składaj fullstack z kilku części w jednym Boxie, albo zajrzyj jak działają szablony katalogu.

Saplo ma gotowe stacki w katalogu, ale możesz wdrożyć dowolną aplikację - także taką, której nie ma na liście - przez git push. Możesz też składać aplikacje fullstack z kilku części w jednym Boxie.

Aplikacja spoza katalogu (Twój własny kod)

Trzy drogi, od najprostszej:

  1. Node.js / framework + git - stwórz aplikację typu Node.js (generic) albo dowolny framework (Next, React, Vue...), podłącz repozytorium i rób git push. Saplo buduje i uruchamia Twój kod.
  2. Docker - aplikacja typu Docker. Wrzucasz własny docker-compose.yml, Saplo go uruchamia. Dowolny obraz, dowolny język.
  3. saplo.yaml - plik w repozytorium opisuje build i start (buildpack). Patrz Plik saplo.yaml.
# dowolne repo -> aplikacja na Saplo saplo create moja-apka --stack node saplo git connect # podlacz repo, kazdy push sie deployuje

Aplikacje fullstack (frontend + backend)

Fullstack (np. Next.js + Django, React + Django, Next.js + WordPress headless) to po prostu dwie aplikacje w tym samym Boxie, każda z własną subdomeną. Spinasz je zmienną środowiskową:

  1. Postaw backend (np. Django) - opcjonalnie z bazą (zaznacz ją w Połącz z bazą).
  2. Postaw frontend (np. Next.js).
  3. Na frontendzie ustaw zmienną wskazującą URL backendu:
saplo env set NEXT_PUBLIC_API_URL=https://moj-backend.saploapp.pl --app moj-frontend

Frontend woła backend po jego publicznym URL. Dla WordPress headless to samo: stawiasz WP, a frontend (Next/Nuxt) czyta jego REST API albo GraphQL.

Fullstack przez Claude (MCP)

Powiedz Claude'owi: "postaw mi fullstack: Django z Postgresem jako backend i Next.js jako frontend, spięte". Claude wykona kroki: utworzy bazę, backend z linkiem do bazy, frontend, i ustawi zmienną z adresem backendu. Wzorzec jest opisany w samym narzędziu MCP saplo_create_app.

Jak działają szablony katalogu (zaawansowane)

Każdy stack w katalogu to przepis - folder z dwoma plikami:

  • manifest.toml - deklaracja: nazwa, runtime (php/node/python), czy wystawia port, czy potrzebuje bazy/domeny, opcje konfiguracyjne (np. wybór wersji PHP), a dla baz sekcja [service].
  • install.sh - skrypt instalacyjny uruchamiany w Boxie (jako root). Dostaje zmienne SAPLO_APP_DIR, SAPLO_DOMAIN, SAPLO_PORT, SAPLO_DB_* i buduje aplikację.
# manifest.toml (skrot) [module] id = "react" name = "React" [runtime] needs = ["node", "nginx"] exposes_port = 0 # 0 = statyczny (nginx serwuje build), >0 = proces na porcie [needs] domain = true

Silnik na podstawie manifestu sam ustawia nginx (statyczny / proxy na port / php-fpm), domenę, SSL i pulę zasobów. Tworzenie własnych przepisów oraz katalog społecznościowy to kierunek na kolejne wydania - jeśli chcesz dorzucić stack, napisz do nas.

Wszystkie części fullstacka są w jednym Boxie i mogą gadać po localhost (frontend → backend → baza), a publicznie wystawiasz tyle subdomen, ile chcesz.