Personal portfolio website, describing me and demonstrating some projects I am working on :)
Find a file
GeorgeWebberley 8508b679c0
All checks were successful
ci/woodpecker/release/woodpecker Pipeline was successful
Fixed mobile layout of CV
2026-02-04 16:45:06 +01:00
.vscode Cleaned up warnings 2026-01-30 12:42:41 +01:00
app Fixed mobile layout of CV 2026-02-04 16:45:06 +01:00
components Made active link and active stream conditional 2026-02-03 14:04:06 +01:00
data Fixed datasaur link 2026-02-03 15:53:34 +01:00
lib Made active link and active stream conditional 2026-02-03 14:04:06 +01:00
public Added printable CV 2026-02-04 12:12:14 +01:00
types Made active link and active stream conditional 2026-02-03 14:04:06 +01:00
.gitignore Initial commit from Create Next App 2026-01-26 14:41:48 +01:00
.prettierrc Added prettier auto-format and cleaned up comments 2026-01-30 12:40:25 +01:00
.woodpecker.yaml Added force-dynamic 2026-02-03 14:29:17 +01:00
docker-compose.yaml Mounted .env 2026-02-03 14:14:18 +01:00
Dockerfile Attempt 6 2026-01-26 18:22:06 +01:00
eslint.config.mjs Added prettier auto-format and cleaned up comments 2026-01-30 12:40:25 +01:00
next.config.ts Added favicon, bunny cdn and site name 2026-02-03 14:52:42 +01:00
package-lock.json Added prettier auto-format and cleaned up comments 2026-01-30 12:40:25 +01:00
package.json Added prettier auto-format and cleaned up comments 2026-01-30 12:40:25 +01:00
postcss.config.mjs Initial commit from Create Next App 2026-01-26 14:41:48 +01:00
README.md Updated title 2026-02-03 15:12:09 +00:00
tsconfig.json Initial commit from Create Next App 2026-01-26 14:41:48 +01:00

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.