Portfolio

Senior Full-Stack & DevOps Engineer

Independent contractor — Docker, Linux/VPS, CI/CD, APIs, automation (n8n/Python), monitoring.

I take a small service from a repository to a host you can reload: the process, the reverse proxy, the backup, and a page that measures the machine it is running on.

Hire me through the platform where you found my profile.

Selected work

Sixteen project pages. Nine run as a real process, and the numbers on those pages come from that process. KubeHarbor, WorkflowKit, DataMill, TerraShelf, PipeForge, ObservaStack, and CloudOps are static pages recorded at build time. KubeHarbor is not deployed to a cluster. WorkflowKit does not run n8n. DataMill does not run the pipeline on the server. TerraShelf was not applied to an AWS account. PipeForge does not deploy from Actions to this host. ObservaStack does not run Prometheus or Grafana here. CloudOps was not applied to a cloud account. Every company name is fictional.

StackPilot status page on a desktop layout

StackPilot

Reference production stack and a live status page for an inventory API.

Problem A one-process API had no honest story for health, backups, or rollback.
Solution A Compose file (nginx, API, Postgres, pg_dump) plus a native demo that snapshots SQLite and reads host metrics.
Result The live page shows component health, an uptime bar, backup retention, and a read-only inventory explorer.
Python FastAPI Docker Compose nginx Postgres SQLite
FlowRelay pipeline and lead form

FlowRelay

Webhook in, routed lead out, with a step log for every run.

Problem Lead webhooks fail open, duplicate the same person, and mix support complaints with hot sales leads.
Solution A queue validates, dedupes on email plus UTC day, retries a flaky enrich step, scores, and routes to sales, nurture, or support.
Result A test lead returns a run id immediately. The page shows each step and a simulated Slack, sheet, and CRM outbox. A same-day repeat is skipped.
Python FastAPI SQLite Webhooks n8n
PulseBoard uptime and latency dashboard

PulseBoard

Uptime, latency, and error budget for a small platform team.

Problem A handful of services had no single place for uptime, latency, and remaining error budget.
Solution A fixed-target prober checks the sibling demos over HTTP and keeps a week of clearly labelled simulated history, with alerts and a notification log.
Result The dashboard opens on a 7-day status view, a latency chart, a healthy error budget, and a short incident timeline. Nothing is sent to a real on-call channel.
Python FastAPI SQLite Prometheus Grafana
HardenKit fleet scores for six fictional hosts

HardenKit

Ansible baseline and before/after audit reports for a Linux VPS.

Problem A fresh VPS still has password SSH, no firewall, and a hardening checklist that lives in a ticket.
Solution One playbook plus a read-only audit script. The page shows six fictional hosts before and after the same baseline, and how to run the audit on your own server.
Result Each host has a score, the controls that moved, and the role that fixes the ones still open. The public demo does not publish this server's own audit.
Ansible Linux Bash Python FastAPI nginx
ShipLane release pipeline for a fictional checkout API

ShipLane

Release pipeline for a fictional checkout API, with blue/green and a job log.

Problem A release story in a README does not show which job failed, which color is live, or how often a deploy rolls back.
Solution A page simulates the Globex checkout-api pipeline and ships the workflow files plus a dry-run blue/green switch.
Result Seeded history, DORA numbers from that log, and a live run you can watch job by job. Nothing is pushed to a real registry.
Python FastAPI GitHub Actions Docker nginx Bash
SiteAtlas SEO audit of the Books to Scrape practice site

SiteAtlas

Website SEO audit crawler, also packaged as an Apify Actor.

Problem Checking titles, meta descriptions, headings, and response time by hand stops being useful after a few pages.
Solution An async crawler (httpx, no browser) writes one row per page. The same package is the Apify Actor, with a charge per audited page.
Result The live page audits the Books to Scrape practice site, filters issue codes, and downloads CSV or JSON. The Actor is packaged and not listed yet.
Python httpx FastAPI Web scraping Apify
SkyForge Terraform routes for a single EC2 host and ECS Fargate

SkyForge

Terraform for AWS: single-EC2 Docker host or ECS Fargate, tested offline.

Problem A small API needs either one Docker host or a Fargate service, and the Terraform has to be reviewable before anyone creates resources.
Solution Two pinned routes share modules for the network, the load balancer, ECR, Fargate, the EC2 host, and remote state. Tests use a mock AWS provider.
Result The page shows both diagrams, the parsed resource list, and the checks recorded at build time. Nothing is applied and no account is used.
Terraform AWS ECS Fargate EC2 Docker GitHub Actions

CaseNote

Django 4.2 + DRF helpdesk/ticketing demo: roles, SLA tracking, dashboard, CSV export, OpenAPI docs; read-only demo/demo login.

Problem A support desk needs roles, an SLA clock, and a ticket list a viewer can read without changing.
Solution Django 4.2 and Django REST Framework: viewer, agent, and lead groups, SLA windows, a dashboard, CSV export, and OpenAPI docs served by the app.
Result Sign in as demo/demo. That account is read-only, and a write returns 403. The login page also lists agent and lead. The tenant is the fictional retailer Northwind Outfitters.
Python Django DRF SQLite OpenAPI gunicorn
WorkflowKit lead intake workflow on the local n8n editor canvas

WorkflowKit — three tested n8n templates

Lead intake, uptime watcher, and a daily RSS job digest as importable n8n workflow JSON, run on a local n8n 2.41.6.

Problem The portfolio had Python automation demos and no importable n8n workflow.
Solution Three templates built from official nodes: a validated, deduplicated, scored lead webhook into Google Sheets and Slack with a separate error branch; an uptime check that alerts after two consecutive failures and on recovery; and a keyword-filtered daily RSS digest email.
Result Each workflow was imported and executed successfully on a local n8n instance. Google Sheets and Slack were mocked locally. The public page shows the canvases, node notes, and executions, and offers the JSON for download. It does not run n8n.
n8n Automation Webhooks Google Sheets API Integration
LedgerLite demo page for the fictional Vandelay Industries invoicing API

LedgerLite

FastAPI invoicing REST API with JWT scopes, rate limits, cursor pagination, and OpenAPI docs.

Problem A public invoicing API demo has to show scopes, pagination, and idempotent writes without letting visitors change the shared book.
Solution FastAPI with JWT scopes, cursor pagination, idempotency keys, and a sandbox tenant created on each sandbox login.
Result The reader login and the public read-only API key get 403 on writes. Sandboxes are isolated and deleted after 60 minutes. Vandelay Industries and every row are fictional.
FastAPI SQLAlchemy OpenAPI
KubeHarbor showcase: Helm and Kustomize renders for the fictional Vandelay Industries LedgerLite API

KubeHarbor

Helm chart, Kustomize overlays, and Argo CD apps for a FastAPI service, validated offline.

Problem A FastAPI service needs a Helm chart and a Kustomize overlay for three environments, and the manifests have to be reviewable before anyone points them at a cluster.
Solution One chart and three overlays render the API, the network policy, and either in-cluster Postgres or an external database. Argo CD application files sit next to them. helm lint, kubeconform, kube-linter, checkov, and pytest run offline.
Result The page shows the rendered manifests, the dev-to-prod diff, and the checks recorded at build time. Nothing is deployed to a cluster. Vandelay Industries is fictional.
Kubernetes Helm Kustomize Argo CD GitOps NetworkPolicy
DataMill showcase for the fictional Contoso Coffee Co. ETL pipeline

DataMill

Python ETL pipeline: messy CSV, Excel, and API data into a tested star schema with data-quality gates.

Problem A month of POS files, an inventory workbook, and a paged CRM payload do not share a layout, a locale, or a clock.
Solution An offline pipeline lands the bytes, quarantines bad rows, loads a star schema, and publishes three marts. SQLite is the warehouse used for the recorded run.
Result The page shows the recorded September 2026 run: 30 daily runs, the 17 September file in WARN for schema drift, a same-day rerun that added 0 rows, and a full refresh that matched the incremental marts. Contoso Coffee Co. is fictional. The server does not run the pipeline.
Python ETL pandas Data Quality SQL
TerraShelf catalog of eight offline AWS Terraform modules

TerraShelf

Reusable, versioned AWS Terraform modules with offline tests and generated docs.

Problem A module library has to show inputs, tests, and a plan without creating AWS resources or claiming a Registry release.
Solution Eight modules, each with mocked-provider tests, terraform-docs, and a static module page. Checkov exemptions are written down with a reason.
Result terraform test recorded 48 passed and 0 failed. The pages state that the library is not published to the Terraform Registry and was not deployed.
Terraform AWS IaC DevOps
PipeForge Actions run graph for the public pipeforge-demo repository

PipeForge

Live GitHub Actions CI/CD for a public ratecard-api demo: lint, test matrix, build, SBOM, scan, and release to GHCR.

Problem A portfolio needs proof that a multi-stage pipeline actually runs on GitHub Actions, not only a simulated release board.
Solution A public repository with real workflows: lint, a Python test matrix, build, parallel SBOM and scan, summary, and a tag release to GHCR. The showcase records runs from the GitHub API and keeps live status badges.
Result The page links to real Actions runs for caoyadong888-wq/pipeforge-demo. Kestrel Parcel Co. is fictional. The pipeline does not deploy to any server.
GitHub Actions CI/CD Docker GHCR SBOM Python
ObservaStack showcase for the fictional Larkspur Grocers monitoring stack

ObservaStack

Prometheus, Alertmanager, and Grafana stack with promtool tests, SLO burn alerts, and importable dashboards.

Problem A self-drawn uptime board is not the same as real Prometheus rules, Alertmanager routing, and Grafana dashboards that can be checked offline.
Solution Rules with promtool unit tests, multi-window SLO burn alerts, an Alertmanager tree checked with amtool, pint offline lint, and five dashboard JSON files imported on the build machine.
Result The static page shows recorded check results and screenshots. Larkspur Grocers is fictional. The public host does not run Prometheus or Grafana.
Prometheus Alertmanager Grafana SLO SRE Monitoring
CloudOps showcase for GCP-first Cloud Run DevOps for fictional Thistle Analytics

CloudOps

GCP-first Cloud Run DevOps: Cloud Build, WIF, least-privilege IAM, Secret Manager, and monitoring as code; thin AWS secondary.

Problem Cloud DevOps work needs Cloud Run, IAM, secrets, and alert policies as reviewable files, without spending on a real project or repeating an ECS module library.
Solution A GCP-first package for insights-api: Cloud Run and Cloud Build configs, Workload Identity Federation from GitHub, least-privilege IAM checked with Rego, Secret Manager wiring, and Cloud Monitoring policies with schema checks. AWS Lambda and CodeBuild stay a thin secondary path.
Result Offline checks are recorded on the page. Thistle Analytics is fictional. Nothing was applied to a GCP or AWS account.
GCP Cloud Run Cloud Build IAM AWS DevOps

n8n DevOps Automation Pack

A downloadable product, not a hosted demo: 3 ready-to-import n8n workflows — GitHub CI failure / release alerts to Telegram or Slack, an uptime + SSL-expiry monitor that warns 14 days ahead, and an RSS / job-feed keyword filter that writes to Google Sheets. Pay what you want, from $9.

n8n GitHub Actions Telegram Slack Google Sheets

Linux/Server Ops n8n Starter Pack

3 import-ready n8n workflows: disk-usage alert, daily multi-domain SSL-expiry check, backup-failure alert, plus 6 prompt templates (EN/ZH). Pay what you want, from $1. Free lite preview (disk-usage alert) on GitHub.

n8n Linux SSL Backups

DC Inspection & Asset Register Kit

Data-center daily inspection checklist plus asset-register templates for AOC cables, optical modules and switches, with an SN-mapping checker that flags missing, duplicate and mismatched serials. Pay what you want, from $1. Free lite on GitHub.

Data Center Asset Register Python

Linux Server Health Check Scripts

Read-only Bash health checks that write a text report with OK/WARN/CRIT status, evidence and a recommendation, plus a container demo. Pay what you want, from $1. Free lite on GitHub.

Linux Bash Monitoring

Docker Compose Production Templates

Compose deployment templates with pinned images: nginx HTTPS reverse proxy with Certbot renewal, Postgres 16 with daily pg_dump backups and restore script, and a one-command demo. Pay what you want, from $1. Free lite on GitHub.

Docker Compose DevOps

GitHub Actions CI/CD Templates

GitHub Actions workflows: Python CI (Ruff + pytest matrix) and Docker Buildx build-and-push to GHCR using only GITHUB_TOKEN, with an example app and install script. Pay what you want, from $1. Free lite on GitHub.

CI/CD GitHub Actions DevOps

Prometheus + Grafana Alert Pack

Prometheus alert rules with promtool unit tests, Grafana dashboards and an alert runbook, plus a local Prometheus + node_exporter + Grafana demo. Pay what you want, from $1. Free lite on GitHub.

Prometheus Grafana Alerting

BMC/IPMI Fault Code Quick Reference & Runbook

SEL/SDR log parser that groups events by host and category and flags critical rows, plus a fault-code table, triage flowchart and hardware runbooks for data-center ops. Pay what you want, from $1. Free lite on GitHub.

Data Center BMC/IPMI Python

Linux Server Health Check — sample report

Read-only Linux checks, a written risk list, and an anonymized sample report in English and Chinese.

Problem A server review needs evidence and a written boundary before anyone changes the host.
Solution A bash script reads the OS, disk, memory, listeners, SSH policy, updates, time sync, kernel errors, and local certificates, then writes one JSON line per check.
Result The sample report ranks each item and states what a read-only pass includes. Host names, addresses, and accounts are replaced.
Linux Bash Read-only PDF
n8n editor showing the inquiry router workflow

Small-business automation demo (n8n)

A webhook classifies a customer inquiry and appends a row. The table on the page is demo data.

Problem A small team sorts price requests, support mail, and junk by hand.
Solution An n8n workflow accepts a POST, applies keyword rules, stores the row in a data table, and returns the category.
Result Eight sample inquiries were posted against n8n 2.43. The page shows the editor, the runs, and the stored rows.
n8n Webhook Automation

Written case studies

Fifty written references for a proposal. Each one is a fictional problem, solution, and result. They do not start a process, and they are separate from the project pages above.

Open the catalog

What I do

Hands-on delivery for a single VPS or a small service, with the runbook included.

Docker & VPS deployment

Compose stacks or a native systemd unit, sized for a small cloud host, with healthchecks and resource caps.

CI/CD pipelines

Lint, test, and image build on pull requests, plus a short rollback path written down before the first release.

API & backend development

Small HTTP APIs with explicit limits, idempotency where a retry would double-write, and a status document that is not just ok.

Workflow automation

n8n or Python workers for intake, enrichment, and routing, with a log of every step instead of a silent failure.

Monitoring & alerting

Uptime, latency, and error budget on one page, with Prometheus text and a Grafana dashboard when the team outgrows the built-in view.

Linux hardening/backups

Key-only SSH, a firewall, unattended upgrades, and backups you can restore from a documented drill.

How I work

1

Discovery

What has to stay up, what “done” looks like, and which limits the host actually has.

2

Plan

A short written plan: services, data, rollback, and what will be measured.

3

Build

The service, the tests, and the deploy path. No hidden admin surface on a public demo.

4

Handover

Docs and runbooks: how to deploy, how to roll back, and how to restore a backup.

Tools

Docker Docker Compose Linux nginx systemd GitHub Actions Python FastAPI Postgres SQLite Prometheus Grafana n8n rsync ufw fail2ban Bash Ansible httpx Apify Terraform AWS ECS Fargate EC2 Django DRF OpenAPI