26 packages, 15+ modules, a marketplace, and optional cloud hosting. Auth, billing, AI, realtime, commerce — already built. Just add your idea.
$ npx @novahelm/cli new my-projectThe problem
You've built auth before. And billing. And email. And file uploads. And background jobs. And an admin panel. And then you spent so long on infrastructure that you forgot what you were actually building.
What if all of it was already done?
What you get
Everything below is generated, configured, and connected when you run novahelm new.
A complete admin dashboard with sidebar navigation, data tables, charts, and real-time metrics. Auto-generated from your schema.
Everything included out of the box
Modules
Optional add-ons that snap into your project. Enable only what you need — each module ships with schema, API, UI, and workers already wired up.
NovaHelm ships what your use case needs — no assembly required.
Multi-tenant, billing, teams — day one.
Claude, OpenAI, RAG — plug in and ship.
Docker Compose. Your server. Your data.
Products, checkout, Stripe — no plugins.
Rich editor, SEO, media — ready to publish.
Architecture
No experimental frameworks. No vendor lock-in. Every layer of the TypeScript ecosystem, pre-integrated and ready to ship.
Developer Experience
No magic strings. No 400-line config files. Just TypeScript that reads like it was written for you.
// auth setup...
import passport from "passport";
import { Strategy as GoogleStrategy } from "passport-google-oauth20";
app.use(session({ store: new RedisStore({ client: redis }) }));
passport.use(new GoogleStrategy({ clientID, clientSecret, callbackURL },
async (token, tokenSecret, profile, done) => {
const user = await db.query("SELECT * FROM auth_users WHERE...");
// ... 40 more lines of session handling
}));
// billing setup...
import Stripe from "stripe";
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
app.post("/webhooks/stripe", express.raw({ type: "application/json" }),
async (req, res) => {
const sig = req.headers["stripe-signature"];
// ... 30 more lines of webhook verification
});
// email setup...
import nodemailer from "nodemailer";
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
// ... 20 more lines of template loading
});
// job queue setup...
import Bull from "bull";
const emailQueue = new Bull("email", { redis: { ... } });
// ... and this goes on for 200+ linesimport { initNova, getDb } from "@novahelm/core";
import { createAuth } from "@novahelm/auth";
import { createDb } from "@novahelm/db";
// Everything. Connected. One call.
initNova({ db, redis, auth, storage, email, logger });
// Type-safe API in 5 lines
export const appRouter = createCoreRouter(router, {
custom: myRouter,
});
// Schema → API → Admin. Automatic.
defineCollection("products", {
fields: ["name", "price", "active"],
searchable: ["name"],
});// Define in the dashboard, get typed API
await schemaBuilder.addField("products", {
name: "price",
type: "number",
indexed: true,
searchable: false,
});
// Auto-generates: ALTER TABLE, indexes, tRPC CRUDconst ai = getAI();
const stream = ai.streamText({
model: "claude-sonnet-4-20250514",
prompt: userMessage,
});
// Streams to client via tRPC// server: define once
export const appRouter = router({
posts: postRouter,
});
// client: auto-completed
const { data } = trpc.posts.list.useQuery();
// ^^ fully typed, zero codegenPricing
The entire platform is open source. Cloud hosting and premium modules are optional.
One command. 26 packages. Everything connected.
$ npx @novahelm/cli new my-projectGet early access — we'll let you know when it's ready.
Backed by developers who believe in owning their stack.
Help us keep NovaHelm free and independent.
Sponsor NovaHelm