Skip to content
PrumoPrumo
    Searches every heading in the documentation.

    The decisions are already made.
    And written down.

    Prumo starts a TypeScript project with the framework, the module layout, the database rules, the auth wiring and the test boundaries already chosen. Each one was decided once, written into the project that receives it, and turned into something that runs.

    npx @stjoseph/prumo new my-app
    Node 22.17 or later, and pnpm.Read the documents

    A new project arrives with two things

    Code that already works
    Installed, wired together, and proven by starting rather than by compiling. Every template is committed in full and none of them calls somebody else’s scaffolder at install time.
    The conventions it follows
    A .prumo/ folder holding the rules that code obeys. Any AI assistant working in the repository reads it and knows them without anyone explaining. The conventions live in the project, not in someone’s head.

    Four types, and what each one is made of

    TypeWhat you get
    apiNestJS, MikroORM on PostgreSQL, Better Auth in a schema of its own, Swagger, Vitest with Testcontainers
    webVite, React, TanStack Router and Query, Tailwind, shadcn/ui, forms validated with Zod
    mobileExpo with Expo Router, NativeWind, MMKV, and the session kept in expo-secure-store
    siteNext on the App Router, static by default, for pages that have to be indexed

    One type produces that project alone. Several produce a pnpm workspace, with the wire contract shared so a change on one side breaks the other at typecheck.

    Nothing important is decided by silence

    Every question the CLI asks also has a flag, which is how it runs in CI without a terminal. Outside an interactive terminal a missing answer is an error rather than a default.

    npx @stjoseph/prumo new my-app --types api,web --single-tenant

    The stack is locked, and says so

    One document names every package, every version floor and the sixteen entries that were deliberately dropped. It is written to be treated as given: a generated project inherits it whole, and nothing is left to be settled again per project.

    Open the locked stack

    Prumo Desktop

    A desktop application that creates Prumo projects, lists them, reads their conventions and runs their apps. The foundation runs; the features are being built one at a time.