portfolio/README.md
2026-02-03 15:12:09 +00:00

2 KiB

Portfolio

A high-performance, containerized professional portfolio and R&D lab built with Next.js 15, Tailwind CSS, and TypeScript. This project serves as both a public showcase and a dynamic bridge to a private Forgejo instance for real-time development tracking.

🏗️ Architecture Summary

  • Infrastructure: Hosted on a Hetzner cloud node.
  • Containerization: Fully Dockerized for linux/amd64 architectures.
  • CI/CD: Automated build and deployment via Woodpecker CI.
  • CDN: Assets and media served via Bunny CDN for global performance.
  • Data Layer: Dynamic changelog fetching from private repositories via Forgejo API.

🛠️ Technical Stack

  • Framework: Next.js 15 (App Router).
  • Styling: Tailwind CSS with a monospace "Technical Lab" aesthetic.
  • Icons: Lucide React.
  • Deployment: Docker Compose with force-dynamic runtime environment injection.

🚀 Deployment & Build

The project utilizes a specialized build process to ensure compatibility with the production Hetzner node environment:

Manual Build

docker buildx build --platform linux/amd64 -t portfolio:latest .

Automated Pipeline

Deployments are triggered via Git Releases. The Woodpecker pipeline executes the following steps: -Build: Compiles the Next.js application for linux/amd64. -Push: Uploads the image to a private container registry. -Deploy: Re-creates the container on the Hetzner node, injecting the FORGEJO_TOKEN from a secure .env file at runtime.

🧪 The_Forge Integration

"The Forge" is a dynamic project log system that provides a glimpse into active R&D cycles. -Metadata: Configured via data/forge.ts for project-specific details. -Real-time Logs: Fetched server-side from private changelog.md files. -Status: Includes a conditional ACTIVE_STREAM pulse based on commit recency. -Performance: Utilizes Next.js data caching with a 1-hour revalidation window.


Built for performance and technical transparency.