Skip to content

devleo10/cluefind

Β 
Β 

Repository files navigation

ClueFind - Developer Portfolio Platform

ClueFind Next.js TypeScript Prisma PostgreSQL

Build Your Developer Portfolio. No Nonsense. Pure Impact.

Live Demo β€’ Documentation β€’ Report Bug


🎯 Overview

ClueFind is a modern developer portfolio platform that helps developers showcase their skills, projects, and achievements. Built with Next.js 15, TypeScript, and PostgreSQL, it provides a complete solution for developers to build their online presence and connect with recruiters.

Key Differentiators

  • AI-Powered Profile Builder - Generate professional summaries and project descriptions
  • Skill Endorsement Network - Get verified vouches from colleagues
  • GitHub Integration - Automatic repository syncing and activity tracking
  • Brutalist Design - Clean, professional, no-nonsense UI
  • Recruiter Dashboard - Special features for talent discovery

✨ Features

For Developers

  • Portfolio Builder - Drag-and-drop project showcases with AI-generated descriptions
  • GitHub Integration - Auto-sync profile data and activity tracking
  • Skill Management - Add skills and receive peer endorsements
  • Resume AI Review - Get brutally honest feedback from AI-powered senior engineers
  • Public Profiles - Custom cluefind.software/{username} URLs
  • Leaderboard - Compete and showcase achievements
  • Social Links - Connect GitHub, LinkedIn, and other platforms

For Recruiters

  • Advanced Search - Filter by skills, experience, location
  • Candidate Profiles - Complete developer portfolios with verified skills
  • GitHub Analytics - Profile quality and activity metrics
  • Skill Verification - Peer-endorsed technical skills
  • Contact Integration - Direct communication channels

πŸ›  Tech Stack

Frontend

  • Framework: Next.js 15.0.3 (App Router)
  • Language: TypeScript 5.0
  • Styling: Tailwind CSS 3.3 + Custom Brutalist Design System
  • UI Components: Radix UI + Custom Components
  • Forms: React Hook Form + Zod Validation
  • Icons: Lucide React
  • Animations: React PowerGlitch + Custom CSS
  • Notifications: React Hot Toast

Backend

  • Runtime: Node.js 18
  • Framework: Next.js API Routes
  • Database: PostgreSQL
  • ORM: Prisma 5.7
  • Authentication: Google OAuth 2.0
  • File Upload: Multer + Cloudinary
  • AI Integration: OpenAI GPT-4

External Services

  • Image Storage: Cloudinary CDN
  • GitHub API: GitHub REST API v3
  • AI Services: OpenAI API
  • Authentication: Google OAuth

DevOps & Deployment

  • Containerization: Docker + Multi-stage builds
  • CI/CD: GitHub Actions
  • Container Registry: Docker Hub
  • Hosting: AWS EC2
  • Reverse Proxy: Nginx (optional)

πŸ— Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Client (Browser)                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ HTTPS
                     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Next.js Application                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚   Frontend   β”‚  β”‚   API Routes β”‚  β”‚  Middleware  β”‚      β”‚
β”‚  β”‚   (React)    β”‚  β”‚   (Server)   β”‚  β”‚   (Auth)     β”‚      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚           β”‚           β”‚
         β–Ό           β–Ό           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ PostgreSQL  β”‚ β”‚ GitHub   β”‚ β”‚Cloudinaryβ”‚
β”‚  Database   β”‚ β”‚   API    β”‚ β”‚   CDN    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ Project Structure

src/
β”œβ”€β”€ app/                        # Next.js App Router
β”‚   β”œβ”€β”€ (dashboard)/            # Protected dashboard routes
β”‚   β”œβ”€β”€ (onboarding)/           # User onboarding flow
β”‚   β”œβ”€β”€ [username]/             # Public profile pages
β”‚   β”œβ”€β”€ api/                    # API Routes
β”‚   β”‚   β”œβ”€β”€ auth/               # Authentication endpoints
β”‚   β”‚   β”œβ”€β”€ ai/                 # AI-powered features
β”‚   β”‚   β”œβ”€β”€ profiles/           # Profile management
β”‚   β”‚   β”œβ”€β”€ onboarding/         # Onboarding APIs
β”‚   β”‚   └── upload/             # File upload handling
β”‚   β”œβ”€β”€ leaderboard/            # Leaderboard page
β”‚   └── globals.css             # Global styles + Brutalist design
β”œβ”€β”€ components/                 # React Components
β”‚   β”œβ”€β”€ auth/                   # Authentication components
β”‚   β”œβ”€β”€ forms/                  # Form components
β”‚   β”œβ”€β”€ portfolio/              # Portfolio-specific components
β”‚   └── ui/                     # Reusable UI components
β”œβ”€β”€ lib/                        # Utility Libraries
β”‚   β”œβ”€β”€ services/               # Business logic services
β”‚   β”œβ”€β”€ validations/            # Zod schemas
β”‚   └── ai.ts                   # AI integration
└── types/                      # TypeScript definitions

πŸ—„ Database Schema

Core Models

  • User - Authentication, profile info, role (DEVELOPER/RECRUITER UI-facing; stored as STUDENT/RECRUITER)
  • Profile - Skills, projects, GitHub data, social links
  • Vouch - Skill endorsements with verification
  • VouchAction - Daily vouch limits and tracking

Key Relationships

  • User ↔ Profile (1:1)
  • Profile ↔ Vouch (1:N)
  • User ↔ Vouch (1:N)

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL 15+
  • Docker (optional)

Quick Start

# Clone repository
git clone https://github.com/yourusername/cluefind.git
cd cluefind

# Install dependencies
npm install

# Setup environment
cp .env.example .env
# Edit .env with your configuration

# Setup database
npm run db:generate
npm run db:migrate

# Start development server
npm run dev

Visit http://localhost:3000

Environment Variables

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/cluefind"

# Authentication
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

# External Services
CLOUDINARY_CLOUD_NAME="your-cloud-name"
CLOUDINARY_API_KEY="your-api-key"
CLOUDINARY_API_SECRET="your-api-secret"
OPENAI_API_KEY="your-openai-key"
GITHUB_TOKEN="your-github-token"

🐳 Docker Deployment

Build & Run

# Build image
docker build -t cluefind:latest .

# Run container
docker run -d \
  -p 3000:3000 \
  --name cluefind \
  --env-file .env \
  --restart unless-stopped \
  cluefind:latest

CI/CD Pipeline

Automated deployment via GitHub Actions:

  1. Push to main branch
  2. Build Docker image
  3. Push to Docker Hub
  4. Deploy to AWS EC2
  5. Update running container

πŸ“‘ API Endpoints

Authentication

  • POST /api/auth/google - Google OAuth
  • GET /api/auth/me - Current user
  • POST /api/auth/signout - Sign out

Profiles

  • GET /api/profiles - List profiles (with search)
  • GET /api/profiles/[id] - Get profile
  • PUT /api/profiles/[id]/skills - Update skills
  • POST /api/profiles/[id]/vouches - Create vouch

AI Features

  • POST /api/ai/review - AI resume review
  • POST /api/ai/review-resume - Resume analysis

Onboarding

  • POST /api/onboarding/check-username - Username availability
  • POST /api/onboarding/generate-profile - AI profile generation
  • POST /api/onboarding/github-data - GitHub integration

🎨 Design System

Brutalist UI Components

  • Buttons: Primary, Secondary, Outline variants with hover effects
  • Cards: Brutalist cards with shadows and borders
  • Forms: Input fields with brutalist styling
  • Typography: Monospace fonts with uppercase styling
  • Colors: High contrast palette with accent colors
  • Animations: Glitch effects and smooth transitions

Key Design Principles

  • High Contrast - Black borders, bright accents
  • Monospace Typography - Technical, developer-focused
  • Brutalist Shadows - 3D effect with offset shadows
  • Minimal Color Palette - Primary, accent, and muted tones
  • Responsive Design - Mobile-first approach

🀝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use ESLint and Prettier
  • Write meaningful commit messages
  • Update documentation for new features

πŸ“„ License

MIT License - see LICENSE file for details.

About

ClueFind is a modern developer portfolio platform. It helps developers showcase their skills, projects, and achievements to build their online presence and connect with recruiters.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 95.3%
  • CSS 4.2%
  • Other 0.5%