A powerful platform to analyze GitHub organizations, trending repositories, top contributors, and more.
Easily search for repositories, users, and organizations with advanced analytics and a user-friendly interface.
- π Fast search for repositories, users, and organizations
- π Organization analytics and statistics
- π Trending repositories and top contributors
- π Light/Dark theme support
- π Personal Access Token login for higher API rate limits
- π Search history and recent searches
- β‘ Dashboard and customizable settings
- Node.js (v16 or higher recommended)
- npm, yarn, pnpm, or bun
- (Optional) Make for Docker shortcuts
- (Optional) Docker for containerized development
- 
Clone the repository: git clone https://github.com/HappyHackingSpace/githubmon.git cd githubmon
- 
Install dependencies: npm install 
- 
Set up environment variables: cp .env.example .env.local Edit .env.localand fill in the required values (see Environment Variables Setup)
- 
Start the development server: npm run dev 
- 
Open http://localhost:3000 in your browser 
If you prefer Docker:
# Clone the repository
git clone https://github.com/HappyHackingSpace/githubmon.git
cd githubmon
# Setup environment (creates .env.local)
make setup
# Edit .env.local with your credentials
# Start with Docker
make docker-devThis application requires GitHub OAuth for authentication. Follow these steps:
- 
Create a new OAuth App with these settings: - Application name: GitHubMon (or your preferred name)
- Homepage URL: http://localhost:3000(for development)
- Application description: Optional description
- Authorization callback URL: http://localhost:3000/api/auth/callback/github
 
- 
After creating the app, copy the Client ID and Client Secret 
Copy .env.example to .env.local and update the values:
# Required - Get these from your GitHub OAuth App
GITHUB_CLIENT_ID=your_github_client_id_here
GITHUB_CLIENT_SECRET=your_github_client_secret_here
# Required - Generate a random secret
NEXTAUTH_SECRET=your_random_secret_here
# Required - Your app URL
NEXTAUTH_URL=http://localhost:3000To generate a secure NEXTAUTH_SECRET:
openssl rand -base64 32The application requests these minimal GitHub scopes:
- read:user- Read basic user profile information
- user:email- Access user email addresses
- public_repo- Read-only access to public repositories
These scopes follow the principle of least privilege and provide secure access without unnecessary permissions.
npm run dev          # Start development server
npm run build        # Build for production
npm run start        # Start production server
npm run lint         # Run ESLintAdvantages:
- β‘ Fastest hot reload
- π§ Easy debugging
- π» Direct IDE integration
make docker-dev              # Start development container
make docker-dev-build        # Rebuild and start (when Dockerfile changes)
make docker-dev-logs         # Show container logs
make docker-dev-down         # Stop containerdocker compose -f docker-compose.dev.yml up              # Start
docker compose -f docker-compose.dev.yml up --build      # Rebuild and start
docker compose -f docker-compose.dev.yml logs -f         # Show logs
docker compose -f docker-compose.dev.yml down            # StopWhen to use Docker for development:
- π§ͺ Testing production-like environment
- π Before submitting PRs
- π Reproducing production issues
- π₯ Ensuring consistency across team
make docker-prod         # Build and start production containers
make docker-up           # Start existing containers
make docker-down         # Stop all containers
make docker-logs         # Show production logs
make docker-restart      # Restart containers
make clean-docker        # Remove all containers and volumesdocker compose up --build -d     # Build and start
docker compose up -d             # Start existing
docker compose logs -f           # Show logs
docker compose down              # Stop
docker compose down -v           # Stop and remove volumes| Command | Description | 
|---|---|
| make help | Show all available commands | 
| make setup | Create .env.local from example | 
| make env | Same as setup | 
| Development | |
| make docker-dev | Start dev container (uses cache) | 
| make docker-dev-build | Rebuild and start dev container | 
| make docker-dev-logs | Show dev container logs | 
| make docker-dev-down | Stop dev container | 
| Production | |
| make docker-prod | Build and start production | 
| make docker-up | Start production (no build) | 
| make docker-down | Stop all containers | 
| make docker-logs | Show production logs | 
| make docker-restart | Restart production containers | 
| Utilities | |
| make clean-docker | Remove containers and volumes | 
Quick aliases available: make dev, make prod, make up, make down, make logs, make restart
- You can use the app without a GitHub token, but rate limits will be low (60 requests/hour)
- For full features and higher limits (5,000 requests/hour), log in with your GitHub Personal Access Token
- To generate a token:
- Go to GitHub β Settings β Developer settings β Personal access tokens
- Click "Generate new token (classic)"
- Select required scopes (e.g., repo,user)
- Copy and save your token securely
 
- Change organization/user name and token anytime from the Settings page
- Switch between light and dark themes
- Clear all local data with one click
- Your token is stored only in your browser (local storage)
- It is never sent to any server
- Tokens are automatically deleted after 1 month
- You can log out anytime
Option 1: Use npm directly (Easiest)
npm run dev
npm run buildOption 2: Install Make
# Using Chocolatey
choco install makeOption 3: Use Git Bash
- All makecommands work in Git Bash
- Comes pre-installed with Git for Windows
Make is usually pre-installed. If not:
# Ubuntu/Debian
sudo apt-get install build-essential
# macOS (if needed)
xcode-select --install# Fast iteration
npm run dev# Ensure consistency
make docker-dev# Test production build
make docker-prod
make docker-logsContributions are welcome! Please open an issue or submit a pull request.
MIT