This repository contains the source code of my personal portfolio, designed not only as a presentation website but also as a real-world example of modern frontend architecture.
  • Dockerfile 100%
Find a file
Manuel Samuel Alfaro Sierra 2fc47a3859
All checks were successful
Deploy / deploy (push) Successful in 8s
[FEAT] Removed Samuel to the name title
2026-06-16 17:37:37 +02:00
.forgejo/workflows [FEAT] Ajusting ci.yml 2026-06-16 15:34:22 +00:00
docs [FEAT] Removed Samuel to the name title 2026-06-16 17:37:37 +02:00
.dockerignore [FEAT] Fixed dockerfile 2026-05-10 14:24:42 +02:00
.gitignore [FEAT] Fixed dockerfile 2026-05-10 14:24:42 +02:00
.gitlab-ci.yml [FEAT] Update gitlab-ci 2025-10-31 11:11:18 +01:00
Dockerfile [FEAT] Fixed dockerfile 2026-05-10 14:24:42 +02:00
HOW_BUILD_IMAGE.md [FEAT] Added little doc to describe how to build the docker image 2026-06-16 09:54:14 +00:00
package.json [FEAT] Improved home, articles and projects layouts 2026-05-10 14:19:01 +02:00
pnpm-lock.yaml [FEAT] Fixed dockerfile 2026-05-10 14:24:42 +02:00
README.md Add live site URL to README 2026-02-10 17:49:02 +01:00

Manuel Samuel Alfaro Sierra - Frontend Portfolio

A technical portfolio and articles site built with VitePress, showcasing frontend architecture, WebAssembly experiments, and practical engineering challenges.

Live site: https://manuel-samuel-alfaro-sierra.porfolio.dkt-mlk.es/

About

This portfolio contains technical articles exploring topics such as:

  • Client-side business logic with Rust + WebAssembly
  • PDF generation optimization (WebKit vs Chromium)
  • Multiplatform C++ UI libraries
  • 2D game development with C++ and SDL

Tech Stack

  • Static Site Generator: VitePress 2.x
  • Runtime: Node.js 20
  • Build Tool: Vite
  • Deployment: Docker + Nginx (Alpine-based)

Project Structure

.
├── docs/                    # VitePress source files
│   ├── articles/           # Technical articles (markdown)
│   ├── images/             # Article images and assets
│   ├── .vitepress/         # VitePress configuration
│   └── index.md            # Homepage
├── Dockerfile              # Multi-stage Docker build
├── package.json            # Node dependencies and scripts
└── README.md               # This file

Development

Prerequisites

  • Node.js 20 or higher
  • npm or pnpm

Install Dependencies

npm install

Run Development Server

npm run docs:dev

The site will be available at http://localhost:5173 with hot reload enabled.

Build for Production

npm run docs:build

The static site will be generated in docs/.vitepress/dist/.

Preview Production Build

npm run docs:preview

Docker Deployment

Build Docker Image

sudo docker build -t my-portfolio:latest .

This creates a multi-stage build:

  1. Build stage: Installs dependencies and builds the VitePress site
  2. Runtime stage: Serves the static files with Nginx (Alpine)

Run Container

sudo docker run -d -p 8080:80 --name portfolio my-portfolio:latest

The portfolio will be available at http://localhost:8080.

Docker Architecture

The Dockerfile uses a two-stage build for optimal image size:

  • Stage 1 (builder): Uses node:20-alpine to build the static site
  • Stage 2 (runtime): Uses nginx:alpine to serve the built files

Features:

  • Gzip compression enabled
  • Static asset caching (7 days)
  • Minimal image size (~20MB runtime)

License

This portfolio is personal work by Manuel Samuel Alfaro Sierra.

Contact

For inquiries or collaboration, please reach out through the contact information provided on the live site.