Skip to main content

FORGE

What if PostgreSQL was enough?

PostgreSQL-Powered

No Redis. No message queues. No separate services. Just PostgreSQL and your code. Get auth, jobs, crons, workflows, real-time subscriptions, and observability out of the box.

Type-Safe End-to-End

Write your backend in Rust with full type safety. Forge generates SvelteKit TypeScript bindings and Dioxus Rust bindings from the same backend contract.

Real-Time Built-In

Queries automatically become reactive subscriptions. Data syncs across all clients via Server-Sent Events. No extra setup required.

Background Processing

Background jobs with retry logic, cron schedules with catch-up, and durable workflows that survive server restarts. All with progress tracking.

AI-Ready with MCP

Expose backend functions as MCP tools with a single macro. LLM agents can call your queries and mutations directly, with the same auth and rate limiting.

Ship in Hours

Start from a runnable template, pick SvelteKit or Dioxus, keep one binary to deploy, and focus on business logic instead of plumbing.

Code First

Define your data

#[forge::model]
pub struct Task {
    pub id: Uuid,
    pub title: String,
    pub completed: bool,
}

Write a query

#[forge::query]
pub async fn list_tasks(ctx: &QueryContext)
    -> Result<Vec<Task>> {
    sqlx::query_as!(Task, "SELECT * FROM tasks")
        .fetch_all(ctx.db()).await
        .map_err(Into::into)
}

Use it in your frontend

// SvelteKit example
<script lang="ts">
  import { listTasksStore$ } from '$lib/forge';
  const tasks = listTasksStore$({});  // Auto-updates!
</script>

{#each $tasks.data ?? [] as task}
  <div>{task.title}</div>
{/each}

The same backend contract can also generate Dioxus bindings in frontend/src/forge.

Ready to Build?

Create your first FORGE app in under a minute.

cargo install forgex
forge new my-app --template with-svelte/minimal
cd my-app && docker compose up --build

Want Rust on both sides? Use forge new my-app --template with-dioxus/minimal.