Overview
Build complete web applications with zero Rust code — RaisFast gives you a production-ready backend out of the box.
No Rust Required
RaisFast is a fully functional backend out of the box. You don't need to write, compile, or understand any Rust code.
Everything you need is already built in:
| Feature | Status |
|---|---|
| REST API (25 modules) | Built-in |
| Auth (JWT + refresh tokens) | Built-in |
| Blog / CMS | Built-in |
| Media upload & storage | Built-in |
| Full-text search | Built-in |
| E-commerce (products, orders, payments) | Built-in |
| Multi-tenant | Built-in |
| Admin panel | Built-in |
| OpenAPI docs | Built-in |
If you know JavaScript, you can build full-stack apps. Just connect your React, Vue, or Svelte frontend to the REST API.
The Progressive Path
You don't need everything on day one. RaisFast follows a progressive model:
Stage 1 — Use Built-in APIs (Zero Code)
Start with what's already there. Create posts, upload media, manage users — all through REST endpoints.
# Start the server
raisfast
# Create a post
curl -X POST http://localhost:9898/api/v1/admin/posts \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"My Post","content":"Hello world"}'Stage 2 — Define Data Models (TOML, Zero Code)
When built-in modules aren't enough, define custom data models with a TOML file. RaisFast auto-generates the database table and full CRUD API.
name = "Article"
table = "articles"
plural = "articles"
[fields.title]
type = "text"
required = true
[fields.body]
type = "rich_text"
[fields.published]
type = "boolean"
default = false
[fields.author]
type = "relation"
related_type = "users"
relation = "many_to_one"Restart the server and you get:
GET /api/v1/admin/cms/articles— ListPOST /api/v1/admin/cms/articles— CreateGET /api/v1/admin/cms/articles/:id— Get onePUT /api/v1/admin/cms/articles/:id— UpdateDELETE /api/v1/admin/cms/articles/:id— Delete
Stage 3 — Extend with Plugins (JavaScript Only)
When you need custom business logic, write a plugin in JavaScript (or Rhai/Lua/WASM). No Rust needed.
id = "my-plugin"
name = "My Plugin"
version = "1.0.0"
entrypoint = "index.js"
[[hooks]]
event = "post_created"
handler = "onPostCreated"function onPostCreated(ctx, post) {
ctx.log("New post created: " + post.title);
// Send notification, update cache, trigger webhook...
}Architecture
┌─────────────────────────────────────────────┐
│ Frontend (React / Vue / Svelte / Vanilla) │
│ ↕ REST API (JSON) │
├─────────────────────────────────────────────┤
│ RaisFast Backend │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Built-in │ │ Content │ │ Plugins │ │
│ │ Modules │ │ Types │ │ JS/Rhai │ │
│ │(25 APIs) │ │ (TOML) │ │ /Lua/WASM│ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────────────────────────────────┐ │
│ │ SQLite / PostgreSQL / MySQL │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘One binary. One process. Zero dependencies.
SDK
The official @raisfast/sdk is framework-agnostic and zero-dependency:
npm install @raisfast/sdkimport { RaisFast } from "@raisfast/sdk";
const client = new RaisFast({
baseUrl: "http://localhost:9898",
});
// Login
const { access_token } = await client.auth.login({
email: "admin@raisfast.dev",
password: "admin123",
});
// Use the token
client.setToken(access_token);
const posts = await client.posts.list({ page: 1, limit: 10 });Works the same in React, Vue, Svelte, or plain JavaScript.
What You'll Learn
This section walks you through building real projects from scratch:
| Guide | What You Build |
|---|---|
| Project Setup | Dev environment, proxy config, hot reload |
| Auth Integration | Login flow, protected routes, token refresh |
| Data & CRUD | Content types → API → frontend data layer |
| Blog Tutorial | Complete blog: posts, categories, Markdown, SEO |
| E-commerce Tutorial | Shop: products, cart, checkout, payments |
| Production Deployment | Single server, Docker, TLS, CI/CD, monitoring |
