Build path
This path is for engineers who already know what they’re doing and just want a working stack now. You have an idea. You want to validate it before you commit a weekend to it. You don’t want to spend three hours wiring Postgres to a backend before you’ve written a line of business logic.
The 60-second loop
Section titled “The 60-second loop”npm install -g @blissful-infra/cliblissful-infra start my-app --backend spring-boot --database postgres-redisThat’s the whole setup. You now have:
- A backend at
http://localhost:8080with REST, Kafka, Postgres, and Redis caching wired in - A frontend at
http://localhost:3000already calling the backend - Grafana, Prometheus, Loki, Tempo running and pre-provisioned (Grafana shows metrics, logs, and traces with click-through correlation)
- A Jenkins pipeline ready to build and deploy your service
- A management dashboard at
http://localhost:3002
Open the generated project in your editor. Modify the controllers, add your own endpoints, push events through Kafka. Iterate.
Pick your stack
Section titled “Pick your stack”| Backend | Best for |
|---|---|
spring-boot | Long-running HTTP API, JPA + Postgres, Kafka producer + consumer, mature JVM observability |
lambda-python | Event-driven serverless workloads, learning AWS Lambda locally on LocalStack |
Frontend is React + Vite. Other frameworks are deliberately out of scope until they’re real. See the Philosophy page.
blissful-infra start my-app --backend spring-boot --frontend react-viteWhen you outgrow a single project
Section titled “When you outgrow a single project”The moment you have more than one project running locally, switch to the client model. Each client gets its own isolated stack with separate Kafka, Postgres, and observability, so projects don’t conflict on ports or pollute each other’s data.
blissful-infra client create idea-oneblissful-infra service add idea-one api --backend spring-boot --frontend react-viteblissful-infra client up idea-oneClient model guide · client command · service command
Adding things you actually need
Section titled “Adding things you actually need”| Need | Add |
|---|---|
| AWS-shaped storage / queues / Lambda | LocalStack at the client level. See the warehouse guide. |
| ML pipeline (Kafka, classifier, ClickHouse, MLflow) | --plugins ai-pipeline on service add |
| Identity provider | Keycloak at the client level (opt-in via infrastructure.keycloak: true) |
| Distributed tracing across services | Tempo is already wired (OTLP backend). Instrument and watch traces inside Grafana, with click-through to logs. |
Shipping it
Section titled “Shipping it”When the prototype works and you want it on the internet:
blissful-infra deployThe same blissful-infra.yaml that defines your local stack drives the deploy. Cloudflare Pages and Workers are the default target. Vercel and AWS adapters are in flight.
When to read the theory
Section titled “When to read the theory”If you hit something you don’t understand (a Kafka consumer-group rebalance, a JPA cascade behavior, a Prometheus histogram quantile), that’s when the Learn path becomes useful. The build path gets you running; the learn path explains why each piece looks the way it does.