organize + pin snippets
public sharing +
/publicdiscoveryfast tag search + themes
magic link auth
AI assistant (improve, refactor, debug, explain)
optional AI search, auto-tags, docs
built-in runner (
py,cpp,txt,md)stats, metadata + flexible copy modes
next.js • typescript • tailwind • shadcn/ui
supabase (postgres + auth)
shiki • codemirror
ai: openai • anthropic • gemini • ollama • openrouter
npm install
npm run dev
2. create `.env.local````envNEXT_PUBLIC_SUPABASE_URL=your-project-urlNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-publishable-keyNEXT_PUBLIC_APP_URL=https://your-production-domain.comoptional ai:
OPENAI_API_KEY=ANTHROPIC_API_KEY=GEMINI_API_KEY=OPENROUTER_API_KEY=OPENAI_COMPATIBLE_API_KEY=OLLAMA_BASE_URL=http://localhost:11434# optional: allow non-local ollama host (off by default for safety)SNIPS_AI_ALLOW_REMOTE_OLLAMA=0# optional: enable dev debug panel for a specific account (dev only)NEXT_PUBLIC_DEV_OWNER_EMAIL=# optional server execution sandbox config (not used by default free mode)SNIPS_EXEC_PROVIDER=pistonSNIPS_EXEC_PISTON_URL=- run supabase/schema.sql and refresh api cache
- n new snippet
- ? shortcuts
- esc close / clear
- cmd/ctrl + enter save
- e edit • c copy
- pin -> stays on top
- share -> public link
- tags -> comma-separated
- AI -> improve / refactor / debug / explain
- run -> python (local), cpp (external)
- python runs in-browser (pyodide)
- cpp requires external runner
- execution returns stdout, stderr, runtime, memory
- benchmarks: chars, bytes, bits, lines
- metadata: views, copies, timestamps
- tags deduped, lowercase, 30 char max
- theme + settings persist locally
- fast: virtualized list, cached highlighting, efficient filtering
npm run lint
npx tsc --noEmit
npm run build- see CONTRIBUTING.md
vercel ready; make sure supabase auth url is configured


