Skip to content

yuvasri07-git/InternHack

 
 

Repository files navigation

InternHack

Prepare. Practice. Placed., An open-source, full-stack career platform that helps students land jobs through AI-powered tools, structured learning, and recruiter dashboards. InternHack brings together job discovery, skill development, and hiring workflows into a single unified platform, enabling students to seamlessly move from learning to applying. It provides AI-powered tools such as resume scoring, job matching, and mock interviews to enhance preparation and improve outcomes. Recruiters can efficiently manage job postings, evaluate candidates, and streamline multi-round hiring processes. With dedicated features for students, recruiters, and administrators, InternHack aims to make the hiring ecosystem more accessible, efficient, and data-driven.

Live at internhack.xyz


Tech Stack

Layer Technology
Frontend React 18, Vite 7, TailwindCSS 4, React Router 7, Framer Motion, Zustand, React Query
Backend Express 5, TypeScript 5, Prisma 7
Database PostgreSQL
AI Google Gemini (gemini-2.5-flash)
Auth JWT + Google OAuth
Payments Dodo Payments
Storage AWS S3 (with local fallback)
Email Resend

Features

For Students

  • Job Board: Browse recruiter-posted jobs with search, filters, tags, and one-click apply
  • External Jobs: Curated listings from external sources, updated regularly
  • AI Job Agent: Chat-based AI assistant that finds jobs matching your profile and skills
  • ATS Resume Scorer: Upload resume + JD, get an AI-powered match score with keyword gap analysis
  • Cover Letter Generator: AI-generated cover letters tailored to specific job postings
  • AI Resume Builder: Generate professional LaTeX resumes with AI assistance
  • Mock Interviews: Practice with AI-driven interview simulations
  • Learning Hub: 3,300+ DSA problems, SQL practice, aptitude questions, and 500+ lessons across 12 technologies
  • Skill Tests: Timed assessments with auto-grading and verified skill badges
  • Career Roadmaps: Guided paths for Full-Stack, Frontend, Backend, Data Science, DevOps, and more
  • Company Explorer: Reviews, ratings, salaries, HR contacts, and open positions
  • Application Tracker: Track applications from applied through hiring rounds to offer
  • Open Source Guide: Step-by-step guides for reading codebases and contributing to OSS

For Recruiters

  • Dashboard: Overview of posted jobs, applications, and hiring pipeline
  • Job Management: Create jobs with custom fields, multiple interview rounds, and auto-assessments
  • Multi-Round Hiring: Coding, DSA, HR, system design rounds with per-round evaluations
  • Application Review: Filter applicants, advance/reject through rounds, ATS scores per resume
  • Talent Pools: Save and organize promising candidates
  • Campus Drives: Manage campus recruitment drives

For Admins

  • Platform Dashboard: Real-time stats across the platform
  • User & Job Management: Moderate users, jobs, companies, reviews
  • External Job Management: Post and manage curated external job listings
  • AI Provider Management: Switch between AI providers (Gemini, Groq, Claude, etc.)
  • Content Management: DSA problems, aptitude questions, skill tests, hackathons, blog
  • Activity & Error Logs: Full audit trail

Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database (local or hosted, Neon, Supabase, etc.)
  • Google Cloud Console project (for OAuth client ID)
  • Gemini API Key (Get one free)

1. Clone the repo

git clone https://github.com/Sachinchaurasiya360/InternHack.git
cd InternHack

2. Set up environment variables

# Server
cp server/.env.example server/.env
# Fill in your values (see Environment Variables section below)

# Client
cp client/.env.example client/.env
# Fill in VITE_GOOGLE_CLIENT_ID

3. Install dependencies

# Server
cd server && npm install

# Client (separate terminal)
cd client && npm install

4. Set up the database

# Go to server directory
cd server

# Generate Prisma client using prisma.config.ts
npx prisma generate --config src/database/prisma.config.ts

# Push schema to database
npx prisma db push --config src/database/prisma.config.ts

5. Seed initial data (optional)

# From server/
cd server

# Seed admin account (set ADMIN_EMAIL and ADMIN_PASSWORD in .env first)
npm run seed:admin

# Seed all sample data (DSA, aptitude, companies, etc.)
npm run seed

6. Start development servers

# Terminal 1, Server (runs on port 3000)
cd server && npm run dev

# Terminal 2, Client (runs on port 5173)
cd client && npm run dev

Open http://localhost:5173 and you're in!


Environment Variables

Server (server/.env)

Variable Required Description
DATABASE_URL Yes PostgreSQL connection string
JWT_SECRET Yes Random secret for JWT signing (64+ chars recommended)
GOOGLE_CLIENT_ID Yes Google OAuth client ID
GEMINI_API_KEY Yes Google Gemini API key (free tier available)
ALLOWED_ORIGINS Yes Comma-separated allowed CORS origins
VITE_API_URL No API base URL (default: http://localhost:3000/api)
AWS_REGION No AWS region for S3 uploads
AWS_ACCESS_KEY_ID No AWS access key (falls back to local storage)
AWS_SECRET_ACCESS_KEY No AWS secret key
AWS_S3_BUCKET No S3 bucket name
RESEND_API_KEY No Resend API key for emails
EMAIL_FROM No From address for outgoing emails
DODO_PAYMENTS_API_KEY No Dodo Payments key (for premium subscriptions)
DODO_PAYMENTS_WEBHOOK_KEY No Dodo webhook verification key
GROQ_API_KEY No Groq API key (alternative AI provider)
OPENROUTER_API_KEY No OpenRouter key (alternative AI provider)
CODESTRAL_API_KEY No Codestral/Mistral key (alternative AI provider)
CLAUDE_API No Anthropic Claude API key (alternative AI provider)
JUDGE0_RAPIDAPI_KEY_1 No Judge0 key for code execution
EXTERNAL_JOB_API_KEY No API key for external job ingest endpoint

Only DATABASE_URL, JWT_SECRET, GOOGLE_CLIENT_ID, GEMINI_API_KEY, and ALLOWED_ORIGINS are required to run the app locally. Other services degrade gracefully.

Client (client/.env)

Variable Required Description
VITE_GOOGLE_CLIENT_ID Yes Same Google OAuth client ID as server
VITE_DODO_MODE No test_mode or live (default: test_mode)

Project Structure

InternHack/
├── client/                   # React frontend (Vite)
│   ├── src/
│   │   ├── components/       # Shared UI components
│   │   ├── lib/              # Utilities, stores, types, axios config
│   │   └── module/           # Feature modules
│   │       ├── auth/         # Login, register, OAuth
│   │       ├── student/      # Student dashboard, jobs, applications, learning
│   │       ├── recruiter/    # Recruiter dashboard, job management
│   │       └── admin/        # Admin panel, moderation
│   └── public/               # Static assets
│
├── server/                   # Express backend
│   ├── src/
│   │   ├── module/           # Feature modules (routes → controller → service)
│   │   │   ├── auth/         # Authentication
│   │   │   ├── student/      # Student APIs
│   │   │   ├── job/          # Job CRUD
│   │   │   ├── recruiter/    # Recruiter APIs
│   │   │   ├── admin/        # Admin APIs
│   │   │   ├── ats/          # ATS resume scoring
│   │   │   ├── job-agent/    # AI chat agent
│   │   │   ├── company/      # Company explorer
│   │   │   ├── dsa/          # DSA problems
│   │   │   ├── aptitude/     # Aptitude questions
│   │   │   └── ...           # More modules
│   │   ├── middleware/       # Auth, role, rate-limit, usage-limit
│   │   ├── database/        # Prisma schema, seeds, config
│   │   ├── utils/            # Email, logger, S3, templates
│   │   └── index.ts          # Express app entry point
│   └── package.json
│
└── .claude/                  # AI assistant context
    ├── CLAUDE.md             # Project instructions
    └── REPO_MAP.md           # Detailed module map

Module Pattern (Server)

Every backend feature follows: routescontrollerservice

module/
├── <name>.routes.ts        # Express router, middleware chain
├── <name>.controller.ts    # Request/response handling
├── <name>.service.ts       # Business logic, DB queries
└── <name>.validation.ts    # Zod schemas for input validation

API Overview

Prefix Module Auth
/api/auth Login, Register, Google OAuth, OTP Public
/api/jobs Job browsing and search Public
/api/student Applications, profile, external job apply Student
/api/recruiter Job management, hiring rounds, candidates Recruiter
/api/admin Platform management, moderation Admin
/api/ats ATS resume scoring Student
/api/job-agent AI chat for job discovery Student
/api/companies Company explorer, reviews Public / Student
/api/dsa DSA problems and progress Public / Student
/api/aptitude Aptitude questions and progress Public / Student
/api/external-jobs Curated external listings Public
/api/upload File uploads (resumes, images) Authenticated
/api/payments Subscription checkout, webhooks Student
/api/blog Blog posts Public / Admin

Production Build

# Server
cd server && npm run build && npm start

# Client
cd client && npm run build
# Outputs to client/dist/, serve with any static host

Contributing

We welcome contributions! See CONTRIBUTING.md for the full guide on:

  • Setting up your development environment
  • Understanding the codebase architecture
  • Making your first pull request
  • Code style and conventions

License

This project is open source. See LICENSE for details.


Built with care by the InternHack team.

About

InternHack is an all-in-one SaaS platform built to support hackathon participants, organizers, mentors, and recruiters. By integrating hackathon management and career opportunities, InternHack connects coding talent directly with hiring prospects.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 99.7%
  • Other 0.3%