Getting Started
blissful-infra is a CLI that scaffolds and runs production-grade full-stack applications locally. This guide walks you from installation to a running app with the full observability and CI/CD stack active.
Prerequisites
Section titled “Prerequisites”- Node.js 18+ — the CLI is a Node.js package
- Docker Desktop — all services run in Docker containers; Desktop must be running before you use any
blissful-infracommands - 4 GB free RAM recommended (the full stack with monitoring uses ~2–3 GB)
You do not need a cloud account, Kubernetes, or any other tooling pre-installed.
Install
Section titled “Install”npm install -g @blissful-infra/cliVerify the installation:
blissful-infra --versionQuick start
Section titled “Quick start”blissful-infra start my-appThis single command:
- Checks Docker is running and pre-flight checks ports
- Ensures the shared Jenkins CI server is up (starts it if not)
- Scaffolds a
my-app/directory with backend, frontend, and config files - Generates a
docker-compose.yamlwiring all services together - Runs
docker compose up --buildand streams the build output - Registers the project with Jenkins
- Opens the frontend (
http://localhost:3000) and dashboard (http://localhost:3002) in your browser
Total time from command to browser open: 45–90 seconds on a fast internet connection (images are pulled once and cached).
What gets created
Section titled “What gets created”my-app/├── backend/ # Spring Boot (Kotlin) — REST API + Kafka producer/consumer│ ├── src/ # Application source code│ ├── build.gradle.kts # Gradle build file│ ├── Dockerfile # Multi-stage build with OpenTelemetry agent│ └── Jenkinsfile # CI/CD pipeline definition├── frontend/ # React + Vite + TypeScript + TailwindCSS│ ├── src/ # React application source│ ├── package.json│ └── Dockerfile # nginx-based production image├── loki/ # Loki + Promtail log aggregation config├── prometheus/ # Prometheus scrape configuration├── grafana/ # Pre-provisioned dashboards and datasources├── nginx.conf # Reverse proxy: routes /api/ and /ws/ to backend├── docker-compose.yaml # All services wired together└── blissful-infra.yaml # Project config (backend, frontend, database options)Choosing a stack at creation time
Section titled “Choosing a stack at creation time”The defaults are Spring Boot backend + React+Vite frontend + Postgres database. Override any of them:
# FastAPI backend + Postgresblissful-infra start my-app --backend fastapi --database postgres
# Spring Boot + Postgres AND Redis (cache layer)blissful-infra start my-app --database postgres-redis
# No database (API-only or external DB)blissful-infra start my-app --database none
# With AI/ML data pipelineblissful-infra start my-app --plugins ai-pipeline
# Skip Prometheus + Grafana (lighter stack)blissful-infra start my-app --no-monitoringAvailable backends
Section titled “Available backends”| Flag value | Stack |
|---|---|
spring-boot | Kotlin + Spring Boot 3 + Kafka + WebSockets |
fastapi | Python + FastAPI + Kafka + WebSockets |
express | Node.js + Express + TypeScript + Kafka |
go-chi | Go + Chi + Kafka + WebSockets |
Available frontends
Section titled “Available frontends”| Flag value | Stack |
|---|---|
react-vite | React + Vite + TypeScript + TailwindCSS |
nextjs | Next.js + TypeScript + TailwindCSS |
Database options
Section titled “Database options”| Flag value | What you get |
|---|---|
none | No database service |
postgres | Postgres 16 + Flyway migrations + JPA entities + repository layer |
redis | Redis 7 + Spring Cache (@Cacheable / @CacheEvict) |
postgres-redis | Both — Postgres for persistence, Redis as a read-through cache layer |
Managing your project
Section titled “Managing your project”Once your project is running, the key commands are:
# View logs for all servicesblissful-infra logs
# Stop all containersblissful-infra down
# Start a stopped projectblissful-infra up
# Development mode — hot reload with file watchingblissful-infra dev
# Open the dashboardblissful-infra dashboardReproducing environments
Section titled “Reproducing environments”Every project has a blissful-infra.yaml that captures the full configuration. To reproduce the exact same environment on another machine:
git clone git@github.com:your-org/my-app.gitcd my-app && blissful-infra upThis reads blissful-infra.yaml, regenerates docker-compose.yaml, and starts the stack — identical to what was originally created.
Next steps
Section titled “Next steps”- Commands: start — all flags and options for
blissful-infra start - Commands: dev — hot reload and template development mode
- Commands: dashboard — the local monitoring dashboard
- Templates overview — what lives inside each template