Skip to content

MarioEpkOne/CVapplication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mario Alina — Interactive Resume

A work sample that is the argument.

This is a deliberately over-engineered interactive resume + cover letter, built as a job-application work sample. It uses a modern TypeScript application-layer stack — Next.js, Tailwind, tRPC — while being honestly deployed on Fly.io instead of AWS. (Ask me why. Or read the ADR.)


What's here

Tab URL What it is
Resume / Data-driven CV — all content from src/data/resume.ts
Cover Letter /cover-letter Scrollytelling letter — content from src/data/cover-letter.ts
Play /play Placeholder for a future Agent Orchestrator mini-game

Features

  • Print-to-PDF: browser print with CSS that hides UI chrome and forces light colors
  • Dark mode: default light (#f5ecff brand background), toggle persists to localStorage
  • Cookieless analytics: first-party pageview tRPC ping to SQLite — no third-party, no cookie banner
  • OG image: branded purple card via next/og
  • Vitest suite: covers sanitization, rate-limit, and data integrity

Quickstart

npm install
cp .env.example .env.local  # Fill in values
npm run dev                  # http://localhost:3000
npm run db:generate          # Generate SQL migration from schema
npm run db:migrate           # Apply migrations to ./data/app.db
npm test                     # Run the Vitest suite
npm run build                # Production build → .next/standalone

Deployment (Fly.io)

  1. flyctl launch (first time) — uses fly.toml in this repo
  2. flyctl volumes create data --size 1 — SQLite volume
  3. flyctl secrets set NEXT_PUBLIC_SITE_URL=...
  4. Push to main → GitHub Actions → flyctl deploy --remote-only (needs FLY_API_TOKEN secret)

Migration runs automatically on container start via scripts/start.shscripts/migrate.mjs.


AWS by default, runs on Fly

The conventional default would be AWS. This app runs on Fly.io instead — intentionally, self-awarely, and with a documented rationale. The ADR argues the case: pick the tool that fits the workload, and be able to explain why.


Agent context

This repo ships CLAUDE.md (Claude Code), AGENTS.md (cross-tool), and four ADRs as first-class deliverables — because context as infrastructure for AI agents is the discipline the role values.

  • CLAUDE.md — Full architecture, commands, conventions, gotchas
  • AGENTS.md — Tool-agnostic agent guidance
  • docs/adr/ — Architecture Decision Records

Built by Mario Alina — June 2026

About

Interactive resume + cover letter — Next.js work sample for Purple LAB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors