A visual environment for designing, configuring, and deploying Solana Actions (Blinks) without writing code.
Warning
Currently the platform is running on devnet.
Creating Solana Actions currently requires manual coding, which limits adoption; This project aims to remove this barrier by enabling the visual construction and deployment of Blinks without engineering dependencies.
blinkzero solves this by providing a visual abstraction layer over the Solana Actions specification. Instead of manually coding API endpoints, users define parameters through a GUI which the system compiles into valid Action payloads.
Unlike generic boilerplate templates, this architecture:
- Abstracts Lifecycle Management: Automatically handles the
GET(metadata) andPOST(transaction) request cycle required by the Actions spec, eliminating common configuration errors. - Enforces Safety Constraints: Uses pre-validated transaction builders for common patterns (e.g., SPL transfers, NFT minting) to prevent the construction of malicious or malformed payloads.
Note
Planned Feature: Hot-Swappable Configuration - Stores Blink definitions as structured data, allowing users to update metadata (labels, icons, descriptions) instantly without redeploying the underlying infrastructure.
- Frontend (Builder): Next.js, React, TypeScript
- Backend (API & TX Engine): Rust (Axum/Tokio), Solana SDK
- Database: PostgreSQL
- Infrastructure: Vercel (Frontend), Docker (Backend)
The backend exposes a REST API compliant with the Solana Actions specification.
Registers a new Blink configuration in the database.
-
Endpoint:
POST /api/blinks -
Content-Type:
application/json -
Body:
{ "title": "title", "icon_url": "https://example.com/image.png", "description": "description", "label": "Donate", "wallet_address": "abC2...", "type": "donation", "config": { "amount": 0.5 } }Supported types:
donation,payment,voteResponse:
{ "id": "{id}", "action_url": "https://your-api.com/api/actions/{id}" }
Returns the Action metadata required by the Solana Actions specification (dialects).
Endpoint: GET /api/actions/{id}
Response:
{
"icon": "https://example.com/image.png",
"label": "Donate",
"title": "title",
"description": "description",
"links": {
"actions": [
{
"label": "Donate",
"href": "/api/actions/{id}?amount=0.5"
}
]
}
}Constructs the unsigned transaction payload for the user to sign.
Endpoint: POST /api/actions/{id}
Query Parameters:
-
amount (optional): Amount of SOL to transfer.
-
selection (optional): Vote option selected.
Body:
{ "account": "UserWalletAddress..." }Response:
{ "transaction": "base64_encoded_transaction_string...", "message": "Send 0.5 SOL" }
The repository is structured as a monorepo. You must run the backend services before starting the frontend interface.
The Rust backend handles transaction serialization and interaction with the Solana RPC.
-
Navigate to the server directory:
cd backend -
Configure environment variables:
Create a
.envfile with your RPC URL and Backend URL (optional). -
Run the Rust server:
cargo run
-
For a better development experience, use the following command with cargo watch: (bunyan is used to prettify the trace logs, can be installed with
cargo install bunyan)cargo watch -x 'clippy --all-features --all-targets -- -D warnings' -x test -x run | bunyan
The Next.js application provides the UI for creating and managing Blinks.
-
Open a new terminal and navigate to the web directory:
cd frontend -
Install dependencies:
npm install
-
Configure environment variables:
Copy
.env.exampleto.env.local. EnsureNEXT_PUBLIC_API_URLpoints to your running Rust backend (default:http://localhost:8000). -
Run the development server:
npm run dev
- Push the code to your git repository.
- Import the project into Vercel, setting the Root Directory to
apps/web. - Add the environment variables defined in
.env.example. - Deploy.
The Rust backend requires a long-running server environment (e.g., VPS, Shuttle, or a Docker container). It cannot be deployed to Vercel Edge Functions due to the heavy compute requirements of the Rust Solana SDK.



