Maleku System is a monorepo containing a FastAPI (Python 3.11+) backend and a Nuxt.js 3 (Vue 3 + TypeScript) frontend. This guide walks you through every step needed to get both services running locally — either through Docker Compose for a zero-configuration start, or natively for the fastest possible feedback loop during active development.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/IvanchoDev89/maleku-system/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before cloning the repository, make sure the following tools are available on your machine:| Tool | Minimum version | Notes |
|---|---|---|
| Git | 2.30+ | Required for all workflows |
| Docker | 20.10+ | Required for Docker-based setup |
| Docker Compose | V2 (docker compose) | Bundled with Docker Desktop |
| Node.js | 18+ | Required for frontend development |
| Python | 3.11+ | Required for backend development |
| Make | Any | Optional — provides convenience targets |
Fork and Clone
Start by forking the repository to your own GitHub account, then clone your fork locally and register the canonical repo as theupstream remote so you can keep your fork in sync.
git pull upstream main to fetch the latest changes from the canonical repository before starting new work.
Option 1: Docker
Docker Compose is the recommended starting point because it provisions every dependency — PostgreSQL, Redis, MailHog, and both application services — with a single command and matches the configuration used in CI.| Service | URL |
|---|---|
| Frontend (Nuxt SSR) | http://localhost:3000 |
| Backend (FastAPI) | http://localhost:8000 |
| Interactive API docs (Swagger) | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
Option 2: Native Development
If you want the fastest possible hot-reload cycle, run both services directly on your machine.- Backend
- Frontend
The backend is a standard Python package. Create a virtual environment, install dependencies from Key packages installed by
Next, configure the environment and start the server:The API is now live at
requirements.txt, configure your .env, then start the development server.requirements.txt include:| Package | Version |
|---|---|
fastapi | ≥0.115.0 |
uvicorn[standard] | ≥0.34.0 |
sqlalchemy | ≥2.0.36 (async) |
asyncpg | ≥0.30.0 |
alembic | ≥1.14.0 |
pydantic | ≥2.10.0 (v2) |
pydantic-settings | ≥2.7.0 |
PyJWT | ≥2.10.0 |
redis | ≥5.2.0 |
stripe | ≥11.0.0 |
sentry-sdk | ≥2.20.0 |
pytest | ≥8.3.0 |
pytest-asyncio | ≥0.25.0 |
http://localhost:8000. Any change to a .py file triggers an automatic reload.You can also use the make convenience target from the repository root:Pre-commit Hooks
Maleku System uses pre-commit to enforce code quality checks before every commit. Install the hooks once after cloning:.pre-commit-config.yaml and run automatically on every git commit:
Running Tests
Backend
Backend tests usepytest with pytest-asyncio for async endpoint testing. A lightweight aiosqlite database is used in-process so no external PostgreSQL instance is required for the unit test suite.
Frontend
Frontend tests use Vitest with@vue/test-utils and happy-dom as the environment.
E2E Tests
End-to-end tests are powered by Playwright and configured atplaywright.config.ts in the repository root. Tests live under the e2e/ directory and run against three browser targets: Chromium (Desktop Chrome), Firefox, and Mobile Chrome (Pixel 5).
The Playwright config uses http://localhost:3000 as baseURL and automatically starts the Nuxt dev server (or production build in CI) as a webServer:
2 and workers to 1 to reduce flakiness. Locally, tests run fullyParallel with no retries for speed.
Playwright browsers must be installed before first use. Run
npx playwright install from the repository root to download Chromium, Firefox, and the mobile Chrome emulator.