Skip to content

Overview

A blazing-fast fullstack framework combining NestForge's Rust backend with a Next.js-inspired frontend serving layer.

A blazing-fast fullstack framework combining NestForge’s high-performance Rust backend with a Next.js-inspired frontend serving layer.

crates.io docs.rs License

FeatureDescription
NestForge BackendRust-powered with dependency injection, modules, and runtime performance
File-based RoutingNext.js-style app directory with pages and API routes
SSR/SSG/ISRServer-Side Rendering, Static Site Generation, and Incremental Static Regeneration
API RoutesBackend endpoints co-located with frontend code
Type SharingAutomatic TypeScript types from Rust backend
Hot Module ReplacementFast development with HMR
OpenAPI DocsAuto-generated API documentation with Swagger UI
Edge DeploymentCloudflare Workers, serverless, or containers
Terminal window
cargo install nestforge-web-cli
Terminal window
nestforge-web new my-app
cd my-app
Terminal window
nestforge-web dev

Your app is now running at http://localhost:3000.

src/app/users/page.tsx
export default async function UsersPage() {
const users = await fetch('/api/users').then(r => r.json());
return (
<main>
<h1>Users</h1>
<ul>
{users.map(user => (
<li key={user.id}>{user.name}</li>
))}
</ul>
</main>
);
}
src/backend/users/users_controller.rs
use nestforge::prelude::*;
#[nestforge::controller("/api/users")]
pub struct UsersController;
#[nestforge::routes]
impl UsersController {
#[nestforge::get("/")]
async fn get_users(_service: Inject<UsersService>) -> ApiResult<Vec<User>> {
Ok(ApiResult::ok(users_service.find_all().await?))
}
}
my-app/
├── src/
│ ├── app/ # Next.js-style app directory
│ │ ├── page.tsx # Homepage (/)
│ │ ├── about/
│ │ │ └── page.tsx # /about
│ │ ├── api/ # API routes
│ │ │ └── users/
│ │ │ └── route.ts # /api/users
│ │ └── layout.tsx # Root layout
│ ├── components/ # Shared React components
│ ├── backend/ # NestForge backend modules
│ │ ├── app_module.rs # Root module
│ │ ├── users/
│ │ │ ├── mod.rs
│ │ │ ├── users_controller.rs
│ │ │ └── users_service.rs
│ │ └── posts/
│ │ ├── mod.rs
│ │ ├── posts_controller.rs
│ │ └── posts_service.rs
│ └── lib/
│ └── bridge.rs # Bridge between frontend/backend
├── nestforge-web.config.ts # Framework configuration
└── Cargo.toml
FeatureNext.jsNestForge Web
Backend LanguageJavaScript/TypeScriptRust
RuntimeNode.jsNative + Axum
DI SystemManual/ModulesNative NestForge
Cold Start (serverless)100-500ms< 50ms
Memory Usage50-200MB< 20MB
Type SharingGeneratedNative shared crate
DeploymentNode.js hostsNative binaries
Terminal window
# Development
nestforge-web dev # Start dev server with HMR
nestforge-web build # Build for production
nestforge-web start # Run production server
# Project management
nestforge-web new <name> # Create new project
nestforge-web generate # Generate code scaffolds
nestforge-web docs # Open API documentation
ResourceLink
GitHub Repositoryvernonthedev/nestforge-web
crates.ionestforge-web
docs.rsnestforge-web
WikiGitHub Wiki
ChangelogCHANGELOG.md
CLI Cratenestforge-web-cli
Core Cratenfw-core

The project is organized as a Cargo workspace:

CrateDescription
nestforge-webMain public crate
nfw-coreCore framework (routing, HMR, API generation, OpenAPI)
nestforge-web-cliCLI binary for scaffolding and development

Developed with love by @vernonthedev