No description
Find a file
2026-01-16 00:32:45 +01:00
backend Initial commit 2026-01-16 00:32:45 +01:00
frontend Initial commit 2026-01-16 00:32:45 +01:00
.gitignore Initial commit 2026-01-16 00:32:45 +01:00
LICENSE Initial commit 2026-01-16 00:32:45 +01:00
README.md Initial commit 2026-01-16 00:32:45 +01:00

🌐 Portfolio Website

Personal portfolio website built with modern technologies.

Vue.js Bun TypeScript

Live: simonemiglio.eu

📌 Primary Repository: Forgejo
🪞 Mirrors: GitHubGitLabCodeberg


📋 Table of Contents


🛠 Tech Stack

Layer Technology Purpose
Frontend Vue 3 + Vite SPA framework & build tool
Backend ElysiaJS + Bun API server
Language TypeScript Type safety
Styling CSS3 Custom design
Container Podman Production deployment

🚀 Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://forgejo.it/simonemiglio/Website.git
cd Website

# Install and run backend
cd backend
bun install
bun run dev

# In a new terminal - install and run frontend
cd frontend
bun install
bun run dev

Access

Service URL
Frontend (dev) http://localhost:5173
Backend API http://localhost:3000
API Docs http://localhost:3000/api/docs

📁 Project Structure

Website/
├── backend/                 # ElysiaJS API Server
│   ├── src/
│   │   ├── modules/         # API endpoints
│   │   │   ├── bio/         # Personal info
│   │   │   ├── projects/    # Portfolio projects
│   │   │   ├── skills/      # Technical skills
│   │   │   └── connect/     # Contact endpoints
│   │   └── index.ts         # Entry point
│   ├── Containerfile        # Production container
│   └── package.json
│
├── frontend/                # Vue 3 SPA
│   ├── src/
│   │   ├── components/      # Vue components
│   │   │   ├── layout/      # Header, Footer
│   │   │   └── sections/    # Page sections
│   │   ├── App.vue          # Root component
│   │   └── main.ts          # Entry point
│   ├── public/              # Static assets
│   ├── Containerfile        # Production container
│   └── package.json
│
└── README.md

💻 Development

Backend Development

cd backend
bun run dev    # Starts with hot-reload on port 3000

The backend auto-restarts on file changes.

Frontend Development

cd frontend
bun run dev    # Starts Vite dev server on port 5173

Vite provides Hot Module Replacement (HMR) for instant updates.

API Proxy

The frontend dev server is configured to proxy /api/* requests to the backend at localhost:3000.


📦 Production Build

Frontend

cd frontend
bun run build

Creates optimized static files in frontend/dist/.

Backend

The backend runs TypeScript directly with Bun in production:

cd backend
bun src/index.ts

🚢 Deployment

This project is designed for deployment with Podman on a Linux server.

Container Images

Both frontend/ and backend/ include Containerfile definitions:

# Build frontend
cd frontend
podman build -t portfolio-frontend .

# Build backend
cd backend
podman build -t portfolio-backend .

Infrastructure

For full server deployment including reverse proxy, see the Homelab repository which contains:

  • Pod YAML definitions
  • Caddy reverse proxy configuration
  • Systemd Quadlet integration

📄 License

MIT License - See LICENSE for details.


Created by Simone Miglio 🇮🇹