A curated set of features to make this CV generator complete for discerning developers
- Configurable Menu System - JSON-driven navigation with external link support
- GitHub Integration - Auto-fetch projects from user/org repositories
- Dual Output Generation - HTML + PDF (Typst) outputs
- Functional Architecture - Clean, maintainable Rust code with immutable data structures
- Responsive Design - Mobile-friendly interface with theme switching
- Accessibility - Screen reader support, keyboard navigation, ARIA attributes
- Typst Theme Configuration - Currently using hardcoded
grotesk-cvtheme
Priority: High | Complexity: Medium
Enable static page generation from markdown files with front matter.
---
title: "About Me"
layout: "page"
menu_label: "About"
---
# About Me
I'm a data engineer passionate about functional programming...Implementation:
- Add
pulldown-cmarkandgray_matterdependencies - Create
content/pages/directory structure - Extend template system to support markdown content
- Add page generation to build pipeline
Files to modify:
Cargo.toml- Add markdown dependenciessrc/main.rs- Add page generation stepsrc/site_config.rs- Add page configurationtemplates/page.html- Create page template
Quality Standards Applied:
- FP: Use
im::Vector<Page>for immutable page collections - Testing: Property-based tests for markdown parsing edge cases
- Error Handling:
Result<Page>with detailed parsing error messages - Documentation: Complete doc comments for all markdown processing functions
- Accessibility: Ensure generated HTML maintains semantic structure
Priority: High | Complexity: Medium
Replace JavaScript-based blog loading with static markdown generation.
---
title: "Building a Functional Language in Rust"
date: "2024-01-15"
tags: ["rust", "compilers", "functional-programming"]
excerpt: "After years of working with Scala..."
---
# Building a Functional Language in Rust
After years of working with Scala and functional programming...Implementation:
- Create
content/blog/directory structure - Add blog post parsing and generation
- Update blog template to use static content
- Add tag-based filtering and pagination
Files to modify:
src/blog_generator.rs- New module for blog processingtemplates/blog.html- Update to use static contenttemplates/blog_post.html- Individual post template
Quality Standards Applied:
- FP: Immutable
BlogPoststructs withim::Vector<Tag> - Testing: Property-based tests for front matter parsing
- Error Handling:
Result<BlogPost>with validation errors - Documentation: Complete API docs for blog processing functions
- Accessibility: Proper heading hierarchy and semantic HTML
Priority: High | Complexity: Low
Make Typst PDF theme configurable instead of hardcoded.
{
"typst": {
"theme": {
"name": "grotesk-cv",
"version": "1.0.2",
"source": "@preview/grotesk-cv"
},
"customization": {
"colors": {
"fill": "#f4f1eb",
"accent": "#d4d2cc",
"text_light": "#ededef",
"text_medium": "#78787e",
"text_dark": "#3c3c42"
},
"layout": {
"paper_size": "a4",
"left_pane_width": "71%",
"font": "HK Grotesk",
"font_size": "9pt"
}
}
}
}Implementation:
- Add
TypstConfigtosite_config.rs - Modify
typst_generator/markup.rsto use config - Add popular theme presets (grotesk-cv, modern-cv, academic-cv, minimal-cv)
- Update
generate_imports()to be dynamic
Files to modify:
src/site_config.rs- Add TypstConfig structsrc/typst_generator/markup.rs- Make theme configurableconfig/site.json- Add typst configuration section
Quality Standards Applied:
- FP: Immutable
TypstConfigwith validation - Testing: Unit tests for theme validation and fallbacks
- Error Handling:
Result<TypstConfig>with theme validation errors - Documentation: Complete docs for theme configuration options
- Performance: Efficient theme switching without recompilation
Priority: Medium | Complexity: Low
Allow users to choose their preferred Nerd Font for the website.
{
"fonts": {
"primary": "JetBrainsMono",
"fallback": "FiraCode",
"source": "nerd-fonts"
}
}Implementation:
- Add font configuration to site config
- Update CSS generation to use selected font
- Add font loading from CDN or local files
- Provide popular font presets
Files to modify:
src/site_config.rs- Add FontConfig structstatic/css/base/variables.css- Make font configurableconfig/site.json- Add font configuration
Priority: Medium | Complexity: Medium
Integrate popular terminal colorschemes for website theming.
{
"colorscheme": {
"name": "tokyonight",
"source": "ghostty-colors",
"url": "https://github.com/ghostty-org/ghostty-colors"
}
}Implementation:
- Add colorscheme configuration
- Create colorscheme-to-CSS mapping
- Support popular schemes (tokyonight, catppuccin, dracula, etc.)
- Add colorscheme preview functionality
Files to modify:
src/site_config.rs- Add ColorschemeConfig structsrc/css_generator.rs- New module for dynamic CSS generationconfig/site.json- Add colorscheme configuration
- All markdown content renders correctly
- Static pages integrate with navigation
- Blog posts support tags and filtering
- Typst themes are fully configurable
- Font selection works across all pages
- Colorschemes apply consistently
- Configuration is intuitive and well-documented
- Error messages are helpful and actionable
- Build process is fast and reliable
- Generated output is clean and professional
- All features have comprehensive tests
- Documentation is complete and up-to-date
- Examples demonstrate all capabilities
- Performance is optimized
- Static pages and blog posts as markdown
- Foundation for all content-driven features
- Typst theme configuration
- Complete the PDF generation story
- Font and colorscheme integration
- Polish the developer aesthetic
- Comprehensive testing
- Documentation and examples
- Performance optimization
- Immutable data structures - Use
im::Vectorandim::HashMap - Pure functions - No side effects, predictable outputs
- Method chaining - Use
.pipe()for composable transformations - Error handling - Comprehensive
Result<T>usage withanyhow - Type safety - Leverage Rust's type system for correctness
- Unit tests - Every public function must have tests
- Property-based testing - Use
proptestfor complex data structures - Integration tests - End-to-end functionality verification
- Test coverage - Maintain high coverage for all new code
- Edge case handling - Test error conditions and boundary cases
- Documentation - Comprehensive doc comments for all public APIs
- Error messages - Helpful, actionable error messages with context
- Performance - Efficient algorithms, minimal allocations
- Accessibility - ARIA attributes, keyboard navigation, screen reader support
- Security - Input validation, safe string handling
- Configuration-driven - JSON configs, not hardcoded values
- Template-based generation - Askama templates for all output
- Separation of concerns - Clear module boundaries
- Extensibility - Easy to add new features without breaking existing ones
- Maintainability - Clean, readable code that future developers can understand
For every new feature:
- FP Principles - Immutable data, pure functions, method chaining
- Comprehensive Tests - Unit, integration, and property-based tests
- Documentation - Complete doc comments and examples
- Error Handling - Proper
Result<T>usage with helpful messages - Accessibility - ARIA attributes and keyboard navigation
- Performance - Efficient implementation with minimal allocations
- Configuration - JSON-driven, not hardcoded
- Type Safety - Leverage Rust's type system
- Edge Cases - Handle error conditions gracefully
- Integration - Works seamlessly with existing features
Last Updated: 2024-09-25
Status: Planning Phase - Ready for Implementation