PersonalSite
This site: portfolio, blog, links, admin tools, and deployment pipeline without a frontend framework.
This site is a record of my personal projects, thoughts and experience as a tech nerd, software engineer and tinker. It will be constantly evolving as I get more time to improve it, add more content and implement my latest ideas.
What it solves
I wanted a portfolio that stayed small, understandable, self-hosted, and deployable without a frontend build chain or heavyweight application server.
The result is a plain HTML/CSS/JS site with shared layout scripts, CGI admin endpoints, S3-backed content, CloudFront delivery, and repeatable Lambda container deployment. All running on demand within Amazon Free tier limits.
Who this is for
- People reviewing how this portfolio is built and operated
- Developers interested in framework-free web systems
- Builders comparing static pages with small dynamic admin tools
- Anyone evaluating my deployment, verification, and AI-assisted process
What it does
This is simple portfolio site with no frontend framework, no Node runtime, no build step, and no heavy CMS. It powers project documentation, a blog, curated links and a small analytics pipeline backed with a strong CI/CD workflow.
Production runs as an AWS Lambda container behind CloudFront.
BusyBox httpd serves from /tmp/www,
the Lambda Web Adapter bridges Lambda events to HTTP, and S3
stores blog posts, images, links, and analytics data. On cold
start, the container syncs S3 content into a local cache before
serving requests.
Workflow covered
- Publish content - write project pages, manage posts and links, upload images, and update manifests through the admin UI.
- Serve and persist - render public pages from static assets while CGI endpoints mirror content between local cache and S3.
- Deploy and verify - build a linux/amd64 image with Podman, push to ECR, update Lambda, and run validation plus smoke checks.
Technical highlights / stack
Why it matters
I want to get my fun work out for the world to see. As a software engineer that meant building it myself. I've never liked working on WYSIWYG site builders and want to keep cost to a minimum. This meant a site with a small overall footprint while site be visually interesting an showcasing my skills. It shows how I approach all problems, keep it as clean and simple as possible while including all the functionality that matter. Automate the repetitive tasks, create a stable working environment and make it repeatable and scalable.
Challenges
-
Lambda's read-only filesystem required a writable
/tmp/wwwruntime copy. - Learning about Lambda containers and how they require the Web Adapter, correct port setup, and cold-start timing.
- Don't overuse AI generated content. My initial deployments included too much AI generated content. While I worked to include the relevant information there was too much repetition and fluff. I still intend to use AI as much as possible, I'm working on balancing the efficiency it brings with maintaining my voice.
- Cold-start failures can look like generic website failures without smoke checks.
Current scope
Public site
- Project pages
- Blog rendering
- Links page
- Theme swatches
- Responsive navigation
Admin
- Login/logout
- Draft and publish flow
- Image upload/list/delete
- Link management
- Analytics review
Operations
- Podman image build
- ECR push
- Lambda update
- Static validation
- Production smoke checks
Related work
What to do next
Read the source if you want to inspect the no-build frontend, shell CGI admin workflows, S3 cache behavior, Lambda deployment, and validation scripts behind tebay.dev.