Reading the repo
Opening the box…
Reading the repo
Opening the box…
How to install on Linux
Canvix — Free & open-source graphic design tool. A community-built Canva alternative with a drag-and-drop editor, templates, shapes, text, images & one-click export. Works on desktop, tablet & mobile.
Saved setup from 12 h ago
Will it work on Linux?
Heads-upBuilding it yourself? It also needs PostgreSQL and 1 setting in .env.
CONTRIBUTING.mdThanks for helping build the open-source Canva alternative! 🎨
git clone https://github.com/mir-ashiq/canvix.git
cd canvix
npm install
cp .env.example .env # then set DATABASE_URL (Supabase / Neon / local Postgres)
npm run db:setup # migrations + the 110-template seed, one command
npm run dev
npm run lintandnpm run typecheckmust pass before every commit. (bun works too —bun install,bun run dev— the lockfile is npm's.)
| Area | Files |
|---|---|
| New templates | src/lib/templates/collection-v08-*.ts (compose elements with the builder helpers in src/lib/templates/helpers.ts) |
| New fonts | src/lib/editor-utils.ts → FONTS + the Google Fonts link in src/app/layout.tsx |
| Stickers / graphics | src/lib/editor-utils.ts → STICKER_GROUPS, GRAPHICS |
| Canvas behavior | src/components/editor/canvas/ |
| Panels & toolbars | src/components/editor/panels/, src/components/editor/PropertiesBar.tsx |
| Export | src/components/editor/canvas/canvas-bridge.ts |
| API & data | src/app/api/, prisma/schema.prisma |
src/lib/templates/collection-v08-*.ts files.tx (text), sh (shape), ln (line), st (sticker), gr (graphic).slug, category (social | presentation | print | logo | thumbnail) and an accent color.bun run db:seed and restart the dev server.any unless unavoidable.Every pull request runs the CI workflow (.github/workflows/ci.yml):
| Check | What runs | When |
|---|---|---|
| lint-unit | npm ci → tsc --noEmit → eslint . → vitest run (316 unit tests, no database needed) | every pull request |
| e2e | the full Playwright browser suite (28 tests) against a real Postgres service container — migrations + template seed + next dev, all inside the job | merges to main, and on demand via Actions → CI → Run workflow |
Merges to main run both jobs, so nothing lands on main without the
browser suite either. The deploy pipelines (Vercel, Cloudflare Workers
Builds, Netlify) publish main directly — CI is the only test gate they
get, which is why it exists.
One-time setup for maintainers — make the gate binding. Branch protection cannot be enabled from a PR, so after merging the CI workflow:
main.lint-unit
(the picker lists it after the workflow's first run on a PR).e2e runs after the merge on main pushes by design (keeps PR feedback
fast); for risky PRs — UI, collab, export changes — run it pre-merge via
Actions → CI → Run workflow, or locally:
npm run db:setup && npx playwright test
feat/my-feature).npm run lint and npm run typecheck pass, and the lint-unit CI
check is green.Then run bash setup.sh. It stops at the first error and is safe to run again. Servers and tests aren't started; it lists them at the end. Read it first.
git clone https://github.com/mir-ashiq/canvix.git cd canvix
Node.js 22
# needs nvm: https://github.com/nvm-sh/nvm nvm install 22
cp .env.example .env.local
Needs: PostgreSQL (no compose file — install locally or run via Docker)
npm ci
npx prisma migrate dev
npm run dev
npm test
Prerequisites: Node.js 20+ (or Bun), and a PostgreSQL database — a free Supabase project is the easiest start (any other Postgres works too: Neon, RDS, Docker, local).
git clone https://github.com/mir-ashiq/canvix.git
cd canvix
npm install # or: bun install
# set up the database (get a connection string first — see below)
cp .env.example .env # then edit DATABASE_URL
npm run db:setup # migrations + 110 free templates, in one command
npm run dev # → http://localhost:3000
Getting your Supabase connection string: Supabase dashboard → Connect (or Project Settings → Database) → copy the URI. Both styles work out of the box — Canvix auto-applies the right flags:
| Style | Looks like | Notes |
|---|---|---|
| Transaction pooler (recommended) | …pooler.supabase.com:6543/postgres | IPv4-friendly; Canvix auto-adds pgbouncer=true&connection_limit=1 |
| Direct connection | db.<ref>.supabase.co:5432/postgres | IPv6-only on most plans — use it only if your host has an IPv6 route |
Replace [YOUR-PASSWORD] with your database password, and you're done. If
anything looks off later, open /api/health on your server — it checks
env → connectivity → migrations → seed and prints the exact fix.
Production build:
npm run build
npm run start
No reports for Linux yet.
GitManual AI Agent reads the 8 key files and writes a step-by-step guide for Linux. Once written, it's saved for everyone.