Stop renting software.

← All tools · design

Open source alternatives to Figma

Here are 2 self-hostable options – free to run on your own server.

penpot

★ 61.0kMPL-2.0
self-host: medium

penpot/penpot

excalidraw

★ 133.8kMIT
self-host: medium

excalidraw/excalidraw

Build it yourself with AI

Not realistic to clone; use Penpot.

Paste this prompt into Cursor, Claude Code, Codex or any coding agent to build a minimal self-hosted Figma clone, deployable with Docker on a VPS.

You are a senior full-stack engineer. Build a minimal, self-hosted clone of Figma (design) that I can run on my own VPS. Keep it small, production-sane, and easy to maintain.

## Goal
Replace my paid Figma subscription for a single person or small team. MVP only — no billing, no enterprise features.

## Core features (build exactly these)
1. infinite canvas with frames, shapes, text, images
2. selection, transform, layers panel
3. realtime multiplayer cursors (Yjs)
4. comments pinned to canvas
5. export PNG/SVG

## Stack
- Next.js (App Router, TypeScript) + Tailwind + shadcn/ui
- PostgreSQL with Drizzle ORM (migrations checked in)
- Auth: Better Auth (email + password, optional GitHub OAuth); every query scoped to the signed-in user/workspace
- Background jobs (if needed): pg-boss on the same Postgres
- File storage (if needed): S3-compatible (MinIO container)

## Data model (start here, extend only if required)
User, File, Page, Node, Comment
Use UUID primary keys, createdAt/updatedAt on every table, and foreign keys with sensible ON DELETE behavior.

## Deliverables
1. Working app with the features above and a clean, minimal UI
2. docker-compose.yml with app, postgres and Caddy (automatic HTTPS) — `docker compose up -d` must be all I run
3. .env.example documenting every variable; no secrets in code
4. Seed script with demo data
5. README: local dev, deploy on a fresh Ubuntu VPS (install Docker, set DNS A record, compose up), backups (pg_dump cron), and updating

## Rules
- Build in small steps; after each feature, run typecheck and the app, and fix errors before moving on
- Validate all input with zod; rate-limit public endpoints
- Write a few Playwright smoke tests for the main flow
- Ask me before adding any dependency beyond the stack above

For reference (study the approach, don't copy code): https://github.com/penpot/penpot, https://github.com/excalidraw/excalidraw

One self-hosted swap per week

A new SaaS teardown and its open-source replacement, every week. No spam.

We only use your email to send the SelfHostThis newsletter (stored with our email provider Resend, EU). Every email has a one-click unsubscribe link, and you can ask us to delete your data anytime. We use double opt-in. Datenschutz · Privacy policy