Robert Bassi
โTurning Complexity into Maintainable Systems.โ
I specialize in designing and automating cloud infrastructure thatโs scalable, secure, and easy to maintain. Whether you're deploying your first app or modernizing legacy systems, I turn complex requirements into clean, reliable solutions.
Project Timeline
A chronological look at the projects I've built, automated, and deployed across cloud infrastructure and web platforms.
Self-Hosted BookStack Knowledgebase on Oracle Cloud
๐ Self-Hosted BookStack Knowledgebase on Oracle Cloud
Summary:
Deployed a personal knowledgebase using BookStack on an Oracle Cloud Ampere VM. Used Docker Compose for orchestration, LinuxServer.io images for maintainability, and Caddy as a secure HTTPS reverse proxy. Designed for easy backups, fast recovery, and long-term sustainabilityโgiving me full control and ownership of my knowledge system.
๐ What I Did
- Provisioned an Oracle Cloud Always Free VM (Ampere A1) running Ubuntu
- Built a BookStack stack with Docker Compose (BookStack app + MariaDB)
- Isolated and persisted all data/configs to
/mnt/data/docker/bookstack - Integrated with an existing Caddy reverse proxy for HTTPS and custom domains
- Connected Caddy and BookStack with a shared Docker network (
caddy_proxy) - Documented setup for repeatability and quick recovery
โ๏ธ Tech Stack
- BookStack (LinuxServer.io image)
- MariaDB (LinuxServer.io image)
- Docker & Docker Compose
- Oracle Cloud Free Tier (Ampere VM)
- Caddy (HTTPS reverse proxy)
- Domain + DNS
๐ง Challenges & Solutions
- Secure reverse proxying: Used Caddy and Docker network aliases to ensure BookStack was never directly exposed, only accessible through HTTPS.
- Persistent, portable storage: All config and data folders are mapped to a dedicated volume, making backups and migrations trivial.
- Easy recovery: The full stack can be redeployed in minutes using
docker compose up -d, restoring all knowledgebase data from backup if needed.
๐๏ธ Future Enhancements
- Automate knowledgebase article creation via API or workflow tools (n8n)
- Integrate SSO (OAuth/Entra ID) for easier admin access
- Build regular, automated backup scripts to cloud storage
๐ Links
Developer Portfolio with Astro
๐ Developer Portfolio with Astro
Summary:
Designed and developed a personal portfolio site using Astro v4+, featuring a filterable project timeline, contact form with confirmation message, and responsive dark mode toggle.
๐ What I Did
- Built layout using Astro components and Tailwind
- Integrated Lucide icons, contact form, and breadcrumb nav
- Created a dynamic project timeline from Markdown content
- Added client-side filtering with tags using Astro islands
- Deployed via GitHub Pages with clean branching strategy
โ๏ธ Tech Stack
- Astro v4
- TailwindCSS
- GitHub Actions (CI/CD)
- Lucide Icons
- Markdown content with tag filters
๐ง Challenges & Solutions
- Astro component hydration: Resolved with
client:loadislands - Dark mode theming: Used Tailwind variables and smooth transitions
- Timeline layout logic: Adjusted spacing and vertical rhythm for mobile/desktop
๐ Links
n8n Automation Server on Oracle Cloud
โ๏ธ n8n Automation Server on Oracle Cloud
Summary:
Built a personal automation platform with n8n, self-hosted on Oracle Cloud. This enabled powerful no-code and low-code workflows like email parsing, GitHub automation, and daily reminders.
๐ What I Did
- Deployed n8n in Docker on ARM-based Oracle VM
- Created Docker volumes and bind mounts for persistent config
- Integrated Caddy reverse proxy with custom domain + TLS
- Configured file upload behavior and ensured database cleanup
- Designed future-proofed automation workflows
โ๏ธ Tech Stack
- Oracle Cloud
- n8n (Docker)
- Caddy
- Custom SMTP via Resend
- n8n Workflows (e.g. GitHub issues, email triggers)
๐ง Challenges & Solutions
- Upload path handling in n8n: Avoided bloated
.n8nfolders by customizing outputs - Reverse proxy headers: Simplified with Caddyโs
header_upconfig - Workflow cleanup: Focused on stateless design to minimize persistent artifacts
๐ Links
Self-Hosted Mealie on Oracle Cloud
๐ฝ๏ธ Self-Hosted Mealie on Oracle Cloud
Summary:
Deployed a full Mealie recipe manager stack on an Oracle Cloud Ampere VM using Docker and Caddy. This project showcased secure, lightweight app hosting using Oracleโs free tier and efficient reverse proxying.
๐ What I Did
- Provisioned Oracle Cloud Ampere VM using Terraform
- Hardened the instance (firewall, fail2ban, SSH config)
- Set up Docker environment with volume separation on
/mnt/data - Deployed Mealie with PostgreSQL and Azure File-compatible persistent storage
- Reverse-proxied traffic through Caddy with HTTPS and subdomain routing
โ๏ธ Tech Stack
- Oracle Cloud Free Tier
- Ubuntu Server (Ampere)
- Docker Compose
- Caddy
- Mealie
- PostgreSQL
- fail2ban + ufw
๐ง Challenges & Solutions
- Caddy config for subdomain routing: Solved with flexible Docker networking
- Resend SMTP integration: Switched from SendGrid after pricing changes
- ARM image compatibility: Verified container support for Ampere architecture
๐ Links
Personal Knowledgebase with Astro and Azure Static Web Apps
๐ง Personal Knowledgebase with Astro and Azure Static Web Apps
Summary:
Built a private, self-documented knowledgebase using Astro v4+ and deployed it to Azure Static Web Apps. Designed to help resume paused or abandoned projects by capturing architecture, setup steps, and design choices in a searchable, Git-backed system. Protected access using Tailscale or Entra ID.
๐ What I Did
- Created a structured Astro site with Markdown-backed content
- Designed a clean, responsive layout using TailwindCSS
- Wrote documentation for multiple self-hosted and client projects
- Integrated tag-based filtering and semantic URL routing
- Deployed to Azure Static Web Apps with GitHub Actions
- Planned optional private access via Tailscale IP filtering or Entra ID
โ๏ธ Tech Stack
- Astro v4
- TailwindCSS
- Azure Static Web Apps
- GitHub Actions
- Markdown
- (Optional) Entra ID or Tailscale for access control
๐ง Challenges & Solutions
- Protecting a static site: Considered two options:
- Tailscale with an IP-restricted Azure Static Web App
- Entra ID auth with private routes
- Tag structure for docs: Created a standard for tagging each page by tech stack, status (e.g. archived, active), and domain (cloud, frontend, automation, etc.)
- Avoiding staleness: Focused on documenting only completed steps instead of future plans to reduce friction
๐๏ธ Future Enhancements
- Add search (Algolia or client-side fuzzy search)
- Version control for doc pages (auto pull Git commit messages)
- Visual timeline of project milestones
๐ Links
Astro Ecommerce Template on Azure
๐๏ธ Astro Ecommerce Template on Azure
Summary:
Created a custom ecommerce-ready Astro template with support for product listings, reusable layouts, Markdown content, and optimized image loading. Built with accessibility and mobile responsiveness in mind, and deployed to Azure Static Web Apps with GitHub Actions.
๐ What I Did
- Developed a fully custom Astro + Tailwind frontend
- Integrated product schema via Markdown and JSON validation
- Added mobile-first responsive layout,
<Image>optimization, and ARIA support - Wrote Terraform modules to deploy via Azure Static Web Apps
- Authored full project documentation and branching strategy
โ๏ธ Tech Stack
- Astro v4
- TailwindCSS
- Azure Static Web Apps
- GitHub Actions
- Markdown + JSON data
๐ง Challenges & Solutions
- Lightbox and testimonial bugfixes: Extracted reusable scripts for interactivity
- Performance: Implemented font-display swapping and image preloading
- Mobile optimization: Ensured every component looked great on phones
๐ Links
Azure Terraform Bootstrap for Client Projects
๐งฑ Azure Terraform Bootstrap for Client Projects
Summary:
Built a reusable Terraform bootstrap script for onboarding new Azure clients with GitHub integration. The script provisions a resource group, Terraform state backend, service principal, and sets up a secure GitHub repo with preconfigured CI/CD workflows.
๐ What I Did
- Wrote an idempotent PowerShell bootstrap script
- Created Terraform state storage (resource group + blob container)
- Generated Azure service principal scoped to the RG
- Set up GitHub repo with secrets and Terraform GitHub Actions workflow
- Included IP whitelist automation and Super Linter integration
โ๏ธ Tech Stack
- Terraform
- Azure CLI / PowerShell
- GitHub Actions
- Azure Storage
- Azure AD (Service Principal)
๐ง Challenges & Solutions
- Idempotent scripting: Ensured resources are reused if they already exist
- OIDC constraints: Workaround for limited OIDC support in non-main branches
- Secure secret management: Automated secret injection into GitHub
๐ Links
Mealie on Azure Container Apps
๐ด Mealie on Azure Container Apps
Summary:
Containerized Mealie and deployed it to Azure Container Apps with persistent PostgreSQL and Azure Files integration. This setup enabled scalable app hosting with automatic HTTPS ingress and isolated storage.
๐ What I Did
- Deployed PostgreSQL with Azure-managed instance
- Provisioned Azure File share and mounted it via
azureFilevolume - Built Docker Compose-compatible container definitions for ACA
- Set up Terraform modules for automated deployment and cleanup
- Configured HTTPS ingress with custom domains
โ๏ธ Tech Stack
- Azure Container Apps
- Azure PostgreSQL
- Azure Files
- Terraform
- Docker
๐ง Challenges & Solutions
- Azure Files in ACA: Used
volumeMounts+azureFileconfig for durable storage - Image compatibility: Verified builds for Linux x64
- PostgreSQL access: Managed firewall rules and connection strings through Bicep/Terraform