Modern portfolio website built with VitePress, showcasing mobile development projects and open source work.
- 🎨 Modern Design: Clean, professional design with responsive layout
- 📱 Portfolio Showcase: Display projects with screenshots and detailed information
- 🔗 GitHub Integration: Automatically fetch project data from GitHub repositories
- 🚀 Fast & Static: Static site generation for optimal performance
- 🎯 SEO Optimized: Built-in SEO features with VitePress
- 📦 Fastlane Support: Automatically integrate app metadata from Fastlane
.
├── docs/
│ ├── .vitepress/
│ │ ├── config.ts # VitePress configuration
│ │ ├── theme/ # Custom theme
│ │ │ ├── index.ts # Theme entry
│ │ │ └── custom.css # Custom styles
│ │ ├── components/ # Vue components
│ │ │ └── PortfolioGrid.vue
│ │ ├── data/ # Data files
│ │ │ └── portfolio.ts # Portfolio projects data
│ │ └── utils/ # Utility functions
│ │ └── github-loader.ts
│ ├── public/ # Static assets
│ │ └── img/ # Images
│ ├── portfolio/ # Portfolio pages
│ │ ├── index.md # Portfolio index
│ │ ├── ecairn.md # Project pages
│ │ └── ...
│ ├── index.md # Home page
│ ├── about.md # About page
│ ├── opensource.md # Open source work
│ └── contact.md # Contact page
├── package.json
└── README.md
- Node.js 18+
- npm or yarn
# Install dependencies
npm install# Start dev server
npm run docs:dev
# Server will be available at http://localhost:5173# Build for production
npm run docs:build
# Preview production build
npm run docs:previewEdit docs/.vitepress/data/portfolio.ts:
{
id: 'project-id',
title: 'Project Name',
subtitle: 'Platform',
description: 'Project description',
thumbnail: '/img/portfolio/project/thumb.png',
images: ['/img/portfolio/project/screenshot.png'],
date: 'January 2024',
client: 'Technology Used',
category: 'Application Development',
tags: ['Tag1', 'Tag2']
}For projects hosted on GitHub with Fastlane metadata:
{
id: 'project-id',
title: 'Project Name',
subtitle: 'Open Source Project',
description: 'Fallback description',
thumbnail: '/img/portfolio/project/icon.png',
date: 'Ongoing',
client: 'Open Source',
category: 'Open Source Development',
tags: ['NativeScript', 'Open Source'],
github: {
repo: 'owner/repository',
fastlanePath: 'fastlane/metadata/en-US' // Optional
}
}The website will automatically fetch:
- Repository stars, forks, and metadata
- Fastlane metadata (name, description, keywords)
- Screenshots from Fastlane metadata
- Latest release information
The site can automatically fetch app metadata from Fastlane directories:
your-repo/
└── fastlane/
└── metadata/
└── en-US/
├── name.txt
├── subtitle.txt
├── description.txt
├── keywords.txt
└── screenshots/
├── screenshot1.png
└── screenshot2.png
To avoid GitHub API rate limits in production:
- Create a GitHub Personal Access Token
- Add to your build environment:
export GITHUB_TOKEN="your_token_here"
Edit docs/.vitepress/theme/custom.css:
:root {
--vp-c-brand-1: #42C0ED; /* Primary brand color */
--vp-c-brand-2: #16afe6; /* Secondary brand color */
}Edit docs/.vitepress/config.ts:
nav: [
{ text: 'Home', link: '/' },
{ text: 'About', link: '/about' },
{ text: 'Portfolio', link: '/portfolio/' },
// Add more items...
]The repository includes a GitHub Actions workflow (.github/workflows/deploy.yml) that automatically deploys to GitHub Pages when you push to the main branch.
Setup Steps:
- Go to your repository Settings → Pages
- Set Source to "GitHub Actions"
- Push to main branch - the site will deploy automatically
# Build the site
npm run docs:build
# The built files will be in /dist directory
# Upload to your hosting providerCreate a new markdown file in docs/:
# Page Title
Your content here...VitePress will automatically generate routes based on file structure.
- VitePress: Static site generator
- Vue 3: Component framework
- TypeScript: Type-safe development
- Octokit: GitHub API integration
- GitHub Actions: CI/CD
This is a personal portfolio site, but suggestions and feedback are welcome!
Copyright © 2024 Akylas
For questions or issues:
- Open an issue on GitHub
- Contact via GitHub profile
- Live Site: https://akylas.github.io
- GitHub: https://github.com/farfromrefug
- Company: Akylas