Skip to content

Repository files navigation

emilio.is

Live Next.js TypeScript Node

Personal website and CV. Minimalistic landing page with animated lane selection, live at emilio.is. CV content in content/ drives both the website and a LaTeX PDF pipeline.

Getting Started

corepack enable
yarn install
yarn dev          # localhost:3000
yarn lint         # ESLint
yarn format       # Prettier
yarn type-check   # tsc --noEmit
yarn generate:cv  # regenerate templates/industrial/cv-content.tex from content/cv.json
yarn test:cv      # CV generation tests

generate:cv runs automatically via Husky on content/cv.json changes.

Tech Stack

  • Framework: Next.js 15 (App Router)
  • Language: TypeScript 5
  • Styling: CSS Modules (no Tailwind)
  • Animations: Motion 12 (Framer Motion successor)
  • Font: Geist via next/font
  • Analytics: Google Analytics via @next/third-parties
  • PDF pipeline: xelatex + scons via Docker, published as GitLab CI artifact
  • Hosting: Vercel (connected to GitLab)

Key Features

Lane selection — clicking "engineer", "photographer", or "founder" expands an identity lane and syncs the URL (/coding, /photographing, /building) via pushState. Animations stay smooth; browser back/forward restores state.

HTML CV at /coding/experience driven by content/cv.json. PDF CV at /coding/experience/pdf proxies the latest GitLab CI artifact.

OpenGraph image generated dynamically via @vercel/og. Pre-commit hooks auto-regenerate cv-content.tex when CV data changes.

Build PDF Locally

docker build --tag "xelatex" .
docker run --rm -v $(pwd)/templates/industrial:/cv xelatex -C /cv

Output lands in templates/industrial/. Requires Docker (~3 GB LaTeX base image on first build).

Structure

.
├── content/
│   ├── profile.json       # Name, tagline, social links, lane content → landing page
│   └── cv.json            # Full CV data → /coding/experience page + LaTeX PDF
├── src/
│   ├── app/               # Next.js App Router
│   │   ├── page.tsx       # Homepage (thin wrapper around HomeContent)
│   │   ├── coding/        # Lane route — loads homepage with lane pre-selected
│   │   │   └── experience/ # HTML CV + PDF proxy
│   │   ├── photographing/
│   │   └── building/
│   └── components/
│       └── HomeContent.tsx # Lane selection, animations, URL sync
├── templates/industrial/   # LaTeX CV template (xelatex + scons)
├── scripts/                # CV generation + tests
├── public/                 # Static assets (cv.pdf updated manually)
└── docs/
    ├── CURRENT_STATE.md
    └── sprints/

Deployment

Vercel deploys automatically on push to main (connected to GitLab). The PDF pipeline runs on GitLab CI and publishes emiliodeltessandoro.pdf as a build artifact.

Docs

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages