Skip to content

YAM1234-B/InternHack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

147 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 99.7%
  • Other 0.3%