Turn screenshots into share-ready graphics. In seconds.
For indie hackers who ship fast and post often.
You just shipped something. Now you need to post about it. Opening Figma feels like overkill. dopeshot gets you from screenshot to Twitter-ready in under 15 seconds.
Drop a screenshot, pick a vibe, export. That's it.
Auto-matched to your screenshot's palette. No color theory required.
Pick a mood, not a font. Founder. Terminal. Billboard. Edge. Circuit. BlackTie. Buddy. Civic.
Choose your target platform:
- Desktop (16:9) - 1920×1080 - Perfect for desktop screenshots, tutorials, LinkedIn posts, Twitter
- Mobile (9:16) - 1080×1920 - Optimized for mobile screenshots, Instagram stories, TikTok, Reels
Intelligently defaults based on your device. Automatically filters compatible layouts.
- Peak - Gradient hero with headline and elevated screenshot frame (mobile & desktop)
- Spotlight - Split layout with copy on one side, tall screenshot on the other (desktop only)
- Backdrop - Let a single screenshot shine with adaptive sizing (mobile & desktop)
Sized for Twitter and LinkedIn. High-res PNG, no watermark.
apps/app- product app (deploys toapp.dopeshot.io)apps/landing- marketing site (deploys todopeshot.io)apps/status- daily status CLI (Umami, Resend, Supabase)
Built with Next.js, Tailwind, Jotai. MIT licensed.
Ideas? Bugs? Open an issue.
Want to add a look or typography preset? Check out the authoring guide.
All PRs should include a Changeset (pnpm changeset) describing user-facing changes for the app; see docs/RELEASE_WORKFLOW.md for the flow.
Database migrations: follow docs/development/migrations.md. Dev: pnpm db:dev (creates and applies to staging DB). Prod: pnpm db:deploy:prod. pnpm dev runs a DB status check and auto-applies migrations by default; set DEV_AUTO_MIGRATE=0 to disable or DEV_SKIP_DB_CHECK=1 to skip.
Built by indie hackers, for indie hackers. Ship fast, post faster.
Phase 1 persistence requirements for Supabase (schema, buckets, RLS, and seeds) live in docs/SUPABASE_PHASE1.md.
