RaisFastRaisFast
Full-Stack Development

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:

FeatureStatus
REST API (25 modules)Built-in
Auth (JWT + refresh tokens)Built-in
Blog / CMSBuilt-in
Media upload & storageBuilt-in
Full-text searchBuilt-in
E-commerce (products, orders, payments)Built-in
Multi-tenantBuilt-in
Admin panelBuilt-in
OpenAPI docsBuilt-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 — List
  • POST /api/v1/admin/cms/articles — Create
  • GET /api/v1/admin/cms/articles/:id — Get one
  • PUT /api/v1/admin/cms/articles/:id — Update
  • DELETE /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/sdk
import { 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:

GuideWhat You Build
Project SetupDev environment, proxy config, hot reload
Auth IntegrationLogin flow, protected routes, token refresh
Data & CRUDContent types → API → frontend data layer
Blog TutorialComplete blog: posts, categories, Markdown, SEO
E-commerce TutorialShop: products, cart, checkout, payments
Production DeploymentSingle server, Docker, TLS, CI/CD, monitoring

On this page