Tavotto
AI drew your research figure. Tavotto makes it publication-ready: edit matplotlib figures on a canvas, lay out in mm, check journal rules. Free, open source.
This is a paint tool that can be used to draw diagrams on top of photos.
DesignTypeScript · JavaScriptGitHub @LeighAtkinsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A web-based drawing and annotation tool for creating measurement documents, annotated images, and professional PDF exports.
npm install
npm start # Express server on http://localhost:3000
# or
npm run dev # Vite dev server with HMR
src/ ← Canonical source (TypeScript + legacy JS being migrated)
main.ts ← Single runtime entrypoint
modules/ ← Core managers (CanvasManager, ProjectManager, etc.)
features/ ← Feature modules (canvas, drawing, gallery, transform)
types/ ← TypeScript type definitions
services/ ← Business logic services
config/ ← Configuration (Supabase, etc.)
public/ ← Static assets only (images, icons, fonts — no app logic)
app.js ← Express server (local dev + Vercel serverless)
api/ ← Vercel serverless function entry points
worker/ ← Cloudflare Worker for AI features
supabase/ ← Database schema and migrations
tests/ ← Unit, integration, and visual regression tests
Vite bundles from src/main.ts. All application code lives in src/. Legacy JavaScript modules are imported through the build and are gradually being converted to TypeScript.
| Mode | Auth | Persistence | Output |
|---|---|---|---|
| Guest Quick Use | None | None | PNG/JPEG image download |
| Customer Export | None | Optional | PDF report + ZIP bundle |
| Power User | Supabase (planned) | Cloud | Project library with sharing controls |
Auth is behind the ENABLE_AUTH feature flag and is not yet implemented.
npm run lint # Lint src/
npm run lint:fix # Auto-fix lint issues
npm test # Run tests (Vitest)
npm run type-check # TypeScript checking
npm run validate # type-check + lint + test
npm run build # Production build
See DEPLOYMENT.md for deployment instructions and environment variable setup.
Copy .env.example to .env.development and fill in your values. See DEPLOYMENT.md for the complete list.
Required for AI features: AI_WORKER_URL, AI_WORKER_KEY
Required for cloud storage: Supabase and Cloudflare credentials (see .env.example)
ISC