Skip to content

How racletteJS Works ​

racletteJS uses a managed runtime architecture so application teams can focus on business logic first.

Core Idea ​

  • racletteJS ships opinionated backend and frontend runtime layers in @raclettejs/core.
  • Your app extends that runtime primarily through plugins.
  • During yarn dev, racletteJS builds a virtualized runtime file tree (.raclette) and starts containers from it.

Mental Model ​

  • Think in layers: core files + app overlays + mounted plugin folders.
  • The runtime inside containers is the result of VFS plus extra mounts.
  • Plugins are additive by design; service overrides are an escape hatch.

Typical App Structure ​

Below is a typical create-raclette-app style project structure:

text
my-raclettejs-app/
β”œβ”€β”€ package.json
β”œβ”€β”€ packages.json
β”œβ”€β”€ raclette.config.yaml
β”œβ”€β”€ plugins/
β”‚   └── my-plugin/
β”‚       β”œβ”€β”€ raclette.plugin.ts
β”‚       β”œβ”€β”€ backend/
β”‚       └── frontend/
β”œβ”€β”€ services/                  # optional overrides
β”‚   β”œβ”€β”€ backend/
β”‚   └── frontend/
β”œβ”€β”€ shared/                    # optional shared app code
β”œβ”€β”€ i18n/                      # optional app i18n
└── .raclette/                 # generated runtime output

Start Your Local Application ​

From your project root, start development with:

bash
yarn dev

This is the main command you use day to day. The racletteJS CLI will:

  • Print a lot of log output while it prepares the runtime
  • Generate the .raclette folder (config, virtual file tree, Docker files)
  • Start the required Docker containers (app services, database, cache, and Workbench when enabled)
  • Attach to service logs in the same terminal, so you keep seeing backend and frontend output

The first run can take noticeably longer, because dependencies are installed inside the containers.

Once startup completes, open the app in your browser:

ServiceURL
Main app (frontend)http://localhost:8081
Workbench (frontend, when enabled)http://localhost:8083

Inspect running containers (optional) ​

After yarn dev has finished starting, you can open a separate terminal window and list running containers:

bash
docker ps

The table below mirrors a typical docker ps result for a create-raclette-app project named my-test-app (Workbench enabled). Column NAMES matches what you see in the terminal.

NAMESIMAGESTATUSHost port(s)
my-test-app-frontendmy-test-app-frontendUp (healthy)8081 β†’ container 8081
my-test-app-backendmy-test-app-backendUp (healthy)8082 β†’ container 3000
my-test-app-workbench-backendmy-test-app-workbench-backendUp (healthy)8084 β†’ container 3000
raclette-mongodbmongo:8.2Up (healthy)27017 (localhost only)
raclette-cachevalkey/valkey:9.0-alpineUp (healthy)6379 (localhost only)

App containers are prefixed with your project name from raclette.config (here: my-test-app). MongoDB and cache often keep shared names (raclette-mongodb, raclette-cache) so multiple racletteJS projects can reuse them.

Stop the app ​

To stop your local racletteJS app:

  • Press Ctrl+C in the terminal where yarn dev is running, or
  • Run yarn down from the project root

Both stop the racletteJS Docker services started for your app.

Where to Start ​

  1. Read Architecture Overview.
  2. Read File layering and VFS.
  3. Read Where to put your code.
  4. Continue with Getting Started.