- Project Description
- Features and Functionality
- Technologies Used
- System Requirements
- Installation and Setup
- Project Structure
- Upcoming Features
- License
PortfolioHub is a modern web application built with Next.js that allows developers to create a personalized portfolio using data from their GitHub account. The application requires a personal GitHub access token to retrieve detailed user information and present it in a visually appealing dashboard with statistics, charts, and interactive elements.
- User profile: Basic GitHub user information (logo, username, and bio)
- Profile statistics: total stars, total forks, total repositories, as well as the average stars per repo, total commits, and total languages used.
- Language charts: Visualization of programming languages used in pie chart format
- Contribution calendar: Heatmap of commits and activity
- Language icons: Displays the logos of the programming languages used.
- Advanced statistics: Detailed repository and activity metrics
- Customizable themes: Interface with light and dark mode (ThemeSwitch)
- PDF export: Generate the portfolio in PDF format for download and sharing.
- QR sharing: Generate QR code to easily share the portfolio
- Rotating planets: This extra feature is available in the code for greater customization, but it is disabled in the Demo for clarity.
- Repository filters: Search and filter repositories by language or stars
- Live code editor: Ability to customize and run code sections
- Next.js 13+: React framework with hybrid rendering (SSG/SSR)
- React 18+: Main UI library
- Tailwind CSS: Utility-first CSS framework for styling
- Context API: Global state management for the application
- GitHub REST API: Retrieve user and repository data
- GitHub GraphQL API: Specific queries for detailed data
- React Loadable: Lazy loading of components
- QR Code Generation: Generate QR codes for sharing
- PDF Generation: Create PDF documents for export
- Chart Libraries: Data visualization in charts
- Node.js 16.8.0 or higher
- npm 7.0 or higher
- Personal GitHub access token with the appropriate scopes
The token must have the following permissions:
repo(including all sub-permissions)read:useruser:emailprojectread:projectworkflow
-
Clone the Repository
git clone https://github.com/marichu-kt/PortfolioHub cd portfoliohub -
Install Dependencies
npm install
-
Get and Configure the GitHub Token
To run the script, you must create and configure a.env.localfile in the root of the project with the content:NEXT_PUBLIC_GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXX
Replace
XXXXXXXXXXXXXXXXXXXwith:GITHUB_TOKEN: your personal access token from GitHub Settings โ Developer settings โ Personal access tokens
-
Run the Application
npm run dev
The application will be available at http://localhost:3000
-
Build for Production
npm run build npm start
portfoliohub/
โโโ public/ # Static files
โ โโโ images/ # General images
โ โ โโโ logo.png # Application logo
โ โโโ textures/ # Textures for components
โ โโโ earth.jpg
โ โโโ jupiter.jpg
โ โโโ mars.jpg
โ โโโ moon.jpg
โ โโโ venus.jpg
โโโ src/
โ โโโ components/ # React components
โ โ โโโ Achievements.js
โ โ โโโ AdvancedStats.js
โ โ โโโ AnimatedSection.js
โ โ โโโ GitHubCalendarS.js
โ โ โโโ LanguageChart.js
โ โ โโโ LiveCodeEditor.js
โ โ โโโ LoginButton.js
โ โ โโโ PdfExportButton.js
โ โ โโโ QRShare.js
โ โ โโโ RepoFilters.js
โ โ โโโ RotatingPlanet.js
โ โ โโโ Skills.js
โ โ โโโ ThemeSwitch.js
โ โโโ context/ # React contexts
โ โ โโโ ThemeContext.js
โ โโโ hooks/ # Custom Hooks
โ โ โโโ useAuth.js
โ โโโ pages/ # Next.js pages
โ โ โโโ _app.js # Main app component
โ โ โโโ customize.js # Customization page
โ โ โโโ dashboard.js # Main dashboard
โ โ โโโ index.js # Home page
โ โโโ services/ # Services and APIs
โ โโโ styles/ # Global styles
โ โ โโโ globals.css
โ โโโ utils/ # Utilities
โ โโโ languageicons.js
โโโ next.config.js # Next.js configuration
โโโ tailwind.config.js # Tailwind CSS configuration
โโโ postcss.config.js # PostCSS configuration
โโโ package.json # Dependencies and scripts
โโโ README.md # This file
- Predefined templates for different portfolio styles
- More detailed commit and contribution analysis
- Plugin system for extended features
- More ideas comment here: Discussions
To respect the copyright and attributions of the images used (exclusively for the planet texture images), I have used the tool:
๐ SaferLayer
This tool allows embedding the author reference or the intended activity into the images, ensuring proper credit attribution clearly within the website and preventing their removal with Artificial Intelligence.
If you have questions or want to provide suggestions, you can write to me at:
[email protected]
This project is licensed under the MIT License. See the file LICENSE for more details.