A high-performance, Redis-backed temporary payload storage service with built-in rate limiting and automatic expiration. Built with Rust for optimal performance and reliability.
Jump is a modern solution to ephemeral data storage and sharing. It provides a secure, fast, and reliable way to store temporary data that automatically expires after a set duration. Whether you need to share sensitive information, temporary tokens, or any other short-lived data, Jump makes it simple and secure.
- High Performance: Built with Rust for optimal speed and efficiency
- Secure: Data automatically expires and is never permanently stored
- Lightning Fast: Redis-backed storage for sub-millisecond access
- Rate Limited: Built-in protection against abuse
- Type Safe: Strict MIME type validation for content
- RESTful API: Simple and intuitive API design
- Create: Send your data with an optional expiry time
- Share: Get a unique hash ID for your data
- Access: Use the hash ID to retrieve the data
- Auto-Expire: Data is automatically deleted after expiry
Jump is:
- Ephemeral: All data automatically expires
- Fast: Redis-backed for high performance
- Efficient: Optimized for minimal resource usage
- Rust (latest stable)
- Redis server (6.0 or higher)
- Cargo (comes with Rust)
- Clone the repository:
git clone https://github.com/codevalley/jump.git
cd jump
- Start Redis:
# Using Docker
docker run --name jump-redis -p 6379:6379 -d redis
# Or use your system's Redis
systemctl start redis # Linux
brew services start redis # macOS
- Build and run:
cargo run
The service will start on http://localhost:8080
.
GET /api/health
POST /api/v1/payloads
Content-Type: application/json
{
"content": "Your content here",
"mime_type": "text/plain",
"expiry_time": "2025-03-28T00:00:00Z" // Optional
}
GET /api/v1/payloads/{hash_id}
DELETE /api/v1/payloads/{hash_id}
# Server configuration
PORT=8080
HOST=127.0.0.1
# Redis configuration
REDIS_URL=redis://localhost:6379
REDIS_POOL_SIZE=16
REDIS_TIMEOUT=5
# Rate limiting
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_WINDOW=60 # seconds
# Payload limits
MAX_PAYLOAD_SIZE=10485760 # 10MB
DEFAULT_EXPIRY=86400 # 24 hours
src/
├── api/ # HTTP API layer
│ ├── middleware/ # Rate limiting, logging
│ └── v1/ # API version 1 endpoints
├── application/ # Business logic
│ ├── use_cases/ # Core operations
│ └── dto/ # Data transfer objects
├── domain/ # Core domain models
├── infrastructure/ # External services
│ └── redis/ # Redis implementation
└── main.rs # Application entry point
# Run all tests
cargo test
# Run specific test suite
cargo test test_api_integration
The project follows Rust standard formatting. Format your code using:
cargo fmt
The service uses tracing
for structured logging. Log levels can be configured using the RUST_LOG
environment variable:
RUST_LOG=debug cargo run
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.