# YakPanel

YakPanel is a web hosting control panel for Linux servers. This folder holds **product and engineering decisions** for yakpanel.com. The reference application codebase lives under [`../YakPanel-master/YakPanel-server/`](../YakPanel-master/YakPanel-server/). Upstream attribution for the legacy tree is in [`../YakPanel-master/NOTICE`](../YakPanel-master/NOTICE).

## Baseline technology decision (2026)

**Extend the existing YakPanel-server stack; do not start a greenfield Go backend for v1.**

| Layer | Choice | Rationale |
| --- | --- | --- |
| API | **FastAPI** + Pydantic | Strong fit for subprocess orchestration, async I/O, OpenAPI, matches common panel implementations. |
| UI | **React 18 + Vite + TypeScript + Tailwind** | Mature ecosystem for complex admin UIs; already implemented in **YakPanel-server**. |
| Jobs | **Celery + Redis** (or simplify later to RQ/Arq) | Long installs, backups, and SSL need out-of-band workers. |
| Panel DB | **SQLite** (single server) → **PostgreSQL** if multi-node or SaaS | Start simple; migrate when tenancy or clustering requires it. |
| Real-time | **WebSockets** | Terminal streaming and live metrics. |

**When to reconsider Go:** only if the team prioritizes a single static binary and minimal runtime dependencies over Python’s admin-script ecosystem—in that case keep the same React SPA and reimplement the API.

**Related docs**

- [Security and privilege model](docs/security-model.md)
- [Distribution and installation](docs/distribution.md)
