Pulumi Starter

December 11, 2025 ยท View on GitHub

๐ŸŽ„ A boilerplate for cloud applications with Pulumi and Kubernetes using TypeScript on Vite.

:rainbow: View Demo: Live | Windows | macOS | Android | iOS

:octocat: Source Code: Web-side | Native-side | Server-side | Cloud-side

Table of Contents

Getting Started

Prerequisites:

  • Node.js v24
  • PNPM v10
  • Pulumi v3
  • Docker v29
  • Kubernetes v1
  • Helm v3

Get started with Pulumi Starter.

# install dependencies
$ pnpm install

$ pulumi stack init dev
$ pulumi stack select dev
$ pulumi up

Or use barebones scaffolding for your new Pulumi app

$ pnpm dlx degit Shyam-Chen/Barebones-Templates/pulumi my-pulumi-app

Self-hosted Kubernetes

Prerequisites:

  • Ubuntu Server Installation
  • Network Settings
  • SSH Remote Access Settings
  • Resource Pool Management
  • Repository SSH Key Settings
  • Bucket In MinIO
$ pulumi login 's3://<MINIO_BUCKET_NAME>'

Business:

  • Frontend
  • Backend
  • MongoDB
  • MinIO
  • Mailu
  • Redis
  • Worker
  • Qdrant
  • Ollama

Platform:

  • GitLab + GitLab Runner
  • Harbor
  • HashiCorp Vault
  • Lens
  • Prometheus/Loki + Grafana
  • Velero + MinIO
  • Longhorn
  • MetalLB + Istio
  • Rancher

Project Setup

Follow steps to execute this boilerplate.

Install dependencies

$ pnpm install

Initialize stacks

# development
$ pulumi stack init dev

# Test
$ pulumi stack init sit

# staging
$ pulumi stack init uat

# production
$ pulumi stack init prod

Select stacks

# development
$ pulumi stack select dev

# Test
$ pulumi stack select sit

# staging
$ pulumi stack select uat

# production
$ pulumi stack select prod

Create or update resources

$ pulumi up

Key Features

This seed repository provides the following features:

  • ---------- Essentials ----------
  • Pulumi - Infrastructure as Code and Secrets Management
  • ---------- Tools ----------
  • TypeScript - JavaScript with Syntax for Types
  • Biome - Formatter and Linter
  • Vitest - Test Runner
  • ---------- Environments ----------
  • Node.js - JavaScript Runtime Environment
  • PNPM - Package Manager
  • Docker - Containerized Application Development
  • GitHub Actions - Continuous Integration and Delivery

Configuration

Control the environment.

Environment Variables

$ pulumi stack select <ENV>
$ pulumi config set <KEY> <VALUE> [--secret]

Directory Structure

The structure follows the LIFT Guidelines.

.
โ”œโ”€โ”€ .github/workflows
โ”‚   โ”œโ”€โ”€ client.yaml
โ”‚   โ””โ”€โ”€ server.yaml
โ”œโ”€โ”€ packages
โ”‚   โ”œโ”€โ”€ client
โ”‚   โ”‚   โ”œโ”€โ”€ src
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.ts
โ”‚   โ”‚   โ”œโ”€โ”€ package.json
โ”‚   โ”‚   โ”œโ”€โ”€ Pulumi.yaml
โ”‚   โ”‚   โ””โ”€โ”€ tsconfig.json
โ”‚   โ””โ”€โ”€ server
โ”‚       โ”œโ”€โ”€ src
โ”‚       โ”‚   โ””โ”€โ”€ index.ts
โ”‚       โ”œโ”€โ”€ package.json
โ”‚       โ”œโ”€โ”€ Pulumi.yaml
โ”‚       โ””โ”€โ”€ tsconfig.json
โ”œโ”€โ”€ .dockerignore
โ”œโ”€โ”€ .editorconfig
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ biome.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ pnpm-lock.yaml
โ”œโ”€โ”€ pnpm-workspace.yaml
โ””โ”€โ”€ README.md