This project is Alfredo Nader's personal portfolio website. It is a small Next.js application that presents core profile information, experiments, writing, and a downloadable CV.
- Next.js 16 with the App Router
- React 19
- TypeScript
- Tailwind CSS 4
- Font Awesome and Lucide icons
- Vercel Analytics and Speed Insights
- Node.js 20+ recommended
pnpm- A LaTeX distribution with
latexmkif you want to rebuild the CV PDF
pnpm installRun the local dev server:
pnpm devThen open http://localhost:3000.
pnpm dev
pnpm build
pnpm start
pnpm lint
pnpm tex -- src/cv/cv.tex
npm run tex -- src/cv/cv.tex
pnpm tex -- --once src/cv/cv.tex
npm run tex -- --watch src/cv/cv.tex
pnpm cvpnpm tex -- path/to/file.tex watches the file and recompiles it automatically when it changes.
npm run tex -- path/to/file.tex runs the same executable through npm.
--watch is explicit watch mode. It is also the default.
--once disables watching and performs a single compile.
If you run pnpm tex with no file argument, the script scans the repository for .tex files, writes the index to /tmp/tex_files.json, and opens an fzf picker so you can choose one interactively.
pnpm cv compiles src/cv/cv.tex and copies the generated PDF to public/f/cv.pdf.
Direct executable usage:
./src/scripts/tex src/cv/cv.tex
./src/scripts/tex --watch src/cv/cv.tex
./src/scripts/tex --once src/cv/cv.tex
./src/scripts/texDependency installs on macOS:
brew install --cask mactex-no-gui
brew install fzf
brew install ripgrep
brew install nodesrc/ Next.js routes, UI, CV source, and supporting components
public/ Static assets such as images and downloadable files
Notable paths:
src/app/(main)/page.tsx: homepage contentsrc/cv/cv.tex: LaTeX source for the CVsrc/cv/resume.cls: custom LaTeX class used by the CVpublic/f/cv.pdf: built CV PDF served by the site
Main runtime dependencies:
next,react,react-domtailwind-merge,class-variance-authority,clsx@fortawesome/*,lucide-react@vercel/analytics,@vercel/speed-insightssharp,next-themes,react-wrap-balancer
Main development dependencies:
typescripteslint,eslint-config-nexttailwindcss,@tailwindcss/postcss@types/node,@types/react,@types/react-dom