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

https://github.com/imnexerio/portfolio

This is a Portfolio website which populates it content from GitHub.
https://github.com/imnexerio/portfolio

automation github imnexerio portfolio-website protfolio

Last synced: 4 months ago
JSON representation

This is a Portfolio website which populates it content from GitHub.

Awesome Lists containing this project

README

          

# ๐ŸŒŸ Modern GitHub Portfolio Website



![GitHub Portfolio](https://img.shields.io/badge/Portfolio-GitHub-blue?style=for-the-badge&logo=github)
![Version](https://img.shields.io/badge/Version-1.1-green?style=for-the-badge)
![License](https://img.shields.io/badge/License-AGPL--3.0-yellow?style=for-the-badge)
![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white)
![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white)
![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E)


**A modern, responsive portfolio website that dynamically displays your GitHub projects and statistics**

> ๐Ÿ’ก This portfolio is designed to showcase your skills, projects, and professional information in an elegant and interactive way.

---

## ๐Ÿ“‹ Table of Contents

- [โœจ Features](#-features)
- [๐Ÿ–ฅ๏ธ Demo](#๏ธ-demo)
- [๐Ÿš€ Quick Start](#-quick-start)
- [๐Ÿ”„ GitHub Actions Deployment](#-github-actions-deployment-recommended)
- [๐Ÿ› ๏ธ Configuration](#๏ธ-configuration)
- [๐Ÿ“‹ Project Structure](#-project-structure)
- [๐ŸŽจ Customization](#-customization)
- [๐Ÿ”ง Website Generator](#-website-generator)
- [๐Ÿ“ฑ Responsive Design](#-responsive-design)
- [๐Ÿ“‘ README Preview](#-readme-preview)
- [๐Ÿ–ผ๏ธ Modal Enhancements](#๏ธ-modal-enhancements)
- [๐Ÿงช Local Development](#-local-development-with-environment-variables)
- [๐Ÿ“„ License](#-license)
- [๐Ÿ™ Acknowledgements](#-acknowledgements)

---

## โœจ Features







GitHub Integration

Auto-fetch repositories, contributions & stats




Responsive Design

Works perfectly on all devices




Light/Dark Mode

Toggle between light and dark themes






Custom Themes

Multiple color themes available




Modern Effects

Parallax scrolling & 3D effects




Dynamic Profile Viewer

View any GitHub user's profile via URL



### ๐Ÿ”ฅ **NEW: Dynamic Profile Viewer**

View **any GitHub user's profile** using clean hash-based URLs:

```
https://yoursite.com/#octocat โ†’ View Octocat's profile
https://yoursite.com/#torvalds โ†’ View Linus Torvalds' profile
https://yoursite.com/ โ†’ View default profile
```

**Alternative formats also supported:**
```
https://yoursite.com/#user=octocat โ†’ Explicit hash format
https://yoursite.com/?user=octocat โ†’ Query parameter format
```

**Features:**
- โœ… Real-time GitHub data fetching for any user
- โœ… Clean hash-based URLs (e.g., `#octocat`)
- โœ… Automatic error handling for non-existent users
- โœ… Security validation to prevent malicious input
- โœ… Guest profile indicator showing whose profile is being viewed
- โœ… Social links hidden for guest profiles (privacy)
- โœ… Generated portfolios are locked to owner (no URL override)
- โœ… Works on all static hosting platforms (GitHub Pages, Netlify, Vercel)

**Note:** The demo site allows dynamic viewing, but portfolios generated via the website generator are locked to the owner's profile for security.

## ๐Ÿ–ฅ๏ธ Demo


Portfolio Demo




View Live Demo

## ๐Ÿš€ Quick Start


  1. Clone this repository

  2. git clone https://github.com/imnexerio/portfolio.git


  3. Open js/github-config.js and update your GitHub username


  4. Customize your personal information in the profile sections


  5. Deploy to your preferred hosting service (GitHub Pages, Netlify, Vercel, etc.)

## ๐Ÿ”„ GitHub Actions Deployment (Recommended)

This portfolio includes a GitHub Actions workflow for automatic deployment to GitHub Pages:

1. Fork this repository
2. Go to your repository's Settings > Secrets and variables > Actions
3. Add a new repository secret named `PAT_GITHUB` with your GitHub token
4. Add another secret named `FORMSPREE_ID` with your Formspree form ID (see Contact Form setup below)
5. Add a secret named `GOOGLE_VERIFICATION_CONTENT` with your Google site verification code (without the .html extension)
6. Go to Settings > Pages and set the source to "GitHub Actions"
7. Any push to the main branch will automatically deploy your portfolio

The deployment workflow will:
- Build and deploy your site to GitHub Pages
- Make your PAT_GITHUB and FORMSPREE_ID tokens available during the build process
- Create your Google site verification file for Search Console verification
- Keep your tokens secure by using GitHub's secret management

## ๐Ÿ“ž Contact Form Setup

The contact form uses [Formspree](https://formspree.io) to handle form submissions:

1. Sign up at [Formspree.io](https://formspree.io)
2. Create a new form and get your form ID (it looks like `abcdefgh`)
3. Set up the form ID in **one** of these ways:

**For GitHub Actions deployment:**
- Add a repository secret named `FORMSPREE_ID` with your form ID

**For manual deployment:**
- Open `index.html` and update the contact form with your Formspree ID:
```html

```

**For local development:**
- Create a `.env` file in the root directory:
```
PAT_GITHUB=your_github_personal_access_token
FORMSPREE_ID=your_formspree_id
```

## ๐Ÿ” Setting Up Google Site Verification

Adding your site to Google Search Console requires verifying ownership through a verification file.

1. **Get Your Google Verification Code**:
- Go to [Google Search Console](https://search.google.com/search-console/welcome)
- Enter your website URL (e.g., `https://yourusername.github.io/portfolio`)
- Choose "HTML file" verification method
- Google will provide a verification filename that looks like: `google1234567890abcdef.html`
- Note down the filename **without** the `.html` extension (e.g., `google1234567890abcdef`)

2. **Add as GitHub Secret**:
- Go to your GitHub repository
- Navigate to Settings > Secrets and Variables > Actions
- Click on "New repository secret"
- Name: `GOOGLE_VERIFICATION_CONTENT`
- Value: Your verification code (without `.html` extension)
- Click "Add secret"

3. **How It Works**:
- The GitHub Actions workflow automatically creates your verification file during deployment
- The file will be created at the root of your site with the correct content
- Google Search Console can then verify your ownership of the site

4. **Troubleshooting**:
- If verification fails, ensure the code is entered correctly without the `.html` extension
- Check that the workflow ran successfully and deployed your site
- Verify the file exists by visiting `https://yourusername.github.io/portfolio/google1234567890abcdef.html`

## ๐Ÿ› ๏ธ Configuration

### GitHub Integration

Edit the `js/github-config.js` file to set your GitHub username:

```javascript
// Private GitHub credentials
const _username = 'your-github-username';
// Leave token empty - use GitHub Actions workflow for secure deployment
const _token = ''; // Token should be set as PAT_GITHUB in GitHub repository secrets
```

> **Security Best Practice**: Never include your GitHub token directly in code. Use the GitHub Actions workflow to securely use your token from repository secrets.

### Social Links

Configure your social media links in `js/social-links.js`:

```javascript
const socialLinks = [
{ platform: 'github', url: 'https://github.com/your-username' },
{ platform: 'linkedin', url: 'https://linkedin.com/in/your-profile' },
// Add more platforms as needed
];
```

## ๐Ÿ“‹ Project Structure

Click to expand file structure

```
portfolio/
โ”œโ”€โ”€ index.html # Main HTML file
โ”œโ”€โ”€ css/ # Styling files
โ”‚ โ”œโ”€โ”€ modern-styles.css # Base styles
โ”‚ โ”œโ”€โ”€ advanced-animations.css # Animation effects
โ”‚ โ”œโ”€โ”€ wow-effects.css # Scroll effects
โ”‚ โ”œโ”€โ”€ consolidated-responsive.css # Responsive design
โ”‚ โ”œโ”€โ”€ github-stats.css # GitHub statistics styling
โ”‚ โ”œโ”€โ”€ github-readme.css # GitHub README styling
โ”‚ โ””โ”€โ”€ website-generator.css # Generator styling
โ”œโ”€โ”€ js/ # JavaScript files
โ”‚ โ”œโ”€โ”€ github-config.js # GitHub configuration
โ”‚ โ”œโ”€โ”€ github-stats.js # GitHub data fetching and display
โ”‚ โ”œโ”€โ”€ optimized-main.js # Main functionality
โ”‚ โ”œโ”€โ”€ social-links.js # Social media links handler
โ”‚ โ”œโ”€โ”€ readme-preview.js # README rendering functionality
โ”‚ โ”œโ”€โ”€ modal-override.js # Enhanced modal functionality
โ”‚ โ”œโ”€โ”€ env-loader.js # Environment variables loader
โ”‚ โ””โ”€โ”€ website-generator.js # Portfolio generator
โ””โ”€โ”€ LICENSE # AGPL License file
```

## ๐ŸŽจ Customization

### Themes

The portfolio includes several built-in themes:
- Light theme (default)
- Dark theme
- Multiple custom color options

To change the default theme, modify the `data-theme` attribute in the HTML tag:

```html

```

### Sections

The portfolio includes the following sections:
- Hero/Introduction
- About Me
- Skills & Expertise
- Projects (automatically populated from GitHub)
- GitHub Statistics
- Contact Information

Each section can be customized or hidden based on your preferences.

## ๐Ÿ”ง Website Generator

This portfolio includes a built-in generator that allows visitors to create their own customized version. The generator:

1. Collects user information
2. Customizes the portfolio with that information
3. Generates a downloadable ZIP file with the complete website

## ๐Ÿ“ฑ Responsive Design

The portfolio is fully responsive and optimized for:
- Desktop screens
- Tablets
- Mobile devices

## ๐Ÿ“‘ README Preview

The new README preview feature allows for:

- Live rendering of GitHub README files directly in project cards
- Support for GitHub-flavored markdown syntax
- Syntax highlighting for code blocks
- Automatic rendering of tables, images, and other markdown elements
- Custom styling that matches GitHub's appearance

To use this feature:

```javascript
// The README content is automatically loaded from your GitHub repositories
// No additional configuration required!
```

## ๐Ÿ–ผ๏ธ Modal Enhancements

The enhanced modal system provides:

- Smooth open/close animations
- Keyboard navigation (Escape to close, arrow keys for navigation)
- Touch-friendly swipe gestures on mobile
- Dynamic content loading
- Responsive layout that works on all screen sizes
- Advanced image gallery for project screenshots

## ๐Ÿงช Local Development with Environment Variables

This portfolio uses an environment variable loader system for secure local development:

### ๐Ÿ” Using env-loader.js

The `env-loader.js` file provides a secure way to use GitHub authentication and Formspree integration during local development without exposing your sensitive data in committed code:

```javascript
// Environment Variable Loader for Local Development
window.env = window.env || {};

function setupEnv() {
// Only set environment variables in local development environments
if (window.location.hostname === 'localhost' ||
window.location.hostname === '127.0.0.1') {

console.log('Local development environment detected');

// Set your GitHub token for local testing
window.env.PAT_GITHUB = 'your_github_token_here';

// Set your Formspree ID for local testing
window.env.FORMSPREE_ID = 'your_formspree_id_here';

Object.keys(window.env).forEach(key => {
console.log(`Loaded env variable: ${key}`);
});
}
}

setupEnv();
```

### ๐Ÿš€ Setup Instructions

1. Edit the `js/env-loader.js` file and:
- Replace `'your_github_token_here'` with your actual GitHub token
- Replace `'your_formspree_id_here'` with your Formspree form ID

2. Start your local development server:
```bash
# Using Python's built-in server
python -m http.server 8000

# Using Node.js http-server (install with: npm install -g http-server)
http-server

# Or use VS Code's Live Server extension
```

3. Open your browser to the local development URL (e.g., `http://localhost:8000` or `http://127.0.0.1:5500`)

### ๐Ÿ›ก๏ธ Security Features

- **Environment Detection**: Automatically detects local development environments (localhost/127.0.0.1)
- **Console Logging**: Provides feedback when environment variables are successfully loaded
- **Git Protection**: The file is included in `.gitignore` by default to prevent accidental token exposure

### ๐Ÿ“ง Setting Up Formspree for Contact Form

The contact form uses [Formspree](https://formspree.io) to handle submissions without requiring backend code.

1. **Create a Formspree Account**:
- Go to [Formspree.io](https://formspree.io)
- Sign up for an account (the free tier allows 50 submissions per month)

2. **Create a New Form**:
- After logging in, click on "New Form"
- Give your form a name (e.g., "Portfolio Contact Form")
- Choose the email address where you want to receive form submissions

3. **Get Your Form ID**:
- After creating the form, you'll see a form endpoint URL that looks like this:
`https://formspree.io/f/xxxxxxxx`
- The part after "/f/" is your form ID (xxxxxxxx)

4. **Configure for Local Development**:
- Open `js/env-loader.js` in your portfolio
- Update the line `window.env.FORMSPREE_ID = 'your_formspree_id_here';`
- Replace 'your_formspree_id_here' with your actual Formspree ID

5. **Configure for Production Deployment**:
- Go to your GitHub repository
- Navigate to Settings > Secrets and Variables > Actions
- Click on "New repository secret"
- Name: `FORMSPREE_ID`
- Value: Your Formspree form ID
- Click "Add secret"

6. **Troubleshooting**:
- If the form isn't working, check that you've entered the correct form ID
- Ensure your Formspree account is active
- Check for JavaScript console errors
- For more help, visit [Formspree's documentation](https://formspree.io/docs/)

## ๐Ÿ“„ License



This project is licensed under the [GNU Affero General Public License v3.0](LICENSE) (AGPL-3.0)


## ๐Ÿ™ Acknowledgements





---


Built with โค๏ธ by [IMNEXERIO](https://github.com/imnexerio)