An open API service indexing awesome lists of open source software.

https://github.com/yashrajnayak/developer-portfolio

A modern, fully configurable developer portfolio that adapts to your content. Built with vanilla JavaScript and designed for GitHub Pages with automatic setup and dynamic content loading
https://github.com/yashrajnayak/developer-portfolio

developer-portfolio featured github-pages portfolio responsive-design vanilla-javascript

Last synced: 5 days ago
JSON representation

A modern, fully configurable developer portfolio that adapts to your content. Built with vanilla JavaScript and designed for GitHub Pages with automatic setup and dynamic content loading

Awesome Lists containing this project

README

          

# Developer Portfolio Template

A modern, fully configurable developer portfolio that adapts to your content. Built with vanilla JavaScript and designed for GitHub Pages with automatic setup, dynamic content loading, and intelligent README generation.

[![Use This Template](https://img.shields.io/badge/Use_This_Template-2ea44f?style=for-the-badge&logo=github&logoColor=white)](https://github.com/yashrajnayak/developer-portfolio/generate)

[![image](https://github.com/user-attachments/assets/57db89c3-cb51-4aac-b9df-800c7c4a811d)](https://yashrajnayak.github.io/)

## ๐Ÿš€ Quick Start

![Launch your portfolio flow showing template use, config editing, and GitHub Pages publishing](assets/readme/quick-start-flow.png)

1. Click "Use this template โ†’ "Create a new repository"
2. Name your repository `yourusername.github.io` (replace `yourusername` with your actual GitHub username)
3. **Enable & Run Setup**: Go to `https://github.com/YOUR_USERNAME/YOUR_REPO/actions/workflows/template-setup.yml`
- Click "I understand my workflows, go ahead and enable them"
- Click "Run workflow" โ†’ "Run workflow" (green button)
4. Wait for the setup to complete - The template will automatically:
- Create personalized `config.json` with your GitHub username
- Generate initial README.md with your GitHub stats
- Update LICENSE file with your name
- Remove template-specific files
- Prepare everything for customization
5. Customize your portfolio by editing `config.json` with your details
6. After editing `config.json` go to Actions โ†’ "Update README from Config" โ†’ click on "Run workflow" and again "Run workflow"
7. Check if GitHub Pages is enabled: Go to Settings โ†’ Pages โ†’ Deploy from branch โ†’ main

Wait for GitHub Pages deployment to complete and your portfolio would be live! ๐ŸŽ‰

## โœจ Technical Features

- ๐Ÿค– Automatically initializes your portfolio when you use the template
- โš™๏ธ Zero code changes required - everything configured through JSON
- ๐ŸŽ›๏ธ Feature Flags to enable/disable sections (about, projects, experience, skills, GitHub projects)
- ๐Ÿš€ GitHub integration with featured-topic, most-starred, or custom-feed project modes
- โšก Performance optimized - bundled CSS/JS, lazy images, and efficient DOM updates
- ๐Ÿ”Ž SEO ready - generated sitemap, robots.txt, web manifest, Open Graph, Twitter Card, and JSON-LD metadata
- ๐Ÿ—๏ธ Modular source architecture with committed production bundles

## ๐ŸŽจ User Experience

- ๐Ÿ“ฑ Fully responsive mobile-first design
- ๐ŸŒ“ Dark/light mode - smooth transitions with persistent preferences
- ๐Ÿ“Š Add 1 project or 100 projects - website adapts automatically
- ๐Ÿ”— Project links - Add links to live demos, repositories, or project pages for each project
- ๐Ÿ“‘ Print-friendly layout for resume/PDF exports

### โšก Automatic Setup

When you create a repository from this template:

- GitHub Actions automatically detects the new repository
- Checks if you named it correctly (`username.github.io`)
- Creates personalized `config.json` with your GitHub username pre-filled
- Generates a beautiful README.md with your GitHub stats
- Generates bundled assets and SEO files from your config
- Updates the LICENSE file with your name
- Removes all template-specific files you don't need
- Everything prepared for immediate GitHub Pages deployment โœ…

![image](assets/portfolio-generator-explainer.png)

## ๐Ÿ—๏ธ Template Architecture

![Developer portfolio template architecture showing config, GitHub Actions, build scripts, static site assets, browser runtime, GitHub API, and rendered portfolio sections](assets/readme/architecture-diagram.png)

The template keeps authoring simple with `config.json`, then uses GitHub Actions and local scripts to generate the production-ready pieces: bundled CSS/JS, README content, SEO files, and a static GitHub Pages site.

## ๐Ÿ“ Project Structure

```
โ”œโ”€โ”€ index.html # Main HTML file
โ”œโ”€โ”€ config.json # Your portfolio configuration
โ”œโ”€โ”€ .github/workflows/ # GitHub Actions for automation
โ”‚ โ”œโ”€โ”€ template-setup.yml # Initial portfolio setup (run once)
โ”‚ โ”œโ”€โ”€ template-setup.js # Setup script for template initialization
โ”‚ โ”œโ”€โ”€ update-readme.yml # README updates from config
โ”‚ โ”œโ”€โ”€ update-readme.js # README updates script
โ”‚ โ””โ”€โ”€ validate-site.yml # CI validation for config, bundles, and local paths
โ”œโ”€โ”€ css/ # Modular CSS files
โ”‚ โ”œโ”€โ”€ bundle.css # Generated production stylesheet
โ”‚ โ”œโ”€โ”€ main.css # Main stylesheet that imports all modules
โ”‚ โ”œโ”€โ”€ base.css # CSS reset, variables, base styles
โ”‚ โ”œโ”€โ”€ components.css # Shared component styles
โ”‚ โ”œโ”€โ”€ theme.css # Theme switcher and dark mode
โ”‚ โ”œโ”€โ”€ scroll-to-top.css # Scroll-to-top control
โ”‚ โ”œโ”€โ”€ print.css # Print/PDF styles
โ”‚ โ”œโ”€โ”€ header.css # Header and social links
โ”‚ โ”œโ”€โ”€ about.css # About section styles
โ”‚ โ”œโ”€โ”€ skills.css # Skills section styles
โ”‚ โ”œโ”€โ”€ experience.css # Experience section styles
โ”‚ โ”œโ”€โ”€ projects.css # Projects and GitHub projects
โ”‚ โ”œโ”€โ”€ animations.css # Keyframe animations
โ”‚ โ””โ”€โ”€ responsive.css # Mobile and tablet responsive styles
โ”œโ”€โ”€ js/ # Modular JavaScript files
โ”‚ โ”œโ”€โ”€ bundle.js # Generated production script
โ”‚ โ”œโ”€โ”€ main.js # Main application entry point
โ”‚ โ”œโ”€โ”€ config-manager.js # Configuration loading
โ”‚ โ”œโ”€โ”€ seo-manager.js # SEO meta tags management
โ”‚ โ”œโ”€โ”€ theme-manager.js # Dark/light theme switching
โ”‚ โ”œโ”€โ”€ loading-manager.js # Loading screen management
โ”‚ โ”œโ”€โ”€ section-manager.js # Content sections rendering
โ”‚ โ”œโ”€โ”€ header-manager.js # Header and social links
โ”‚ โ””โ”€โ”€ github-projects-manager.js # GitHub API integration
โ”œโ”€โ”€ scripts/ # Local build and validation scripts
โ”‚ โ”œโ”€โ”€ build-assets.mjs # Builds bundles, sitemap, robots.txt, and manifest
โ”‚ โ”œโ”€โ”€ check-local-paths.mjs # Blocks local machine paths before publishing
โ”‚ โ””โ”€โ”€ validate-config.mjs # Validates config and referenced assets
โ”œโ”€โ”€ robots.txt # Generated search crawler hints
โ”œโ”€โ”€ sitemap.xml # Generated sitemap
โ”œโ”€โ”€ site.webmanifest # Generated web app metadata
โ””โ”€โ”€ assets/
โ”œโ”€โ”€ readme/ # README diagrams and template graphics
โ”œโ”€โ”€ logos/ # Company logos (light and dark variants)
โ””โ”€โ”€ projects/ # Project screenshots
```

## ๐Ÿ”ง Configuration

All portfolio content is managed through `config.json`. After the automated setup:

1. Update personal information in the `header` and `about` sections
2. Add your experience in the `experience.jobs` array
3. Showcase your projects in the `projects.items` array
4. List your skills in the `skills.categories` array
5. Configure social links in the `social_links` array

### Example config.json structure:
```json
{
"header": {
"greeting": "Your Name",
"tagline": "Your Professional Tagline"
},
"about": {
"paragraphs": [
"Your introduction paragraph",
"Additional details about your background"
]
},
"experience": {
"jobs": [
{
"company": "Company Name",
"role": "Your Role",
"date": "Start - End",
"responsibilities": ["Achievement 1", "Achievement 2"]
}
]
}
// ... more configuration options
}
```

## ๐ŸŽจ Customization

### Adding Company Logos
1. Add logos to `assets/logos/` folder
2. Use format: `Company_Logo.png` and `Company_Logo_White.png` (for dark mode)
3. Reference in config.json: `"logo": "assets/logos/Company_Logo.png"`

### GitHub Projects
The template can show repositories in three modes:

- `featured`: show repositories with a configurable topic, such as `featured`
- `stars`: show your most-starred public repositories
- `feed`: read repositories from a custom JSON feed, then fall back to GitHub APIs

```json
{
"github_projects": {
"title": "Projects on GitHub",
"mode": "featured",
"topic": "featured",
"max_repos": 6,
"excluded_repos": []
}
}
```

### Theme Customization
- Modify CSS custom properties in `css/base.css`
- Colors, fonts, and spacing all centrally managed
- Dark/light mode variants automatically handled

## ๐Ÿš€ Deployment

### GitHub Pages (Recommended)
1. Your repository should be named `username.github.io`
2. Go to Settings โ†’ Pages
3. Source: "Deploy from a branch"
4. Branch: "main"
5. Your portfolio will be live at `https://username.github.io`

### Alternative Deployment
- **Netlify**: Connect your GitHub repository
- **Vercel**: Import your GitHub repository
- **Custom hosting**: Upload files to any web server

## ๐Ÿ”„ Automated Workflows

This template includes three GitHub Actions:

### 1. Template Setup (`template-setup.yml`)
- **Triggers**: Automatically when repository is created from template
- **Function**: Initializes your portfolio from the template
- **Actions**:
- Validates repository name format (`username.github.io` recommended)
- Creates personalized config.json with your GitHub username
- Generates initial README.md with GitHub stats
- Builds bundled assets, sitemap, robots.txt, and web manifest
- Updates LICENSE file with your name and current year
- Removes template-specific files (docs/, setup files, etc.)
- Commits everything ready for deployment

### 2. README Manual Update (`update-readme.yml`)
- **Triggers**: Manual workflow dispatch only
- **Function**: Regenerates README.md from your latest config when manually triggered
- **Actions**:
- Validates config.json format
- Generates beautiful README with your GitHub stats and info
- Rebuilds generated SEO and bundled assets
- Commits updated files automatically

### 3. Site Validation (`validate-site.yml`)
- **Triggers**: Push to main and pull requests
- **Function**: Keeps the template deployable
- **Actions**:
- Validates `config.json`
- Checks referenced local assets exist
- Blocks local machine-specific paths
- Rebuilds generated assets and fails if committed bundles are stale

## ๐Ÿ’ก Best Practices

1. **Repository Naming**: Use `username.github.io` for your main portfolio
2. **GitHub Projects**: Use `featured` mode for curated repos or `stars` mode for automatic ranking
3. **Regular Updates**: Keep your `config.json` updated with latest experience
4. **Logo Quality**: Use high-resolution logos for professional appearance
5. **Content Length**: Keep descriptions concise but informative

## ๐Ÿงช Local Validation

Run these before pushing changes:

```bash
npm run validate
npm run build
```

The validation script checks config shape, referenced assets, generated bundle freshness, and accidental local filesystem paths.

## ๐Ÿค Contributing

Want to improve this template?

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## ๐Ÿ™Œ Credits

GitHub stats cards are powered by [GitHub Readme Stats](https://github.com/anuraghazra/github-readme-stats) by [Anurag Hazra](https://github.com/anuraghazra).

## ๐Ÿ“„ License

This project is open source and available under the [MIT License](LICENSE).

Built with โค๏ธ for the developer community