Pactown SaaS Platform - Executable Markdown platform for building and running applications with LLM integration, automated Podman Quadlet deployment, and multi-tenant isolation.
Project description
View
Generate
Download
App
Pactown - Executable Markdown SaaS Platform
AI Cost Tracking
- ๐ค LLM usage: $2.9123 (210 commits)
- ๐ค Human dev: ~$11892 (118.9h @ $100/h, 30min dedup)
Generated on 2026-05-20 using openrouter/qwen/qwen3-coder-next
Deploy URL: [app]{sep}[username].DOMAIN (domyลlnie sep = -, np. 3-tom-sapletta-com.pactown.com)
Platforma SaaS umoลผliwiajฤ ca uลผytkownikom tworzenie i uruchamianie aplikacji poprzez edytor Markdown z integracjฤ LLM (OpenRouter) i pลatnoลciami.
Quick Start
# 1. Sklonuj repo
git clone https://github.com/wronai/pactown-com.git
cd pactown-com
# 2. Skonfiguruj ลrodowisko
make config
# 3. Zainstaluj na serwerze VPS (Podman + Quadlet)
make install
# 4. Zainicjalizuj Traefik i ลrodowisko
make quadlet-init
# 5. Uruchom wszystkie serwisy
make up
# 6. Sprawdลบ status
make status
Wymagania Serwera
- VPS: 8GB RAM, 8 vCPU (np. Hetzner CX31 ~โฌ17/msc)
- OS: Ubuntu 22.04/24.04 lub Fedora 39+
- Domena: pactown.com z wildcard DNS (
*.pactown.com) - Porty: 80, 443
Dlaczego Podman Quadlet zamiast Docker Swarm?
| Cecha | Docker Swarm | Podman Quadlet |
|---|---|---|
| Daemonless | โ Wymaga dockerd | โ Bez demona |
| Rootless | โ ๏ธ Eksperymentalny | โ Natywny |
| Systemd integration | โ Osobne zarzฤ dzanie | โ Natywne |
| Security isolation | โ ๏ธ Shared daemon | โ Per-user namespaces |
| Auto-restart | โ | โ Via systemd |
| Memory footprint | ~100MB daemon | ~0MB (on-demand) |
| Multi-tenant | โ ๏ธ Labels | โ User namespaces |
Pactown wykorzystuje wewnฤtrzny moduล pactown.deploy.quadlet z peลnym wsparciem dla:
- Sanityzacji nazw, zmiennych, ลcieลผek (security)
- Generowania Traefik jako Quadlet
- Izolacji tenantรณw przez user namespaces
- Walidacji volume mounts
Architektura
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ pactown.com (Traefik Quadlet) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ *.pactown.com โ Wildcard SSL (Let's Encrypt) โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Web โ โ API โ โ Editor โ โ User Apps โ โ
โ โ :3000 โ โ :8000 โ โ :3001 โ โ :10000-20000 โ โ
โ โ Next.js โ โ FastAPI โ โ TipTap โ โ markpact โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ โ โ โ โ
โ [Quadlet] [Quadlet] [Quadlet] [Quadlet] โ
โ โ โ โ โ โ
โ โผ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ systemd user services (rootless containers) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PostgreSQL + Redis (Quadlet) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Waลผne elementy implementacji:
- [Auth (sesja)]
access_tokenjako httpOnly cookie (token nie jest przekazywany w URL i nie jest trzymany wlocalStorage). - [Runner status realtime] Dashboard korzysta z SSE (
GET /runner/status/stream) zamiast polling. - [Admin auth]
admin_tokenjako httpOnly cookie.
Struktura Projektu
pactown-com/
โโโ Makefile # Wszystkie komendy (make quadlet-*)
โโโ scripts/ # Skrypty wywoลywane przez Makefile
โ โโโ config.sh # Interaktywna konfiguracja
โ โโโ install.sh # Instalacja Podman
โ โโโ up.sh # Uruchamianie serwisรณw
โ โโโ dev.sh # Tryb development
โ โโโ test.sh # Runner testรณw
โ โโโ diag-remote.sh # Diagnostyka produkcji
โโโ quadlet/ # Pliki jednostek Quadlet
โโโ .env.example # Template konfiguracji
โโโ backend/
โ โโโ app/
โ โ โโโ main.py # FastAPI app
โ โ โโโ routers/auth.py # OAuth2 (Google, GitHub)
โ โ โโโ config.py # Pydantic Settings
โ โ โโโ ...
โ โโโ tests/
โโโ frontend/
โ โโโ src/
โ โโโ e2e/ # Testy Playwright
โ โ โโโ oauth.spec.ts # Testy OAuth
โ โโโ package.json
โโโ infra/scripts/ # Skrypty infrastruktury
โ โโโ diagnostics.sh # Peลna diagnostyka
โ โโโ init-quadlet.sh # Inicjalizacja Quadlet
โโโ docs/ # Dokumentacja
Komendy Makefile
| Komenda | Opis |
|---|---|
make config |
Interaktywna konfiguracja .env |
make install |
Instalacja Podman + zaleลผnoลci |
make dev |
Tryb development (docker-compose) |
make build |
Zbuduj obrazy localhost/pactown-api:latest i localhost/pactown-web:latest |
make pull |
Pobierz obrazy z registry i otaguj jako localhost/* |
make up |
Uruchom produkcjฤ (Quadlet) |
make down |
Zatrzymaj serwisy |
make restart |
Restart wszystkich serwisรณw |
make status |
Status serwisรณw |
make logs |
Logi serwisรณw |
make diag |
Diagnostyka systemu |
make diag-remote |
Diagnostyka produkcji (DNS, SSL) |
make test |
Testy API + frontend |
make test-oauth |
Testy OAuth (Playwright) |
make deploy |
Deploy produkcyjny |
Dokumentacja (repo)
docs/README.md(menu):./docs/README.md- CLI + mapowanie APIโshell (curl/make):
./docs/CLI_API.md - Produkcja (VPS): przykลady komend
make/pactowncom:./docs/CLI_API.md#produkcja-vps
Pactown Guard (pactown-guard)
pactown-guard to transparentny guard do diagnostyki VPS: uruchamiasz go rฤcznie i dostajesz interaktywny shell.
Szybkie uลผycie (z repo)
python3 infra/scripts/pactown_guard.py --prod
Po uruchomieniu zobaczysz podsumowanie i prompt:
pactown-guard>
Komendy w shellu
helpPokaลผ dostฤpne komendy.diagUruchom ponownie diagnostykฤ (infra/scripts/diagnostics.sh --json).suggestPokaลผ propozycje bezpiecznych akcji (bez wykonywania zmian).applyZastosuj proponowane akcje, ale zawsze pyta o potwierdzenie dla kaลผdej z nich.restart <service>Restart pojedynczej usลugisystemd --user(tylko z allowlisty; z potwierdzeniem).logs <service>Podejrzyj logijournalctl --user -u <service>.triageOtwรณrz sesjฤtmuxz logami (domyลlniepactown-triage).exit/quitWyjลcie.
Instalacja komendy pactown-guard (w PATH)
Po make install instalacja jest robiona automatycznie w trybie editable (pip --user -e .).
Jeลli chcesz to zrobiฤ rฤcznie:
pactown-guard install
Aktualizacja pactown-guard
Najproลciej:
pactown-guard update
Domyลlnie (gdy jesteล w repo) zrobi git pull + reinstalacjฤ -e.
Jeลli uruchamiasz poza repo, wykona update z PyPI.
Opcjonalny systemd timer (niezalecane jako domyลlne)
Guard jest projektowany jako narzฤdzie manualne. Jeลli chcesz uruchamiaฤ go okresowo:
make guard-init
make guard-enable-timer
make guard-status
Wyลฤ czenie timera:
make guard-disable
Publikacja paczki (PyPI)
make publish
Wymaga ustawionych poลwiadczeล (np. TWINE_USERNAME, TWINE_PASSWORD).
Funkcjonalnoลci (v0.1.8)
1. Social Login
- Google OAuth2 โ docs/AUTH.md
- GitHub OAuth2 โ docs/AUTH.md
- Auth0 (OIDC broker)
- Clerk (opcjonalny)
- Facebook OAuth2 (opcjonalnie)
2. Markdown Editor (TipTap)
- WYSIWYG editing
- Code blocks z syntax highlighting
-
markpact:*codeblocks - Live preview
3. LLM Integration (OpenRouter)
- Generowanie projektรณw z opisu
- Auto-fix bลฤdรณw runtime
- Chat z kontekstem projektu
- Wybรณr modelu LLM
- Darmowe modele (nemotron)
4. Pลatnoลci
- Stripe (karty, BLIK via P24)
- Tpay (natywne polskie pลatnoลci)
5. User Services
- Dynamiczne tworzenie subdomen
- Konfigurowalny separator subdomen (
SUBDOMAIN_SEPARATOR:-lub.) - Izolacja kontenerรณw
- Health checks
- SSE real-time runner status
6. Desktop & Mobile Builds
- Electron (AppImage, exe, dmg)
- Tauri, PyInstaller, PyQt
- Capacitor (Android/iOS)
- React Native, Flutter, Kivy
- Build artifacts z retencjฤ (max 3 per scope)
- Download artefaktรณw z UI
7. Infrastructure as Code (IaC)
-
pactown.sandbox.yamlโ specyfikacja runtime -
Dockerfileโ gotowy do produkcji -
docker-compose.yamlโ single-service compose - Web Preview mode (headless servers)
8. Marketplace / Examples
- DB-backed examples (seed z marketplace.ts)
- 20+ przykลadรณw z kategoriami i tagami
- Build z przykลadu online
- Publiczne API: GET /public/examples
9. Internationalization (i18n)
- 7 jฤzykรณw: PL, EN, DE, FR, ES, UK, RU
- Automatyczne wykrywanie locale
- Przeลฤ cznik jฤzyka w UI
10. Program Poleceล (Referrals)
- Unikalne linki polecajฤ ce
- Punkty za polecenia
- Wypลata od 100 PLN
11. Diagnostyka / zgลaszanie problemรณw
- Dashboard: synchronizacja stanu UI z parametrami URL
- Dashboard: ลlad dziaลaล uลผytkownika jako token
trace+trace_id - Dashboard: โZgลoล problemโ (modal) ze zrzutem ekranu
- Backend:
POST /users/me/issue-report
Changelog / Roadmap
Konfiguracja DNS
# Dodaj rekordy DNS dla pactown.com:
A @ โ <IP_SERWERA>
A * โ <IP_SERWERA>
AAAA @ โ <IPv6_SERWERA> (opcjonalnie)
AAAA * โ <IPv6_SERWERA> (opcjonalnie)
Dokumentacja
| Dokument | Opis |
|---|---|
| docs/AUTH.md | Konfiguracja OAuth (Google, GitHub, Clerk) |
| docs/IMPLEMENTATION.md | Szczegรณลy implementacji (cookies auth, SSE runner status, proxy, admin/public pages, cache env) |
| docs/CONFIGURATION.md | Peลna konfiguracja .env |
| docs/DEV_SETUP.md | Setup ลrodowiska dev |
| docs/SECURITY.md | Bezpieczeลstwo i best practices |
| docs/SERVICE_PROVIDER.md | Wymagania dla providera usลug / hostingu (pod skalowanie runnerรณw) |
| docs/IAC.md | Infrastructure as Code |
Licencja
2026 Softreck. Wszelkie prawa zastrzeลผone.
Ostatnia aktualizacja: Luty 2026
License
Licensed under Apache-2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pactown_guard-0.1.9.tar.gz.
File metadata
- Download URL: pactown_guard-0.1.9.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2a6acf0d27eafc0046589b282735d2efa0d9599a0c4c621d47fe151858fe284
|
|
| MD5 |
1e83d2985ea80f5ca9d918de749bde11
|
|
| BLAKE2b-256 |
9228ee7124a337d7c9bf854e3c55235815ffa25924810ac33c6590422d0bed3b
|
File details
Details for the file pactown_guard-0.1.9-py3-none-any.whl.
File metadata
- Download URL: pactown_guard-0.1.9-py3-none-any.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45132216e4b2dec295ea31270de3950b74d7b0ddb2f7ed7bec3286942a7f4bd6
|
|
| MD5 |
cdbeb920d82e56b8a84d25b1814b25d3
|
|
| BLAKE2b-256 |
0d915c6332bd190364cba638606f287c0745f96b4eda2ab8d7ec9603bcaf3908
|