GitGo is a modern web application that helps developers discover open source projects matching their skills, build professional portfolios, and connect with the developer community.
- OAuth Authentication: Secure sign-in with GitHub
- Automatic Data Sync: Fetches repositories, languages, and statistics
- Real-time Updates: Keep your profile data fresh with one-click sync
- Technology Mapping: Tracks which technologies you use across projects
- 4 Professional Templates: Modern, Minimal, Creative, and Professional designs
- 6 Color Themes: Midnight, Ocean, Forest, Sunset, Lavender, and Monochrome
- JSON Schema-Based: All content driven by structured data, not hardcoded HTML
- Inline Editing: Click any text to edit directly in the preview
- Drag & Drop Sections: Reorder portfolio sections (coming soon)
- AI Content Generation: Automatically generates portfolio from GitHub data
- HTML/CSS Export: Download standalone HTML file for full customization
- Code Editor: View and copy HTML/CSS with syntax highlighting
- Skill-Based Recommendations: Find projects matching your tech stack
- Match Scoring: See how well projects align with your skills
- Trending Projects: Discover popular open source repositories
- Beginner-Friendly Filters: Find projects with good first issues
- Social Feed: Share updates, milestones, and achievements
- Likes & Comments: Engage with other developers
- Post Composer: Share code snippets, projects, and thoughts
- Real-time Interactions: Instant feedback on community posts
- Profile Management: Update name, bio, location, and contact info
- Notification Preferences: Control email and push notifications
- Integration Management: Connect GitHub and other services
- Technology Map: View your tech stack usage across projects
- Next.js 16 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- shadcn/ui - Beautiful UI components
- Lucide Icons - Modern icon library
- Next.js API Routes - Serverless API endpoints
- NextAuth.js - Authentication with GitHub OAuth
- MongoDB - Document database for user data
- Mongoose - MongoDB object modeling
- Redis - Caching layer for performance
- Vercel - Deployment platform (recommended)
- GitHub API - Repository and user data
- MongoDB Atlas - Cloud database (recommended)
- Redis Cloud - Managed Redis instance (recommended)
- Node.js 18+ and npm/pnpm
- MongoDB instance (local or Atlas)
- Redis instance (local or cloud)
- GitHub OAuth App credentials
git clone https://github.com/yourusername/gitgo.git
cd gitgo/source_codenpm install
# or
pnpm installCreate a .env file in the source_code directory:
# NextAuth Configuration
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key-here
# GitHub OAuth
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
# Database
MONGODB_URI=mongodb://localhost:27017/gitgo
# or MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/gitgo
# Redis
REDIS_URL=redis://localhost:6379
# or Redis Cloud:
# REDIS_URL=redis://username:password@host:port- Go to GitHub Developer Settings
- Click "New OAuth App"
- Fill in the details:
- Application name: GitGo (or your preferred name)
- Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/api/auth/callback/github
- Copy the Client ID and Client Secret to your
.envfile
Option A: Local MongoDB
# Install MongoDB locally
# macOS
brew install mongodb-community
# Start MongoDB
brew services start mongodb-communityOption B: MongoDB Atlas (Recommended)
- Create account at MongoDB Atlas
- Create a free cluster
- Get connection string and add to
.env
Option A: Local Redis
# Install Redis locally
# macOS
brew install redis
# Start Redis
brew services start redisOption B: Redis Cloud (Recommended)
- Create account at Redis Cloud
- Create a free database
- Get connection string and add to
.env
npm run dev
# or
pnpm devOpen http://localhost:3000 in your browser.
source_code/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β β βββ auth/ # NextAuth endpoints
β β βββ community/ # Community posts API
β β βββ github/ # GitHub data API
β β βββ portfolio/ # Portfolio management API
β β βββ user/ # User settings API
β βββ dashboard/ # Dashboard pages
β β βββ community/ # Community feed
β β βββ explore/ # Project discovery
β β βββ projects/ # User projects
β β βββ settings/ # User settings
β βββ onboarding/ # Onboarding flow
β βββ portfolio/ # Portfolio builder
β βββ page.tsx # Landing page
βββ components/ # React components
β βββ community/ # Community components
β βββ dashboard/ # Dashboard components
β βββ landing/ # Landing page components
β βββ portfolio/ # Portfolio components
β β βββ sections/ # Portfolio section components
β β βββ templates/ # Portfolio templates
β β βββ code-editor-modal.tsx
β β βββ editable-text.tsx
β β βββ portfolio-controls.tsx
β β βββ portfolio-preview.tsx
β β βββ schema-renderer.tsx
β βββ settings/ # Settings components
β βββ ui/ # shadcn/ui components
βββ hooks/ # Custom React hooks
β βββ use-github.ts # GitHub data hook
β βββ use-toast.ts # Toast notifications
βββ lib/ # Utility libraries
β βββ auth.ts # NextAuth configuration
β βββ github.ts # GitHub API client
β βββ mongodb.ts # MongoDB connection
β βββ redis.ts # Redis client
β βββ portfolio-export.ts # HTML/CSS export
β βββ portfolio-schema.ts # Portfolio JSON schema
β βββ portfolio-templates.ts # Template definitions
β βββ utils.ts # Utility functions
βββ models/ # MongoDB models
β βββ Portfolio.ts # Portfolio schema
β βββ Post.ts # Community post schema
β βββ Repository.ts # Repository schema
β βββ User.ts # User schema
β βββ UserPreferences.ts # User preferences schema
βββ types/ # TypeScript types
β βββ next-auth.d.ts # NextAuth type extensions
βββ public/ # Static assets
- Modern: Clean contemporary design with gradient hero and card-based projects
- Minimal: Typography-focused with generous whitespace
- Creative: Bold artistic design with asymmetric layouts
- Professional: Corporate polished design for business
- Midnight: Blue tones with dark background
- Ocean: Cyan/teal ocean-inspired palette
- Forest: Green nature-inspired colors
- Sunset: Warm orange/amber tones
- Lavender: Purple/violet aesthetic
- Monochrome: Black and white minimalist
- Hero: Title, subtitle, description, CTA button
- Stats: GitHub statistics (repos, stars, forks, followers)
- Skills: Technology tags with project counts
- Projects: Featured repositories with thumbnails
- About: Bio, highlights, and personal info
- Contact: Email and social media links
Click any text element to edit:
- Single-line text: Click, edit, press Enter or click away
- Multi-line text: Click, edit, press Escape to cancel
- Visual indicators show editable elements on hover
- View Code: Opens modal with HTML/CSS tabs
- Copy Code: Copy full HTML, CSS only, or body content
- Download HTML: Get standalone HTML file
- Customize: Edit downloaded file in any editor
- User clicks "Sign in with GitHub"
- Redirected to GitHub OAuth
- User authorizes the app
- GitHub returns access token
- Token stored in JWT session
- User data synced to MongoDB
- Cached in Redis for performance
User β GitHub API β MongoDB β Redis Cache β UI
- User triggers sync
- Fetch data from GitHub API
- Store in MongoDB (source of truth)
- Cache in Redis (1 hour TTL)
- Subsequent requests served from cache
- User Profile: 1 hour TTL
- Repository List: 30 minutes TTL
- Repository Details: 24 hours TTL
- Technology Map: 1 hour TTL
GitHub Data β AI Generator β JSON Schema β Renderer β HTML/CSS
- Fetch GitHub data and technology map
- AI generates portfolio sections
- Store JSON schema in MongoDB
- Render from schema with selected theme
- Export to standalone HTML
- Push code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
# Install Vercel CLI
npm i -g vercel
# Deploy
vercelNEXTAUTH_URL=https://your-domain.com
NEXTAUTH_SECRET=your-production-secret
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
MONGODB_URI=your-mongodb-atlas-uri
REDIS_URL=your-redis-cloud-uri-
MongoDB Atlas:
- Create production cluster
- Whitelist Vercel IPs or use 0.0.0.0/0
- Create database user
- Get connection string
-
Redis Cloud:
- Create production database
- Get connection string
- Configure SSL if required
# Run type checking
npm run type-check
# Build for production
npm run build
# Start production server
npm start- Redis for GitHub API responses
- MongoDB for persistent data
- Next.js static generation where possible
- GitHub OpenGraph images for projects
- Next.js Image component for avatars
- Lazy loading for project cards
- Dynamic imports for heavy components
- Route-based code splitting
- Suspense boundaries for loading states
- OAuth 2.0: Secure GitHub authentication
- JWT Sessions: Encrypted session tokens
- Environment Variables: Sensitive data in .env
- API Rate Limiting: Prevent abuse (coming soon)
- Input Validation: Sanitize user inputs
- CORS: Configured for API routes
# Check MongoDB is running
mongosh
# Test connection string
mongosh "your-connection-string"# Check Redis is running
redis-cli ping
# Test connection
redis-cli -u your-redis-url- Verify callback URL matches exactly
- Check client ID and secret are correct
- Ensure app is not suspended
# Clear Next.js cache
rm -rf .next
# Reinstall dependencies
rm -rf node_modules package-lock.json
npm install
# Rebuild
npm run buildGET /api/github/profile- Get user profile and reposPOST /api/github/sync- Sync latest GitHub dataGET /api/github/skills- Get user skills/languagesGET /api/github/technology-map- Get technology usage mapGET /api/github/repo/[id]- Get specific repository
GET /api/portfolio- Get user's portfolioPOST /api/portfolio- Save portfolio changesPOST /api/portfolio/generate- Generate portfolio from GitHub
GET /api/user/profile- Get user profilePATCH /api/user/profile- Update user profileGET /api/user/preferences- Get notification preferencesPATCH /api/user/preferences- Update preferences
GET /api/community/posts- Get community postsPOST /api/community/posts- Create new postPOST /api/community/posts/[id]/like- Like a postPOST /api/community/posts/[id]/comment- Comment on post
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - React framework
- shadcn/ui - UI components
- NextAuth.js - Authentication
- MongoDB - Database
- Redis - Caching
- Vercel - Hosting platform
For support, email support@gitgo.dev or open an issue on GitHub.
- Drag & drop section reordering
- Custom section types
- Image upload for projects
- LinkedIn integration
- Resume parser
- AI-powered project recommendations
- Team portfolios
- Analytics dashboard
- Custom domain support
- SEO optimization tools
Built with β€οΈ by developers, for developers.