The public-facing content delivery service for the Sharify platform.
Canvas works alongside other Sharify components:
- Zephyr: Core upload API and storage service
- Spine: Web panel backend for user/content management
- Sharify-Go: Go SDK for programmatic uploads
- Sharify-Desktop: Cross-platform desktop app
Note: This project is not actively maintained and should not be used in a production environment.
Canvas takes a hostname + path combination and converts it into a storage key to fetch content.
So when someone visits username.example.com/abc123
, Canvas hashes it and retrieves the actual content from Redis or R2.
It supports redirects, images, files, and pastes.
- Multi-tier storage (Redis + Cloudflare R2)
- Automatic content type detection
- Custom domain support
- Syntax-highlighted paste viewer
- Basic security with path sanitization and rate limiting
GET /
- Just returns OK (health check)GET /p
- Simple paste creation frontend interfaceGET /:secret
- The main content retrieval endpoint
- Copy the env file:
cp .env.example .env
- Spin up Redis:
docker run --name=canvas_redis -d -p 6379:6379 redis redis-server --requirepass "canvas"
-
Fill out the
.env
file with your credentials. -
Run it:
make run