My personal portfolio using the following tooling:
- Astro Framework: Fast, modern static site generation
- TypeScript: Strong typing enforcement for scripting
- Content-driven Collections: Blog, projects, photos, and resume content managed with
astro:contentand Zod schemas for validation - Resume PDF Generation: Programmatically generated PDFs with
pdf-liband Typst templates - Automated Linting & Formatting:
Biome-enforced coding standards and formatting - Modern CI/CD Workflows: Deployment through GitHub Actions for tests, linting, typechecking, and automatic builds/deployments
All resumes are built on a single source of truth resume.yaml file. Add new experiences, education, publications, or other data there.
Additional resumes can be built via profiles in the profiles.yaml file. Resumes using profiles with the one_page parameter set to true will be enforced via ci checks at build time.
Start local development server with live preview and automatic resume generation:
npm run devBuild for production:
npm run buildPreview production build locally:
npm run previewClean build artifacts:
npm run clean
npm run clean:full- Check for outdated dependencies:
npm run check- Update all dependencies safely:
npm run updateDev tools (
biome,depcheck,ncu) are executed vianpxfor reproducibility.
Run full dev validation:
npm run dev-check- Lint & format: Biome ensures consistent coding standards.
- Typecheck: TypeScript validates all types and schema contracts.
- Unused dependency detection: depcheck identifies stale packages.
-
GitHub Actions run on pull requests and merges to main:
- Linting, formatting, and typechecking with Biome and TypeScript
- Dependency checks with depcheck and npm-check-updates
- Full production build validation
-
Use
npm ciin CI to install exact versions frompackage-lock.json. -
Ensure
npm run dev-checkpasses before deployment to maintain code quality.
This project demonstrates modern frontend engineering practices:
- Strongly-typed content and components for maintainable, error-resistant code.
- Automated workflows for linting, formatting, typechecking, and dependency updates.
- Infrastructure optimized for performance, static generation, and modular scalability.
- Leverages modern web tooling without unnecessary global installs (
npxensures reproducibility).