Convert PNG, JPEG, and WebP images to clean SVG vectors. Self-hosted and fast.
A small monorepo with two parts:
- apps/web/ — SvelteKit frontend for upload, preview, and download.
- apps/api/ — FastAPI backend that does the actual vectorization with vtracer.
- ARCHITECTURE.md — data flow, component design, tech stack
- apps/web/README.md — frontend details
- apps/api/README.md — backend details
pnpm install
cd apps/api && uv sync && cd ../..
cp apps/web/.env.example apps/web/.envThe default API_BASE_URL=http://localhost:8000 works out of the box for local dev.
pnpm devThis runs both dev servers in parallel via Turborepo:
- Web: http://localhost:5173
- API: http://localhost:8000
docker compose up --build- Web UI: http://localhost:4173
- API: http://localhost:8000
Persistent volumes (api_data, api_logs) survive container restarts. Add -v to docker compose down to wipe them.
For production deployment notes (TLS, auth, volume backups), see ARCHITECTURE.md → Deployment.
| Command | Description |
|---|---|
pnpm dev |
Run both apps in development mode |
pnpm build |
Build both apps for production |
pnpm start |
Start the production builds |
pnpm format |
Format code (Prettier + Ruff) |
pnpm lint |
Lint code (ESLint + Ruff) |
pnpm typecheck |
Type-check both apps |
pnpm clean |
Clean .turbo caches and build artifacts |
MIT — Copyright (c) 2026 Harsh Thakur.