Skip to content

Project Structure

Sersi does not invent a new layout per project. Every scaffold starts from the same agreed standardized shape as described in Why Sersi.

The trees below are the file maps the CLI writes today. Differences between frameworks are intentional and called out as notes; the skeleton stays shared.

Frontend

Vue and Svelte use the same root files as React. Framework-specific golden assets land under src/ (components, logos, etc.).

Frontend · React + TypeScript

Shared Vite layout every frontend scaffold starts from: same root files, predictable src/.

  • my-app/
    • package.json
    • index.html
    • vite.config.tsTS only
    • tsconfig.jsonTS only
    • README.md
    • .gitignore
    • src/
      • App.tsx
      • main.tsx
      • styles.css
      • assets/Framework assets

Without TypeScript, extensions flip to JavaScript and tsconfig.json is omitted:

Frontend · React + JavaScript

Same skeleton without TypeScript: js/jsx extensions instead of ts/tsx.

  • my-app/
    • package.json
    • index.html
    • vite.config.js
    • README.md
    • .gitignore
    • src/
      • App.jsx
      • main.jsx
      • styles.css
      • assets/Framework assets

Backend · Node

Express and Fastify share the same layout:

  • Config and tooling at the project root (package.json, .env, .gitignore, and tsconfig.json when TypeScript is enabled)
  • Application code under src/ with flat MVC layers: routescontrollersservicesmodels / db
  • db/dummy_db is a simple in-memory users array (not a database class)
  • Routes wire named controller handlers; controllers and services export individual functions

JavaScript scaffold (TypeScript declined in the wizard, or typescript: false):

Backend · Node + Express (JavaScript)

Enterprise layout: package.json / .env at the root, MVC layers under src/. Fastify uses the same paths.

  • api/
    • package.json
    • .env
    • .gitignore
    • src/
      • index.js
      • routes/
        • index.js
      • controllers/
        • controller.js
      • services/
        • service.js
      • models/
        • model.js
      • db/
        • dummy_db.jsusers array

TypeScript scaffold (typescript: true, or Yes in the wizard after picking Express/Fastify):

Backend · Node + TypeScript

Same src/ MVC layout as JavaScript: .ts extensions, plus tsconfig.json. Works for Express and Fastify.

  • api/
    • package.json
    • tsconfig.jsonTS only
    • .env
    • .gitignore
    • src/
      • index.ts
      • routes/
        • index.ts
      • controllers/
        • controller.ts
      • services/
        • service.ts
      • models/
        • model.ts
      • db/
        • dummy_db.tsusers array

Fastify uses the same paths as Express; only the framework wiring inside src/index and src/routes/index differs.

Backend · Go

Go scaffolds keep the same layering with idiomatic package names (handlers, repository, model).

Backend · Go

Same layering every Go scaffold: handlers, services, repository, model, routes.

  • api/
    • main.go
    • go.mod
    • .env
    • .gitignore
    • handlers/
      • handler.go
    • services/
      • service.go
    • repository/
      • dummy_db.go
    • model/
      • model.go
    • routes/
      • routes.go

Backend · Python

Python currently scaffolds a FastAPI project (language: python, framework: fastapi) with routers, service, model, and a dummy db at the project root (not under src/).

CI overlay

After the project exists, an optional CI step (wizard or ci: in config) writes provider-specific files into that same folder, never a separate project.

CI overlay · GitHub Actions

Optional pipeline files written into the project you just created.

  • my-app/
    • .github/CI overlay
      • workflows/
        • ci.yml
    • DockerfileWhen Docker is enabled

CI overlay · GitLab CI

Same optional step: provider-specific filename at the project root.

  • my-app/
    • .gitlab-ci.ymlCI overlay
    • DockerfileWhen Docker is enabled

CI overlay · Bitbucket Pipelines

Same optional step: provider-specific filename at the project root.

  • my-app/
    • bitbucket-pipelines.ymlCI overlay
    • DockerfileWhen Docker is enabled