underpost
Base template for pwa/api-rest projects.
Underpost Platform
Underpost is an platform for application delivery, from infrastructure to runtime. The underpost npm package is its CLI toolchain surface.
The project covers:
- Bare metal provisioning on Rocky Linux 9.
- Kubernetes / K3s / kubeadm / LXD workflows for production, edge, and isolated workloads.
- GitHub OSS repository flow — clone, pull, push, commit, release, and CI integrations as first-class CLI subcommands.
- CI/CD orchestration — GitHub Actions integrations, container builds, multi-environment deployments.
- Static build + PWA delivery — every deploy ships as an installable Progressive Web App with Workbox-based offline support.
- Cloudinary-backed static asset flow for image/asset delivery.
- ERP/CRM-style PWA base applications as the default workload.
- Cyberia — a dedicated MMO extension built on top of the platform, with its own content backend (
engine-cyberia), authoritative simulation runtime (cyberia-server), and presentation runtime (cyberia-client).
See Detailed platform doc.
Architectural roles (Cyberia stack)
When the platform is hosting the Cyberia MMO extension, three independent runtime processes participate. Their boundaries are non-overlapping.
| engine-cyberia (Node.js) | Content authority: maps, object layers, atlas/asset metadata, world configuration, persistence, validation, gRPC + REST data services, editor backend, asset distribution. |
| cyberia-server (Go) | Authoritative simulation runtime: tick advancement, AOI replication, input command processing, snapshot generation. |
| cyberia-client (C → WebAssembly) | Presentation runtime: rendering, UI, input capture, prediction, reconciliation, interpolation, client-side presentation defaults. |
The ecosystem is playable only when all three are running and healthy. Each service is supervised independently and owns its own monitor/reconnector. If any one is unhealthy, the game enters standby and resumes automatically once all three are healthy again.
See detailed Cyberia architecture.
Create a new project
npm install -g underpost
underpost new app-name
After template installation, the server will be running on http://localhost:4001
Usage
cd app-name
Build client bundle
npm run build
Run dev client server
npm run dev
See Docs.
Underpost CLI
underpost ci/cd cli v3.3.0
Usage: underpost [options] [command]
Global options
-V, --version | output the version number |
-h, --help | display help for command |
Commands
new | Initializes a new Underpost project, service, or configuration. |
client | Builds client assets, single replicas, and/or syncs environment ports. |
start | Initiates application servers, build pipelines, or other defined services based on the deployment ID. |
clone | Clones a specified GitHub repository into the current directory. |
pull | Pulls the latest changes from a specified GitHub repository. |
cmt | Manages commits to a GitHub repository, supporting various commit types and options. |
push | Pushes committed changes from a local repository to a remote GitHub repository. |
env | Sets environment variables and configurations related to a specific deployment ID. |
static | Manages static build of page, bundles, and documentation with comprehensive customization options. |
config | Manages Underpost configurations using various operators. |
root | Displays the root path of the npm installation. |
ip | Displays the current public machine IP addresses. |
cluster | Manages Kubernetes clusters, defaulting to Kind cluster initialization. |
deploy | Manages application deployments, defaulting to deploying development pods. |
secret | Manages secrets for various platforms. |
image | Manages Docker images, including building, saving, and loading into Kubernetes clusters. |
install | Quickly imports Underpost npm dependencies by copying them. |
db | Manages database operations with support for MariaDB and MongoDB, including import/export, multi-pod targeting, and Git integration. |
metadata | Manages cluster metadata operations, including import and export. |
cron | Manages cron jobs: execute jobs directly or generate and apply K8s CronJob manifests. |
fs | Manages file storage, defaulting to file upload operations. |
test | Manages and runs tests, defaulting to the current Underpost default test suite. |
monitor | Manages health server monitoring for specified deployments. |
ssh | Manages SSH credentials and sessions for remote access to cluster nodes or services. |
wireguard | Manages the WireGuard L3 hub-and-spoke transport and the HAProxy edge gateway in front of it. |
haproxy | Manages the HAProxy edge gateway over the WireGuard transport (same subsystem as underpost wireguard). |
vultr | Meters the edge VPS bandwidth against its Vultr plan quota and blocks egress before overage accrues. |
run | Runs specified scripts using various runners. |
docker-compose | General-purpose Docker Compose development pipeline (mirrors the Kubernetes dev stack). |
lxd | Manages LXD virtual machines as K3s nodes (control plane or workers). |
baremetal | Manages baremetal server operations, including installation, database setup, commissioning, and user management. |
release | Release orchestrator for building new versions and deploying releases of the Underpost CLI. |
See CLI Docs.