Skip to main content

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 img.png

Generate img.png

Download img_1.png

App img_2.png

Pactown - Executable Markdown SaaS Platform

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • ๐Ÿค– 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.

img_1.png

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_token jako httpOnly cookie (token nie jest przekazywany w URL i nie jest trzymany w localStorage).
  • [Runner status realtime] Dashboard korzysta z SSE (GET /runner/status/stream) zamiast polling.
  • [Admin auth] admin_token jako 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

  • help Pokaลผ dostฤ™pne komendy.
  • diag Uruchom ponownie diagnostykฤ™ (infra/scripts/diagnostics.sh --json).
  • suggest Pokaลผ propozycje bezpiecznych akcji (bez wykonywania zmian).
  • apply Zastosuj proponowane akcje, ale zawsze pyta o potwierdzenie dla kaลผdej z nich.
  • restart <service> Restart pojedynczej usล‚ugi systemd --user (tylko z allowlisty; z potwierdzeniem).
  • logs <service> Podejrzyj logi journalctl --user -u <service>.
  • triage Otwรณrz sesjฤ™ tmux z logami (domyล›lnie pactown-triage).
  • exit / quit Wyjล›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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pactown_guard-0.1.9.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pactown_guard-0.1.9-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

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

Hashes for pactown_guard-0.1.9.tar.gz
Algorithm Hash digest
SHA256 f2a6acf0d27eafc0046589b282735d2efa0d9599a0c4c621d47fe151858fe284
MD5 1e83d2985ea80f5ca9d918de749bde11
BLAKE2b-256 9228ee7124a337d7c9bf854e3c55235815ffa25924810ac33c6590422d0bed3b

See more details on using hashes here.

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

Hashes for pactown_guard-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 45132216e4b2dec295ea31270de3950b74d7b0ddb2f7ed7bec3286942a7f4bd6
MD5 cdbeb920d82e56b8a84d25b1814b25d3
BLAKE2b-256 0d915c6332bd190364cba638606f287c0745f96b4eda2ab8d7ec9603bcaf3908

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page