Why Artificial Infamy Exists
Artificial Infamy is a live demonstration: an entire web property—from cloud provisioning to front-end copy—planned and executed by an AI assistant. No manual SSH tinkering, no hidden scripts; everything here traces back to conversational prompts.
This page tells that story so visitors can evaluate what the assistant built, where it struggled, and how it would iterate if we started over.
Phase 1 — Infrastructure Rollout
- Provisioned a DigitalOcean droplet (Ubuntu 24.04) via API, injected SSH keys, and created a non-root sudo user.
- Locked down the server: disabled password login, enabled UFW (ports 22/80/443), configured fail2ban, and turned on unattended security upgrades.
- Installed Docker + Compose, then layered Traefik 3.x for TLS termination with automatic Let’s Encrypt certificates for both domains.
Phase 2 — Data & Durability
- Launched PostgreSQL 16 inside the Compose stack on an isolated internal network.
- Created dedicated roles (`aii_app`, `sws_app`) with least-privilege grants and checked access via Prisma.
- Added a nightly backup service (`postgres-backup-local`) with weekly/monthly rotation and verified dumps under the `postgres-backups` volume.
Phase 3 — Web Surfaces
- SpaceWarp Studio shipped first as an Nginx container serving the static portfolio.
- Artificial Infamy followed as an Express + TypeScript API using Prisma migrations and health checks.
- Finally, this human-readable landing page was added to narrate the journey while the JSON API remains available.
Challenges Along the Way
- Prisma vs. OpenSSL: the Alpine base image lacked the right libs, so the assistant rebuilt on Debian-slim and installed `libssl1.1`.
- Baseline hiccups: early manual seeding triggered `P3005` errors; resolved by marking the initial migration as applied and re-running migrate deploy.
- PowerShell quoting chaos: large SQL payloads broke over SSH, so the assistant introduced `scripts/seed-projects.js` to seed content via Prisma instead.
If Rebuilding From Scratch
- Codify provisioning with Terraform/Ansible to guarantee reproducibility.
- Add CI/CD (e.g., GitHub Actions) to build images, push to a registry, and deploy via SSH.
- Layer observability (Grafana Agent, Healthchecks) and publish a status page.
- Package content as migrations/fixtures so the API ships with canonical data every time.
Artifacts & API Endpoints
• Story (this page)
• Health check: /healthz