This repository includes a streamlined template system for quickly creating new project documentation using a simple, effective template.
- Use for: All types of projects - work portfolio pieces, side projects, prototypes, experiments
- Includes: Overview, key features, technical details, implementation highlights, results, and links
- Best for: Clean, focused project documentation that highlights what matters most
npm run create-projectThis will prompt you for:
- Project ID (kebab-case, e.g.,
my-awesome-app) - Project Title (e.g.,
My Awesome App) - Project Subtitle
./create-project.sh project-id "Project Title" "Project subtitle"node scripts/create-project.js- Copy
_simple-template.md - Rename to your
project-id.md - Update the frontmatter (metadata between
---) - Replace template content with your project details
- Add the project ID to
src/utils/project-registry.ts
Each project file follows this structure:
---
id: unique-project-id
title: Display Title
subtitle: Brief description
description: Longer description for SEO and cards
category: work | personal | experiment
tags: [Technology, Framework, Tool]
image: /images/project-id.svg
featured: true | false
liveUrl: https://example.com (optional)
sourceUrl: https://github.com/username/repo
completedAt: YYYY-MM-DD
duration: X weeks
---
Content goes here...- id: Unique identifier, must match filename (without .md)
- title: Display name shown in UI
- subtitle: Brief tagline or summary
- description: Longer description for meta tags and project cards
- category: Type of project (
work,personal,experiment) - tags: Array of technologies used
- image: Path to project image (relative to public folder)
- featured: Whether to highlight on homepage
- liveUrl: Link to live demo (optional)
- sourceUrl: Link to source code repository
- completedAt: Completion date (YYYY-MM-DD format)
- duration: How long the project took
- Overview: Explain the problem solved and target audience
- Technical Stack: Use the JSON format for consistency
- Architecture: Include diagrams and design decisions
- Implementation: Show key code examples
- Performance: Document optimizations made
- Testing: Include test examples and strategy
- Challenges: Be honest about difficulties and solutions
- Results: Include metrics and outcomes
- Keep it concise: Focus on key points
- Highlight impact: What was achieved?
- Show key tech: Main technologies used
- Include visuals: Screenshots or diagrams
- Link to demo: If available
- Place images in
public/images/ - Use SVG format when possible for scalability
- Create a main project image named
project-id.svg - Ensure images are optimized for web
- Consider creating diagrams for technical projects
- Start with a compelling hook
- Use active voice
- Include specific metrics when possible
- Balance technical depth with readability
- Proofread for grammar and spelling
- Include code examples that showcase key concepts
- Use proper syntax highlighting
- Explain complex implementations
- Show before/after comparisons when relevant
- Use descriptive titles and subtitles
- Include relevant keywords in the description
- Add alt text for images
- Use semantic HTML structure
The src/utils/project-registry.ts file maintains a list of all projects. When using the automated scripts, this is updated automatically. For manual creation, add your project ID to the array.
export const PROJECT_REGISTRY = [
'newest-project',
'older-project',
// ... other projects
]Projects are displayed in the order listed, so put newer projects first.
The project uses markdown linting. Common rules:
- Use proper heading hierarchy
- Include blank lines around headings and lists
- Use underscore emphasis instead of asterisks
- End files with a single newline
- Specify language for code blocks
- Tell a story: Explain the journey, not just the outcome
- Show your thinking: Include decision-making process
- Be specific: Use concrete examples and metrics
- Include visuals: Screenshots, diagrams, and code examples
- Link everything: Demos, repos, related resources
- Update regularly: Keep content current as projects evolve
Project not showing up
- Check that the ID is added to
project-registry.ts - Verify the markdown file is in
public/projects/ - Ensure frontmatter is properly formatted
Images not loading
- Confirm image path is correct (
/images/project-id.svg) - Check that image exists in
public/images/ - Verify image format is supported
Markdown errors
- Run linting to check for syntax issues
- Ensure proper blank lines around headings
- Check that code blocks have language specified
This template system is designed to speed up project documentation while maintaining consistency and quality across your portfolio.