Pillar — self-hosting deployment platform

PILLAR

(SELF-HOSTING PRODUCT)

2025

MADE IN MUMBAI (WIP)

A SELF-HOSTED DEPLOYMENT PLATFORM — DEPLOY ANY FULL-STACK APP WITH ONE CLI COMMAND. POINT IT AT A PROJECT DIRECTORY, AUTO-DETECT THE FRONTEND AND BACKEND FRAMEWORKS, COMPRESS AND SHIP BOTH TO A SERVER, AND SPIN UP ISOLATED DOCKER CONTAINERS — ALL WHILE STREAMING REAL-TIME LOGS BACK TO YOUR TERMINAL.

A DISTRIBUTED SYSTEM WITH THREE INDEPENDENTLY DEPLOYABLE SERVICES. THE REDIS PUB/SUB LAYER DECOUPLES THE WORKER FROM THE WEBSOCKET SERVER SO EITHER CAN RESTART WITHOUT DROPPING A DEPLOYMENT.

ARCHITECTURE:

CLI

GO · COBRA · FRAMEWORK AUTO-DETECTION · TAR.GZ COMPRESSION · BASE64 ENCODING · WEBSOCKET LOG STREAMING

API SERVER

NODE.JS · EXPRESS · JOI · POSTGRESQL · BULL/REDIS QUEUE · WEBSOCKET (ws) · REDIS PUB/SUB

WORKER

NODE.JS · BULL CONSUMER · SSH2 · DOCKERODE · BASE IMAGE SELECTION (NODE / PYTHON / GO)

STORAGE

S3 / MINIO · LOCAL FILESYSTEM FALLBACK · ENV-TOGGLED BACKEND · URL-BASED RETRIEVAL

REALTIME

WEBSOCKET + REDIS PUB/SUB · PER-DEPLOYMENT CHANNEL ISOLATION · GRACEFUL RECONNECT + POLLING FALLBACK

INFRA

DOCKER COMPOSE · POSTGRESQL 14 · REDIS 7 · MINIO (S3-COMPATIBLE) · SELF-CONTAINED DEV ENV

FEATURES:

FRAMEWORK AUTO-DETECTION

THE CLI'S DETECTOR PACKAGE INSPECTS PACKAGE.JSON AND DIRECTORY STRUCTURE TO IDENTIFY FRONTEND AND BACKEND FRAMEWORKS WITHOUT ANY CONFIG FILE FROM THE USER.

REAL-TIME LOG STREAMING

WEBSOCKET + REDIS PUB/SUB PIPELINE DELIVERS DEPLOYMENT EVENTS FROM WORKER → REDIS → API → CLI WITH PER-DEPLOYMENT CHANNEL ISOLATION. CLI RECONNECTS GRACEFULLY AND FALLS BACK TO POLLING.

DUAL STORAGE BACKEND

ARCHIVES STORED ON S3 OR LOCAL FILESYSTEM, TOGGLED TRANSPARENTLY VIA ENVIRONMENT VARIABLES. THE WORKER RETRIEVES THEM BY URL REGARDLESS OF WHICH BACKEND IS ACTIVE.

CONTAINERIZED ISOLATION

EACH DEPLOYMENT GETS ITS OWN DOCKER CONTAINER WITH RANDOMIZED HOST PORTS SO PROJECTS NEVER CONFLICT. WORKER AUTO-SELECTS THE BASE IMAGE (NODE, PYTHON, GO) FROM DETECTOR OUTPUT.

AUTOMATIC ENV WIRING

PLATFORM AUTO-INJECTS BACKEND URL INTO THE FRONTEND ENV USING FRAMEWORK-AWARE VARIABLE NAMES (VITE_API_URL, REACT_APP_API_URL) AND DATABASE_URL WHEN A DATABASE IS PROVISIONED.

SCHEMA-ENFORCED DATA MODEL

POSTGRESQL SCHEMA WITH UUIDS, JSONB COLUMNS FOR FLEXIBLE CONFIG STORAGE, INDEXED FOREIGN KEYS, AND A PLPGSQL TRIGGER TO AUTO-UPDATE UPDATED_AT ON EVERY ROW CHANGE.

STACK:

GO * COBRA * NODE.JS * EXPRESS * POSTGRESQL * REDIS * BULL * WEBSOCKET * DOCKER * SSH2 * MINIO / S3 * JOI * DOCKERODE * TYPESCRIPT

***