> planter
HTTP / API layer
- controllers and endpoint helpers
- DTO conversion
- request and response annotations
- the front-facing API surface
The Java backend powering bluebell - REST APIs, scheduled jobs, data pipelines, and the platform's core trading business logic.
Interactive OpenAPI explorer. Try endpoints, inspect schemas, and exercise the planter API surface.
Generated Java API reference for greenhouse - public classes, services, converters, and DTOs.
The authenticated Next.js dashboard. Operator-facing experience that consumes greenhouse APIs.
The public-facing Next.js website. Marketing and visitor-facing experience that complements the authenticated sepal app.
greenhouse is organized into six cooperating packages - from the API edge down to standalone operational tooling.
HTTP / API layer
Core Spring runtime
Shared foundation
Integration and pipelines
Research and analysis
Symbol-registry tooling
bluebell/
|-- documentation/ # diagrams and reference
|-- flower/ # frontend apps (sepal, petal)
|-- greenhouse/ # <- you are here - backend API
|-- knowledge/ # trading reference notes
|-- scripts/ # orchestration utilities
|-- stem/ # MetaTrader (MQL4) assets
`-- docker-compose.yml
$ cat greenhouse/responsibilities
{ "apis": true, "scheduled_jobs": true, "import_export": true,
"core_business_logic": true }
backend API
PostgreSQL
authenticated frontend
public website
The top-level run-bluebell scripts wrap Docker Compose.
They validate the environment, require a matching
.env.<env> file at repo root, and export
TAG=<env>. Supported envs: dev, staging, prod.
$ ./scripts/linux/run-bluebell.sh build dev
$ ./scripts/linux/run-bluebell.sh up dev
$ ./scripts/linux/run-bluebell.sh up dev --build
$ ./scripts/linux/run-bluebell.sh down dev --volumes
$ ./scripts/linux/run-bluebell.sh ps dev
$ ./scripts/linux/run-bluebell.sh logs dev greenhouse --follow
> scripts\windows\run-bluebell.bat build dev
> scripts\windows\run-bluebell.bat up dev
> scripts\windows\run-bluebell.bat up dev --build
> scripts\windows\run-bluebell.bat down dev --volumes
> scripts\windows\run-bluebell.bat ps dev
> scripts\windows\run-bluebell.bat logs dev greenhouse --follow
build ENV
build images without starting containers
up ENV
start the stack without rebuilding
up ENV --build
rebuild and start the stack
up ENV --pull
always pull before up
down ENV
stop the stack
down ENV --volumes
stop the stack and remove named volumes
ps ENV
show service and container status
logs ENV <service>
show logs for one service
logs ENV <service> --follow
tail logs live
The Docker controller loads a repo-root .env.<env>
file before bringing the stack up. Greenhouse also reads its own
greenhouse/.env for application secrets.
Active Spring profile loaded by the backend.
Profile selector for the flower frontend builds.
URL probed by Docker Compose to verify greenhouse health.
Set automatically by run-bluebell for environment-tagged images.
SMTP account username used by the Java mail sender.
SMTP account password or app password used by the Java mail sender.
Sender address used for outbound application email.
Default recipient for email endpoints and notification smoke checks.
API key for OpenAI-backed translation and enrichment workflows.
API key for EOD Historical Data market-data integrations.
JDBC URL used by staging and production profiles.
Database username used by staging and production profiles.
Database password used by staging and production profiles.
Public greenhouse base URL used when building external links.
# direct greenhouse startup computes the final .env
$ mvn spring-boot:run -Dspring-boot.run.arguments="--os-profile=dev"
# selected source file
config-dev.txt -> .env
# accepted profile values: dev, staging, prod
--os-profile=dev
# omitted profile defaults to dev; GREENHOUSE_LAUNCHER skips this copy
# 1. copy the template
$ cp .env.example .env.dev
# 2. fill in values
$ $EDITOR .env.dev
# 3. bring the stack up
$ ./scripts/linux/run-bluebell.sh up dev --build