A cinematic, high-end web application that transforms your GitHub profile into a visual masterpiece.
🚀 Live Demo • 📖 Documentation • 🐛 Report Bug • 💡 Request Feature
GitAura is not just another GitHub profile analyzer. It's a cinematic experience that reveals the hidden aesthetics of your code journey. With stunning visualizations, AI-powered insights, and a global ranking system, GitAura transforms raw GitHub data into an immersive storytelling experience.
- 🎨 Cinematic UI/UX - Dark mode, glassmorphism, and ambient animations
- 📊 Deep Analytics - Comprehensive GitHub profile analysis with visual storytelling
- 🤖 AI-Powered Insights - Discover your developer persona and improvement suggestions
- 🏆 Global Leaderboard - See how you rank among developers worldwide
- ⚡ Real-Time Data - Live GitHub API integration with intelligent caching
- 🎭 Developer Persona - Get your unique coding character and tech zodiac
- 📈 Impact Metrics - Aura Index, Impact Magnitude, and more
- 🔐 GitHub OAuth Integration - Seamless authentication with NextAuth.js
- 📊 Interactive Dashboards - Bento box style layout with rich visualizations
- 📈 Advanced Charts - Language radar, activity timeline, commit patterns
- 🏅 Ranking System - Global leaderboard with tier badges (Platinum, Gold, Silver, Bronze, Iron)
- 🎨 Aura Avatar Generator - Unique visual representation of your coding style
- ⚔️ Duel Arena - Compare your stats with other developers
- ⏰ Time Machine - Track your coding journey milestones
- 🔍 Code Archeology - Discover your coding achievements and patterns
- 📱 Responsive Design - Perfect experience on all devices
- 🌙 Dark Mode - Beautiful dark theme optimized for extended use
- ⚡ Next.js 16 - Latest React framework with App Router
- 🎨 Tailwind CSS v4 - Modern utility-first CSS framework
- 🎭 Framer Motion - Smooth animations and transitions
- 📊 Recharts - Beautiful, responsive charts
- 🗄️ Supabase - PostgreSQL database with real-time capabilities
- 🔒 TypeScript - Full type safety throughout the application
- 🚀 Vercel Optimized - Built for edge deployment
- Node.js 18+ and npm/yarn/pnpm
- GitHub Account (for OAuth)
- Supabase Account (free tier works)
- GitHub Personal Access Token (optional, for higher rate limits)
# Clone the repository
git clone https://github.com/Enes-CE/Git-Aura.git
# Navigate to project directory
cd Git-Aura
# Install dependencies
npm install
# Create environment file
# Copy the example below and create .env.local file manually
# Configure your environment variables (see below)
# Then run the development server
npm run devOpen http://localhost:3000 in your browser.
Create a .env.local file in the root directory:
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key-here
# GitHub OAuth
GITHUB_ID=your_github_oauth_client_id
GITHUB_SECRET=your_github_oauth_client_secret
# Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# Optional: GitHub API Token (for higher rate limits)
GITHUB_TOKEN=your_github_personal_access_token
# Optional: GitHub Repo Info (for stars badge)
NEXT_PUBLIC_GITHUB_OWNER=Enes-CE
NEXT_PUBLIC_GITHUB_REPO=Git-Aura- Create a new project at supabase.com
- Go to Project Settings → API and copy your keys
- Run the SQL scripts below in SQL Editor
-- Users table
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT,
email TEXT UNIQUE,
email_verified TIMESTAMPTZ,
image TEXT
);
-- Accounts table
CREATE TABLE IF NOT EXISTS accounts (
id BIGSERIAL PRIMARY KEY,
"userId" UUID REFERENCES users(id) ON DELETE CASCADE,
type TEXT NOT NULL,
provider TEXT NOT NULL,
"providerAccountId" TEXT NOT NULL,
refresh_token TEXT,
access_token TEXT,
expires_at BIGINT,
token_type TEXT,
scope TEXT,
id_token TEXT,
session_state TEXT,
UNIQUE ("provider", "providerAccountId")
);
-- Sessions table
CREATE TABLE IF NOT EXISTS sessions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
"sessionToken" TEXT UNIQUE NOT NULL,
"userId" UUID REFERENCES users(id) ON DELETE CASCADE,
expires TIMESTAMPTZ NOT NULL
);
-- Verification tokens table
CREATE TABLE IF NOT EXISTS verification_tokens (
identifier TEXT NOT NULL,
token TEXT NOT NULL,
expires TIMESTAMPTZ NOT NULL,
PRIMARY KEY (identifier, token)
);-- Leaderboard table
CREATE TABLE IF NOT EXISTS public.user_leaderboard (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
github_username TEXT NOT NULL UNIQUE,
github_avatar_url TEXT,
impact_index NUMERIC NOT NULL DEFAULT 0,
total_stars INTEGER DEFAULT 0,
total_forks INTEGER DEFAULT 0,
followers INTEGER DEFAULT 0,
public_repos INTEGER DEFAULT 0,
dominant_language TEXT,
last_analyzed_at TIMESTAMPTZ DEFAULT NOW(),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indexes for performance
CREATE INDEX IF NOT EXISTS idx_leaderboard_impact
ON public.user_leaderboard(impact_index DESC);
CREATE INDEX IF NOT EXISTS idx_leaderboard_language
ON public.user_leaderboard(dominant_language, impact_index DESC);
CREATE INDEX IF NOT EXISTS idx_leaderboard_updated
ON public.user_leaderboard(last_analyzed_at DESC);- Go to GitHub Settings → Developer settings → OAuth Apps
- Click New OAuth App
- Fill in:
- Application name: GitAura
- Homepage URL:
http://localhost:3000(or your production URL) - Authorization callback URL:
http://localhost:3000/api/auth/callback/github
- Copy Client ID and Client Secret to
.env.local
For accurate global rankings, initialize the leaderboard:
# One-time initialization (comprehensive data collection)
curl -X POST http://localhost:3000/api/init-data
# Check status
curl http://localhost:3000/api/init-dataNote: Initial data collection may take 30-60 minutes due to GitHub API rate limits. After initialization, the system automatically updates daily via Vercel Cron Jobs.
Git-Aura/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/ # API routes
│ │ ├── leaderboard/ # Leaderboard page
│ │ └── page.tsx # Home page
│ ├── components/ # React components
│ │ ├── charts/ # Chart components
│ │ ├── leaderboard/ # Leaderboard components
│ │ └── ui/ # UI components
│ ├── lib/ # Utilities and helpers
│ │ ├── github.ts # GitHub API client
│ │ ├── leaderboard.ts # Leaderboard logic
│ │ └── analyzer.ts # Profile analysis
│ └── components/ # Shared components
├── public/ # Static assets
├── .env.local # Environment variables (not in git)
└── package.json
- Next.js 16 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS v4 - Utility-first CSS
- Framer Motion - Animation library
- Recharts - Chart library
- Lucide React - Icon library
- NextAuth.js - Authentication
- Supabase - Database & Auth adapter
- Octokit - GitHub API client
- Vercel - Hosting & Edge Functions
- Vercel Cron Jobs - Scheduled tasks
GET /api/leaderboard- Get leaderboard with filtersGET /api/test-token- Check GitHub token statusGET /api/auth/session- Get current session
POST /api/init-data- Initialize leaderboard dataPOST /api/collect-data- Collect comprehensive user dataGET /api/cron/update-leaderboard- Update leaderboard (cron)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow TypeScript best practices
- Use meaningful commit messages
- Add comments for complex logic
- Test your changes locally
- Update documentation if needed
- GitHub - For the amazing API
- Vercel - For seamless deployment
- Supabase - For the database infrastructure
- Next.js Team - For the incredible framework
- All Contributors - Thank you for making GitAura better!
- GitHub: @Enes-CE
- Project Link: https://github.com/Enes-CE/Git-Aura