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
.envfile with your credentials. -
Run it:
make run