Files
drawit/README.md
T
2026-06-17 10:15:27 -05:00

63 lines
2.1 KiB
Markdown

# 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
```bash
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](https://litestream.io) 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](./LICENSE).