A modern, secure pastebin service built with Rust and React. RustyBin allows you to create, view, and share text snippets with optional syntax highlighting and encryption.
- Secure Text Sharing: Create and share encrypted text snippets
- Syntax Highlighting: Support for multiple programming languages using Prism
- Modern UI: Built with React and TypeScript
- RESTful API: API for creating, retrieving, and deleting pastes
- SQLite Database: Lightweight, file-based database for storing pastes
- End-to-End Encryption: Client-side encryption for sensitive data, server has no knowledge of the paste contents
- Rust (latest stable)
- Node.js (v18+)
- pnpm
-
Clone the repository:
git clone https://github.com/EternityX/rustybin.git cd rustybin -
(Optional) Set up environment variables:
cp .env.example .env # Edit .env with your configuration -
Build and run the Rust backend:
cargo run
The backend server will start on http://localhost:3000 (or the port specified in your .env file).
The backend can be configured using the following environment variables:
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
RUST_ENV |
Environment mode | development |
CORS_ALLOWED_ORIGINS |
Comma-separated list of allowed CORS origins | https://rustybin.net,http://localhost:8080,https://api.rustybin.net |
READ_RATE_LIMIT |
Read operations per minute per IP | 45 |
CREATE_RATE_LIMIT |
Create operations per minute per IP | 15 |
DELETE_RATE_LIMIT |
Delete operations per minute per IP | 15 |
RUST_LOG |
Logging level (error, warn, info, debug, trace) | info |
Example .env file:
PORT=3000
RUST_ENV=development
CORS_ALLOWED_ORIGINS=https://yourdomain.com,http://localhost:5173,http://localhost:8080
READ_RATE_LIMIT=45
CREATE_RATE_LIMIT=15
DELETE_RATE_LIMIT=15
RUST_LOG=infoCORS Configuration:
To allow your frontend to connect to the backend, make sure to include your frontend's URL in the CORS_ALLOWED_ORIGINS environment variable. For local development, this typically includes http://localhost:5173 (Vite's default port) or whichever port your frontend runs on.
-
Navigate to the frontend directory:
cd site -
Set up environment variables:
cp .env.example .env # Edit .env with your configurationThe
.envfile should contain:# For development - update the port to match your backend configuration VITE_API_URL=http://127.0.0.1:3000/v1 # For production # VITE_API_URL=https://yourdomain.com/v1
Note: Make sure the port in
VITE_API_URLmatches the port your Rust backend is running on (configured in the backend's.envfile). -
Install dependencies:
pnpm install
-
Start the development server:
pnpm dev
The frontend development server will start on http://localhost:5173.
POST /api/pastes- Create a new pasteGET /api/pastes/:id- Get a specific pasteDELETE /api/pastes/:id- Delete a paste
Build the Rust application for production:
cargo build --releaseBuild the React application for production:
cd site
pnpm buildThe built files will be in the site/dist directory, which can be served by the Rust backend.
Please see the site/DEPLOYMENT.md to deploy on CloudFlare pages.
This project is licensed under the MIT License - see the LICENSE file for details.