2026-06-29 09:40:43 -05:00
2026-06-17 10:09:33 -05:00
2026-06-29 09:40:43 -05:00
2026-06-29 09:32:15 -05:00
2026-06-18 09:55:40 -05:00
2026-06-18 10:18:57 -05:00
2026-06-17 07:36:51 -05:00
2026-06-20 05:16:30 -05:00
2026-06-29 09:32:15 -05:00
2026-06-17 10:15:27 -05:00

DrawIt 🐟🎨

A free and open-source web app that teaches kids how to draw — one simple shape at a time.

Mobile-first (built for iPads and tablets), privacy-first (no data collection, no trackers, no analytics), and self-hostable. Learners progress through levels, earn shareable badges, and unlock printable award certificates (PDF).

Ability levels: Early Beginner → Beginner → Learner → Advanced Learned → Superb. First lesson: Early Beginner → Level 1 → Draw a Fish.

Quick start

npm install
cp .env.example .env.local   # then edit SMTP settings + APP_URL
npm run dev                  # http://localhost:3000

The first account you register becomes the Admin. Everyone else defaults to Learner. Accounts stay pending until the email link is confirmed.

Email (account confirmation)

Set real SMTP credentials in .env.local:

APP_URL=http://localhost:3000
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-user
SMTP_PASS=your-pass
SMTP_FROM="DrawIt <no-reply@example.com>"
SESSION_SECRET=change-me-to-a-long-random-string

If SMTP isn't configured, confirmation links are printed to the server console so you can still test locally.

Scripts

  • npm run dev — development server
  • npm run build — production build
  • npm start — run the production build
  • npm run typecheck — TypeScript check

Privacy

DrawIt stores only what an account needs (email, username, hashed password, learning progress) and keeps it in a local SQLite file on the server you run. There are no analytics, trackers, ad scripts, fingerprinting, or third-party runtime requests. One essential httpOnly session cookie is used for login — nothing else.

Data & backups

Progress lives in a single SQLite database (data/drawit.db) with WAL journaling enabled. For off-box backups, point Litestream at the DB file (see litestream.yml). (wal-g is a Postgres/MySQL tool and does not apply to SQLite; Litestream is the SQLite equivalent.)

License

See LICENSE.

S
Description
Kids web app to learn how to draw pictures
https://drawit.dou.bet
Readme MIT
1.3 MiB
Languages
TypeScript 98.2%
CSS 1.5%
Dockerfile 0.2%
JavaScript 0.1%