← PORTFOLIO
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

***