Portfolio

Websites, support, and systems.

Company remote support, public websites, and practical automation. My work spans development, deployment, and the ongoing responsibility of running the service.

  • 8 projects & services
  • 3 areas of work
  • Self-hosted on Ubuntu

Infrastructure & support

Services I operate: remote access for the company, visibility into system health, and recovery workflows.

  • Dunamis Status

    Live

    Monitoring · Development & operations

    A self-hosted operations dashboard for website health, services, incidents, deployments, and repository status.

    A scheduled TypeScript collector records checks in PostgreSQL. The public website reads those snapshots through a separate, read-only account and identifies stale data instead of presenting it as current.

    AstroTypeScriptPostgreSQLsystemdCaddy
  • Server backup & recovery

    Scheduled

    Infrastructure · Recovery planning

    Daily backup automation for the Ubuntu server, alongside application and RustDesk backups.

    The recovery workflow captures configuration, service inventory, and database exports, encrypts sensitive material with age, and maintains rebuild instructions. Recovery planning is part of operating the service.

    UbuntuPostgreSQLagesystemdBash
    Private operational tooling

Websites

Purpose-built Astro, TypeScript, and PostgreSQL applications, from personal publishing to a business website replacement.

  • Grace & Footnotes

    Live

    Publishing · Development & hosting

    My Christian writing website, built around a readable, accessible publishing experience and content I host myself.

    Astro, TypeScript, and PostgreSQL support writing, scheduled publication, RSS, study dates, and downloadable resources. A shell-based publishing workflow keeps editing separate from the public website.

    AstroTypeScriptPostgreSQLHTMLCSSJavaScript
  • Imaging Services website

    Hosted demo

    Business website · Development & deployment

    A bespoke replacement for an existing WordPress website, covering company services, equipment, practice specialties, and contact information.

    Twelve pages run on Astro, strict TypeScript, and PostgreSQL in a separate Ubuntu deployment for review. The replacement is at the demo stage; the company’s main website has not been cut over.

    AstroTypeScriptPostgreSQLHTMLCSSNode.js
    Demo under review · Private source
  • dunamismax.com

    Live

    Portfolio · Development & hosting

    This portfolio and blog: Astro, strict TypeScript, PostgreSQL, semantic HTML, and hand-written CSS. No browser JavaScript.

    Server-rendered pages, RSS, a read-only public database account, and versioned deployments behind Caddy keep the application small and inspectable.

    AstroTypeScriptPostgreSQLHTMLCSSCaddy

Automation & bots

Small, focused programs that make support, community tools, and server operations repeatable.

  • MTG Card Bot

    In service

    Community tooling · Development & operations

    A Discord bot that brings Magic: The Gathering card search, pricing, legality, and rulings into the conversation using Scryfall data.

    Python, discord.py, and httpx handle card lookups and API requests. It runs as a systemd service on Ubuntu, with structured logging, duplicate suppression, and graceful shutdown.

    Pythondiscord.pyhttpxsystemd
  • Dynamic DNS automation

    Scheduled

    Network operations · Automation

    A TypeScript command-line updater keeps selected Cloudflare DNS records aligned with the server’s public address.

    A systemd timer runs every five minutes. An explicit record allowlist and a dry-run mode keep the scope clear and let changes be inspected before they are applied.

    TypeScriptCloudflare APIsystemd
    Part of the support infrastructure

This is a portfolio, not a live availability feed. For current service checks, visit Dunamis Status. The Imaging Services replacement is a demo pending launch.

Behind the projects

One person, from application to operations.

I work across the page, the database, and the server. Read more about my responsibilities and technical skills, or get in touch about the work.