Skip to content

matintohidi/github-profile-finder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub Profile Finder πŸ”

A modern and fast web application for searching and viewing GitHub user profiles along with their repositories.

πŸ“Έ Overview

This project provides a beautiful and user-friendly interface for searching GitHub profiles. Users can search for people by username and view complete profile information including bio, followers, repositories, and other details.

πŸš€ Technologies Used

Core Technologies

  • Next.js 16 - React framework for server-side rendering and static site generation
  • React 19 - UI library with React Compiler capability
  • TypeScript - For type safety and better developer experience

UI & Styling

Code Quality

  • Biome - Fast linter and formatter for code quality

APIs Used

This project uses GitHub REST API v3 to fetch data:

  • GET /search/users - Search users with various filters
  • GET /users/{username} - Get complete user profile information
  • GET /users/{username}/repos - Get list of user's public repositories

πŸ“š GitHub API Documentation

✨ Features

  • πŸ” Real-time GitHub user search with debouncing
  • πŸ‘€ Display complete profile information (avatar, bio, location, followers, following, etc.)
  • πŸ“¦ List of public repositories with details (stars, forks, programming language)
  • πŸ“„ Pagination for repositories
  • πŸŒ“ Light and dark mode support
  • ⚑ Server-Side Rendering and ISR for improved performance
  • ⚑ Streaming rendering for faster page loads
  • 🎨 Responsive and beautiful design
  • πŸ’Ύ Data caching for improved speed
  • 🐳 Docker support

πŸ“‹ Prerequisites

Before running the project, make sure you have one of the following installed:

Method 1: Local Execution

  • Node.js version 20 or higher
  • One of the package managers: pnpm (recommended), npm, or yarn

Method 2: Docker Execution

  • Docker Desktop or Docker Engine
  • Docker Compose (optional)

πŸ› οΈ Installation and Setup

Method 1: Local Execution

1. Clone the Project

git clone https://github.com/matintohidi/github-profile-finder.git
cd github-profile-finder

2. Install Dependencies

With pnpm (recommended):

pnpm install

With npm:

npm install

With yarn:

yarn install

3. Run the Project in Development Mode

# With pnpm
pnpm dev

# With npm
npm run dev

# With yarn
yarn dev

The project will be available at http://localhost:3000.

4. Build and Run Production

Build the project:

# With pnpm
pnpm build

# With npm
npm run build

# With yarn
yarn build

Run the production version:

# With pnpm
pnpm start

# With npm
npm start

# With yarn
yarn start

Method 2: Docker Execution

Prerequisites

⚠️ Make sure Docker is installed on your system and running.

To check Docker status:

docker --version
docker ps

1. Clone the Project

git clone https://github.com/matintohidi/github-profile-finder.git
cd github-profile-finder

2. Build the Image

docker build -t github-profile-finder .

3. Run the Container

docker run -p 3000:3000 github-profile-finder

Or using Docker Compose (if you have a docker-compose.yml file):

docker-compose up

The project will be available at http://localhost:3000.

Stop the Container

# Find Container ID
docker ps

# Stop Container
docker stop <container-id>

πŸ“ Project Structure

github-profile-finder/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/                    # App Router (Next.js 14+)
β”‚   β”‚   β”œβ”€β”€ (home)/            # Home page and search
β”‚   β”‚   β”œβ”€β”€ profile/           # User profile pages
β”‚   β”‚   β”œβ”€β”€ layout.tsx         # Main layout
β”‚   β”‚   └── globals.css        # Global styles
β”‚   β”œβ”€β”€ components/            # Shared components
β”‚   β”‚   β”œβ”€β”€ header/            # Site header
β”‚   β”‚   β”œβ”€β”€ input/             # Input components
β”‚   β”‚   └── ui/                # Chakra UI components
β”‚   β”œβ”€β”€ configs/               # Settings and configurations
β”‚   β”œβ”€β”€ interfaces/            # TypeScript Interfaces
β”‚   β”œβ”€β”€ theme/                 # Chakra UI theme settings
β”‚   └── types/                 # Type Definitions
β”œβ”€β”€ public/                    # Static files
β”œβ”€β”€ Dockerfile                 # Docker configuration
β”œβ”€β”€ next.config.ts             # Next.js configuration
β”œβ”€β”€ tsconfig.json              # TypeScript configuration
β”œβ”€β”€ biome.json                 # Biome configuration
└── package.json               # Dependencies and scripts

🎯 Available Scripts

# Run development server
pnpm dev / npm run dev / yarn dev

# Build for production
pnpm build / npm run build / yarn build

# Run production server
pnpm start / npm start / yarn start

# Check code quality (Linting)
pnpm lint / npm run lint / yarn lint

# Format code
pnpm format / npm run format / yarn format

🌿 Git Strategy and Development

This project uses a simple Direct to Main strategy:

  • βœ… All changes are pushed directly to the main branch
  • βœ… No use of Feature Branches
  • βœ… Solo Development

Reasons for Choosing This Strategy:

  1. Small Project Size: This is a small personal project
  2. Single Developer: Only one person is working on the project
  3. Simplicity: No need for the complexities of Git Flow or Feature Branches
  4. Development Speed: Enables faster development without additional overhead

⚠️ Note: For team projects or larger codebases, using strategies like Git Flow, GitHub Flow, or Trunk-Based Development is recommended.

πŸ‘¨β€πŸ’» Author

Matin Tohidi

πŸ™ Acknowledgments

  • GitHub API for providing free and public API
  • The Next.js team for the amazing framework
  • The Chakra UI team for beautiful and functional components

⭐ If you found this project useful, please give it a star!

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages