A collection of web-based creative tools built with Next.js. Features real-time collaboration with optional end-to-end encryption.
A collaborative drawing and design tool with real-time sync.
Drawing Tools
- Pen, Line, Arrow, Rectangle, Diamond, Ellipse
- Text with multiple font families and sizes
- Eraser and Laser pointer
- Hand tool for panning
Styling
- 16 preset colors + custom color picker
- Stroke width, style (solid/dashed/dotted), and line caps
- Fill color, opacity, and corner radius
- Connector styles (sharp/curved/elbow) with multiple arrow types
Editing
- Multi-select with alignment tools
- Copy, duplicate, delete
- Layer management (bring to front, send to back)
- Undo/Redo
Collaboration
- Real-time sync via PartyKit + Yjs
- Optional E2E encryption (key shared via URL hash, never sent to server)
- Live cursors and user presence
- Follow/spectate other users
File Operations
- Save/load
.shadeworksfiles - Export as PNG, JPEG, or WebP
Image and video dithering tool with multiple algorithms and palettes.
- Multiple dithering algorithms (Floyd-Steinberg, Atkinson, Bayer, etc.)
- 50+ built-in color palettes
- Palette extraction from images
- Image adjustments (brightness, contrast, saturation, blur, sharpen)
- Export to PNG, JPEG, WebP, SVG, PDF
- Video frame processing support
Remove backgrounds from images using AI-powered detection.
Work in progress. Not ready for use.
Prerequisites
- Node.js 18+
- pnpm
Setup
# Install dependencies
pnpm install
# Create environment file
cp .env.example .env.local
# Edit .env.local and set NEXT_PUBLIC_PARTYKIT_HOST
# Start development server
pnpm devOpen http://localhost:3000 in your browser.
Available Scripts
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm start |
Start production server |
pnpm lint |
Run ESLint |
Environment Variables
| Variable | Description |
|---|---|
NEXT_PUBLIC_PARTYKIT_HOST |
PartyKit server URL for real-time collaboration |
- Next.js 16 with App Router
- React 19
- TypeScript
- Tailwind CSS
- Radix UI / shadcn/ui
- Yjs for CRDT-based collaboration
- PartyKit for real-time sync
Contributions are welcome. Please open an issue first to discuss what you would like to change.
When opening an issue, please include:
- Description - Clear summary of the problem or suggestion
- Steps to Reproduce - For bugs, list the exact steps to trigger the issue
- Expected Behavior - What you expected to happen
- Actual Behavior - What actually happened
- Environment - Browser, OS, and any relevant details
- Screenshots - If applicable
Use the appropriate issue template if available.
I built these tools because I didn't want to pay premium prices for things I could build myself.