Quickstart ยท v0.8.1

Quickstart in 10 minutes

This page takes you from "repo cloned" to "first run completed" in ten minutes. It is deliberately click-by-click and assumes nothing. If you want to go deeper afterwards, see the introduction or the tutorial.

Prerequisites

You need just three things on your machine:

Note: You do not need to install Java, Maven or Node locally โ€” for this quickstart all builds run inside containers. If you later use real vendor adapters such as claudecode, you'll need that CLI locally (see the tutorial). For the mock adapter, nothing extra is needed.

Step 1: Clone the repo

Open a terminal, clone the platform repo and enter the directory:

git clone https://github.com/janda-io/SoftwareFabrik.git
cd SoftwareFabrik

In the repo root you'll find docker-compose.yml (defines the containers for app and Postgres), the app/ directory (Spring Boot source) and the html/ directory with this documentation.

Step 2: Create the .env file

The platform reads a .env file with mandatory variables on startup. The file lives at the repo root (./SoftwareFabrik/.env) and is not committed โ€” it holds secrets that don't belong in the repository.

Create the file with the following content. Replace the example values with strong secrets of your own:

# Bootstrap admin (login account on first start)
SOFTWAREFABRIK_ADMIN_USER=admin
SOFTWAREFABRIK_ADMIN_PASSWORD=ChangeMe-2026!

# Database password (for Postgres in the container)
SOFTWAREFABRIK_DB_PASSWORD=DbSecret-2026!

# Master key for encrypting API keys (32 bytes, base64)
SOFTWAREFABRIK_SECRETS_MASTER_KEY=<paste your key here>

Generate the master key with a one-liner. On Linux/macOS:

openssl rand -base64 48

On Windows (PowerShell):

[Convert]::ToBase64String((1..48 | ForEach-Object { Get-Random -Maximum 256 }))
Important: If you omit SOFTWAREFABRIK_ADMIN_PASSWORD, the platform deliberately does not create a bootstrap admin โ€” you won't be able to log in. Weak defaults like admin/admin would be a security bug, so we require an explicitly set password. Changing the master key later means previously stored API keys can no longer be decrypted โ€” pick once, then leave it alone.

Step 3: Start the platform

Start the containers in the background:

docker compose up -d

The first run pulls the images and builds the app โ€” this takes about 2โ€“4 minutes. Watch progress with docker compose logs -f app. As soon as the logs report Started Application in ..., the platform is ready.

You can also poll the health endpoint:

curl -f http://localhost:8080/actuator/health
# expects: {"status":"UP"}

Now open your browser at http://localhost:8080.

Step 4: Log in

You land on the login page. Use the credentials from your .env:

After a successful login you reach the dashboard with KPI tiles (everything is at zero, which is correct on a fresh instance), a list of your most recent projects and your most recent runs.

Hint: If you don't see the login page and instead get the Whitelabel Error Page: wait another minute (the app is still starting) and reload. If the login form appears but rejects the password: check the logs with docker compose logs app | grep -i admin โ€” usually the env variable is missing.

Step 5: First project with the wizard

From the dashboard click "New project with assistant" or navigate directly to /wizard. The wizard has four steps:

  1. Pick a template. Choose Modern Spring Boot Backend.
  2. Answer questions. Use sample values:
    • Project title: My first backend
    • Vision: A simple health-check service
    • Java version: 21
    • Database: H2 (no extra Postgres needed)
    • Architecture: layered
    • Language: English
  3. Pick quality gates. Leave the ArchUnit toggle on, switch the others off.
  4. Summary. Confirm with "Create project".

You now land in the project editor at /projects/<id>/edit with all fields pre-filled. Click "Generate Markdown artifacts" to have the platform produce the six specification files (PROJECT.md, INSTRUCTIONS.md, AGENTS.md, WORKFLOW.md, DEFINITION_OF_DONE.md, README.md).

Tip: Read the artifacts once before launching the first run โ€” they're editable and they're what the agent reads as its brief. Typos or fuzzy phrasing show up later in the commits.

Step 6: Watch the run

In the project editor click "New run". On the run-creation page:

  1. Run title: Create skeleton
  2. Goal: Set up the initial Maven project with Spring Boot, a health endpoint and a first smoke test
  3. Adapter: mock (no API key required)
  4. Click "Create run"

The run is now in status DRAFT. Click "Move to READY", then "Start run". You land on the run detail page and see:

Step 7: Quality gate

Once the run reaches COMPLETED, click the "Quality gate" tab (or the "Run quality gate" button at the bottom). The platform launches the reviewers and shows the verdict:

For each reviewer you see findings with severity, confidence score and explanation. In the quickstart with the mock adapter you should typically get PASSED โ€” mock outputs are designed not to trigger real violations.

Policy tip: In strict mode (default) a WARNING already blocks subsequent steps. In lenient mode follow-up phases continue despite a WARNING. For the first quickstart you can switch to lenient at /einstellungen โ†’ Quality Gate.

Cleaning up

To stop the platform without losing data:

docker compose down

That keeps Postgres data in the Docker volume. The next docker compose up -d brings your account, projects and runs back.

To wipe everything (DB, workspaces, logs):

docker compose down -v
rm -rf ./workspaces
Caution: The -v flag deletes all Docker volumes, including your database. Only do this if you really want to start over.

Common questions

Port 8080 is already in use

Set SOFTWAREFABRIK_PORT=9090 in .env and restart. Alternatively, stop the process holding 8080 (often Tomcat or another Spring Boot process) using lsof -i :8080.

Login page rejects the password

Check that the password in .env is spelled correctly (no quotes, no leading/trailing whitespace). With docker compose logs app | grep -i admin you can see whether the platform created the bootstrap admin.

Build takes ages

The first Maven build takes 2โ€“4 minutes pulling Spring Boot dependencies. Subsequent builds are much faster thanks to the Docker layer cache. Use docker compose build --pull to force a clean build if you suspect a corrupted cache.

Wizard shows outdated versions

The version cache refreshes daily at 03:00. On a fresh setup it has no values yet and shows fallback versions from the code. At /einstellungen/wizard/versions you can hit "Refresh now" โ€” needs an internet connection.

My run is stuck in DRAFT

A new run is always in DRAFT. You first need to move it to READY and then click the "Start run" button. Two confirmation points by design โ€” to prevent accidentally burning tokens.

Where do workspaces live?

By default under ./workspaces/<run-id>/ in the repo root. You can change the path at /einstellungen โ†’ Workspace. Each run gets its own directory with its own Git history.

Where to go next

IntroductionDetailed UI tour with glossary and pitfalls list.
TutorialFull workflow against the real Claude Code adapter.
Architecture overviewHow the platform is built technically.
FAQAnswers to typical questions about licensing, adapters, security.
Live demoClick through a real instance, no install needed.
WhitepaperConceptual background, 76 pages.