A modern student talent discovery platform built with Next.js 13, Supabase, and AI-powered resume parsing. This platform allows students to upload their resumes, create profiles, and enables recruiters to discover talent through an intuitive directory interface.
- AI-Powered Resume Parsing: Automatically extracts skills, experience, and achievements from PDF resumes using Google's Gemini AI
- Student Profiles: Comprehensive profiles with skills, experience, achievements, and links
- Smart Directory: Search and filter students by domain, year, skills, and more
- Export Capabilities: Export student data in multiple formats (PDF, JSON, email lists)
- Authentication: Secure authentication with Supabase Auth
- Modern UI: Built with shadcn/ui components and Tailwind CSS
- Responsive Design: Works seamlessly across all devices
- Dark/Light Mode: Theme switching support
- Framework: Next.js 13 (App Router)
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- AI: Google Generative AI (Gemini)
- UI Components: shadcn/ui
- Styling: Tailwind CSS
- PDF Processing: pdf-parse, pdf-lib
- OCR: Tesseract.js
- Forms: React Hook Form with Zod validation
- State Management: React hooks
- Icons: Lucide React
- Animations: Framer Motion
Before setting up the project, ensure you have:
- Node.js 18+ installed
- npm or yarn package manager
- A Supabase account and project
- A Google AI API key (for Gemini)
Create a .env.local file in the root directory with the following variables:
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
DATABASE_URL=supabase_database_url
# Google AI API Key (for resume parsing)
GOOGLE_AI_KEY=your_google_ai_api_key- NEXT_PUBLIC_SUPABASE_URL: Your Supabase project URL (found in Project Settings > API)
- NEXT_PUBLIC_SUPABASE_ANON_KEY: Your Supabase anonymous key (found in Project Settings > API)
- DATABASE_URL: The database URL you get from supabase
- GOOGLE_AI_KEY: Google AI API key for Gemini (get from Google AI Studio)
- Create a new Supabase project at supabase.com
- Go to the SQL Editor in your Supabase dashboard
- Run the above SQL commands to create the required tables
- Enable Row Level Security (RLS) if needed
- Copy your project URL and anon key to your
.env.localfile
-
Clone the repository
git clone <repository-url> cd pb-placements
-
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
├── app/ # Next.js 13 app directory
│ ├── api/ # API routes
│ ├── auth/ # Authentication pages
│ ├── directory/ # Student directory
│ ├── profile/ # Profile pages
│ └── upload/ # Resume upload flow
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── home/ # Homepage components
│ ├── directory/ # Directory components
│ └── profile/ # Profile components
├── lib/ # Utility libraries
│ ├── db.ts # Database operations
│ ├── resume-parser.ts # AI resume parsing
│ └── utils.ts # General utilities
└── hooks/ # Custom React hooks
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
GET /api/init- Initialize database tablesPOST /api/resume/upload- Upload and parse resumeGET /api/members- Get all membersGET /api/directory/search- Search membersPOST /api/achievements- Create achievementPOST /api/experiences- Create experiencePOST /api/links- Create linkGET /api/export/json- Export as JSONGET /api/export/pdf- Export as PDFGET /api/export/email- Export email list
The application uses Supabase Auth for authentication:
- OAuth providers can be configured in Supabase dashboard
- Protected routes are handled by middleware
- Session management is automatic
The AI-powered resume parser:
- Extracts text from PDF files using
pdf-parse - Uses Google's Gemini AI for intelligent parsing
- Automatically identifies skills, experience, achievements
- Handles various resume formats and layouts
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
If you encounter any issues:
- Check that all environment variables are set correctly
- Ensure your Supabase database tables are created
- Verify your Google AI API key is valid
- Check the console for any error messages
For additional help, please open an issue in the repository.
Make sure to set the environment variables in your deployment platform.