A small full-stack demo app for OpenLander managed-service workflows.
This is an advanced demo. For a first OpenLander deploy, use the smaller
openlander-demo-app
instead. This stack requires Postgres and Redis connection strings; OpenLander
0.1 may ask you or your agent to provide those values before deployment.
- A single deployable Node.js service
- PostgreSQL connection through
DATABASE_URL - Redis connection through
REDIS_URL - A browser UI that shows dependency health
/healthand/api/statusendpoints for deployment diagnostics- A Dockerfile that OpenLander can build without extra configuration
After connecting your OpenLander MCP server, try:
Deploy https://github.com/openlander-ai/openlander-demo-stack to OpenLander.
Use the default branch. If OpenLander reports missing DATABASE_URL or REDIS_URL,
create or attach project-scoped Postgres and Redis services first, then update
the deploy plan with the connection strings.
Expected result:
- OpenLander creates a deploy plan.
- The plan detects
pgandredispackage dependencies. - OpenLander either receives existing connection strings or helps you provision project-scoped Postgres and Redis services.
- Runtime env vars are injected into the app.
- The app boots and
/healthreturns OK.
| Name | Required | Description |
|---|---|---|
DATABASE_URL |
yes | PostgreSQL connection string |
REDIS_URL |
yes | Redis connection string |
PORT |
no | HTTP port. Defaults to 3000. |
.env.example leaves connection strings empty on purpose. In OpenLander 0.1,
agents should treat missing connection strings as required input unless a
project-scoped managed service has already been created and connected.
npm install
npm run build
docker compose up --buildThe compose file intentionally uses expose instead of host ports so
OpenLander can own routing and port assignment. For direct local browser access,
add a temporary override:
# docker-compose.local.yml
services:
app:
ports:
- "3000:3000"Then run:
docker compose -f docker-compose.yml -f docker-compose.local.yml up --buildOpen http://localhost:3000.
curl http://localhost:3000/health
curl http://localhost:3000/api/statusCreate a Postgres-backed event:
curl -X POST http://localhost:3000/api/events \
-H 'content-type: application/x-www-form-urlencoded' \
--data 'message=Deployed by OpenLander'nginx:alpine proves that a container can start. This app proves more:
OpenLander can reason about a real app, inject dependency configuration, and
show a useful health signal after deploy.