VoltEdge is a professional-grade, open-source image hosting platform designed for speed and infinite scalability. It leverages the Telegram Bot API as a decentralized storage backend and Upstash Redis for high-performance metadata management, delivering Media directly through edge redirection.
- 📦 Messaging-Backbone Storage: Unlimited, free, and decentralized storage powered by Telegram infrastructure.
- 🏎️ Edge Content Delivery: Uses high-speed redirection (302) to minimize server bandwidth and maximize delivery speed.
- 🛠️ Developer-First API: Fully versioned REST API (
/api/v1) for programmatic uploads and metadata retrieval. - 💎 Premium UX/UI: A stunning, glassmorphic dark-mode interface built with Framer Motion and Outfit typography.
- 🔗 Custom Vanity URLs: Support for custom file names and human-readable slugs.
- 📊 Real-time Analytics: Built-in view counters and metadata tracking (size, format, timestamp).
- 📱 QR Integration: Instant QR code generation for every uploaded asset.
- Framework: Next.js 15+ (App Router)
- Database: Upstash Redis
- Storage: Telegram Bot API
- Styling: Vanilla CSS + Framer Motion
- API: Versioned REST JSON API
VoltEdge is built with a developer-first approach. You can programmatically upload images and retrieve metadata using our versioned REST API.
API v2 introduces authentication, API keys, higher rate limits, and webhooks. Authentication is optional but recommended for production use.
Register a new account:
POST /api/v2/auth/register
Content-Type: application/json
{
"email": "user@example.com",
"password": "secure-password"
}Login:
POST /api/v2/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "secure-password"
}Get current user:
GET /api/v2/auth/me
Authorization: Bearer <token>
# Or use the auth_token cookie set during loginCreate API keys from the Dashboard or via API:
Create API Key:
POST /api/v2/keys
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Production Key",
"rate_limit": 100
}List API Keys:
GET /api/v2/keys
Authorization: Bearer <token>Use API Key:
POST /api/v2/upload
X-API-Key: px_your_api_key_here
Content-Type: multipart/form-dataEndpoint: POST /api/v2/upload
Content-Type: multipart/form-data
Authentication: Optional (API key or JWT token)
| Parameter | Type | Required | Description |
|---|---|---|---|
file |
File | Yes | The image file to upload. |
customId |
String | No | Custom vanity slug for the link. |
Rate Limits:
- Anonymous: 20 requests/minute
- Authenticated (JWT): 50 requests/minute
- API Key: Custom (default: 100 requests/minute)
Example Request (cURL with API Key):
curl -X POST https://your-voltedge.com/api/v2/upload \
-H "X-API-Key: px_your_api_key_here" \
-F "file=@/path/to/image.jpg" \
-F "customId=my-awesome-link"Example Request (cURL with JWT):
curl -X POST https://your-voltedge.com/api/v2/upload \
-H "Authorization: Bearer <your-jwt-token>" \
-F "file=@/path/to/image.jpg"Configure webhooks to receive notifications when images are uploaded or deleted:
Create Webhook:
POST /api/v2/webhooks
Authorization: Bearer <token>
Content-Type: application/json
{
"url": "https://your-server.com/webhook",
"events": ["upload", "delete"]
}Webhook Payload:
{
"event": "upload",
"timestamp": 1705500000000,
"data": {
"id": "image-id",
"url": "https://voltedge.link/i/image-id",
"size": 102400,
"type": "image/jpeg",
"created_at": 1705500000000
}
}The v1 API remains available for backward compatibility.
Endpoint: POST /api/v1/upload
Content-Type: multipart/form-data
| Parameter | Type | Required | Description |
|---|---|---|---|
file |
File | Yes | The image file to upload. |
customId |
String | No | Custom vanity slug for the link. |
Example Request (cURL):
curl -X POST https://your-voltedge.com/api/v1/upload \
-F "file=@/path/to/image.jpg" \
-F "customId=my-awesome-link"Endpoint: GET /api/v1/info/[id]
Example Response:
{
"success": true,
"data": {
"id": "my-awesome-link",
"url": "https://voltedge.link/i/my-awesome-link",
"views": 42,
"created_at": 1705500000000,
"metadata": {
"size": 102400,
"type": "image/jpeg"
}
}
}VoltEdge is Open Source and built for the community! We are actively looking for collaborators and contributors to make this the ultimate image hosting solution.
- Fork the repository and experiment with new features.
- Open an Issue if you find bugs or have feature requests.
- Submit Pull Requests for UI improvements, API enhancements, or documentation.
- Join the Discussion: Help us shape the future of edge-based messaging storage.
- A Telegram Bot Token (From @BotFather)
- A Telegram Chat ID (Use @userinfobot)
- An Upstash Redis account (Free tier is perfect)
Create a .env.local file:
TELEGRAM_BOT_TOKEN=your_token
TELEGRAM_CHAT_ID=your_id
UPSTASH_REDIS_REST_URL=your_url
UPSTASH_REDIS_REST_TOKEN=your_token
NEXT_PUBLIC_BASE_URL=https://your-deployment.com
JWT_SECRET=your-secret-key-change-in-production
# Optional: Hugging Face Hub Storage (alternative to Telegram)
HF_TOKEN=your_hf_token
HF_REPO_ID=username/repo-name
HF_REPO_TYPE=dataset
USE_HF_STORAGE=falseNote:
JWT_SECRETis required for API v2 authentication. Use a strong, random secret in production.- Storage Backend: By default, VoltEdge uses Telegram for storage. You can optionally use Hugging Face Hub by setting
USE_HF_STORAGE=trueand providing HF credentials. SeeHUGGINGFACE_SETUP.mdfor details. ⚠️ Important: Hugging Face Hub still goes through Vercel, so it won't bypass Vercel's 4.5MB/50MB upload limits. For true 2GB uploads, you need direct client uploads (S3, R2, etc.).
VoltEdge includes a built-in Telegram Bot for direct uploads from your messaging app.
Once you deploy VoltEdge to Vercel (or any public URL), you must link your bot to the webhook endpoint. Visit the following URL in your browser:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://your-domain.com/api/webhook/telegram
/start: Show the welcome message./uploador/tgm: Upload an image./help: Shows the instructions.
- Direct Upload: Send any Media or File (as image/video) to the bot for an instant link.
- Reply to Upload: Reply to any existing image in a chat with
/uploador/tgmto host it on VoltEdge. - DB Tracking: Every upload is forwarded to your storage channel with a caption identifying the user (Name + ID or @Username).
graph LR
User --> API[Next.js API]
API --> Redis[Upstash Redis]
API --> Telegram[Telegram CDN]
Redis -- "Metadata" --> API
Telegram -- "File ID" --> API
telegram-storage image-hosting cdn edge-computing telegraph upstash nextjs redis-database open-source serverless fast-upload decentralized-storage developer-api
Stay updated with the latest features and get support for VoltEdge:
- 📢 Updates: @Hunter_Update
- 💬 Support Group: @Hunter_Supports
Distributed under the MIT License. Feel free to use, modify, and distribute as you wish!
Forked from GeekLuffy/PixEdge
Contributions by taslim19