Skip to content

Repository files navigation

InternHack

Prepare. Practice. Placed.

Table of Contents 📑

About InternHack

  • AI-powered career and hiring platform
  • Helps students prepare for placements and internships
  • Provides resume scoring and job matching tools
  • Offers mock interview practice and learning resources
  • Supports job discovery and application tracking
  • Enables recruiters to manage job postings and candidates
  • Streamlines hiring workflows and interview processes
  • Includes dedicated dashboards for students, recruiters, and admins
  • Built to make hiring more accessible, efficient, and data-driven

Live at internhack.xyz


Tech Stack

CategoryTechnologies
FrontendReact 18, Vite 7, TailwindCSS 4, React Router 7, Framer Motion, Zustand, React Query
BackendExpress 5, TypeScript 5, Prisma ORM
DatabasePostgreSQL
AI IntegrationGoogle Gemini (gemini-2.5-flash)
AuthenticationJWT Authentication, Google OAuth
PaymentsDodo Payments
Cloud StorageAWS S3 with Local Storage Fallback
Caching & Rate LimitingRedis via ioredis (optional, in-memory fallback when REDIS_URL unset)
Email ServicesResend
Development ToolsESLint, Prettier, Nodemon, tsx

Features

Features for Students

  • Job Board — Browse recruiter-posted jobs with advanced search, filters, tags, and one-click applications.
  • External Job Listings — Access curated opportunities aggregated from external platforms and updated regularly.
  • AI Job Agent — AI-powered assistant that recommends jobs based on user profiles, skills, and interests.
  • ATS Resume Scorer — Upload resumes and job descriptions to receive AI-generated compatibility scores and keyword gap analysis.
  • Cover Letter Generator — Generate personalized cover letters tailored to specific job applications.
  • AI Resume Builder — Create professional LaTeX-based resumes with AI-assisted content generation.
  • Mock Interviews — Practice technical and behavioral interviews through AI-driven interview simulations.
  • Learning Hub — Access 3,300+ DSA problems, SQL practice sets, aptitude questions, and 500+ lessons across multiple technologies.
  • Skill Assessments — Participate in timed assessments with automated grading and verified skill badges.
  • Career Roadmaps — Follow structured learning paths for Full-Stack, Frontend, Backend, Data Science, DevOps, and other domains.
  • Company Explorer — Explore company reviews, ratings, salary insights, HR contacts, and active openings.
  • Application Tracker — Monitor application progress from submission to interview rounds and final offers.
  • Open Source Guide — Step-by-step guidance for understanding codebases and contributing to open-source projects.

Features for Recruiters

  • Recruiter Dashboard — Centralized overview of job postings, applications, and hiring pipelines.
  • Job Management — Create and manage job postings with custom fields, interview workflows, and automated assessments.
  • Multi-Round Hiring Workflow — Conduct coding, DSA, HR, and system design interview rounds with structured evaluations.
  • Application Review System — Filter applicants, track candidate progress, and manage round-wise selection or rejection processes.
  • ATS Resume Analysis — Access AI-generated ATS scores and resume evaluations for better candidate screening.
  • Talent Pool Management — Save, organize, and manage promising candidates for future opportunities.
  • Campus Recruitment Drives — Plan and manage campus hiring campaigns efficiently.

Features for Admins

  • Admin Dashboard — Monitor real-time platform statistics, user activity, and system performance.
  • User & Job Management — Manage users, recruiters, job postings, companies, and platform reviews.
  • External Job Management — Create, manage, and moderate curated external job listings.
  • AI Provider Management — Configure and switch between multiple AI providers such as Gemini, Groq, and Claude.
  • Content Management System — Manage DSA problems, aptitude questions, skill assessments, hackathons, blogs, and learning resources.
  • Activity & Error Logging — Maintain detailed audit trails, activity logs, and system error monitoring.

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

Docker Compose (alternative)

Requires Docker Desktop or Docker Engine plus Compose v2. You do not need a host-installed PostgreSQL or Node for this path. (Redis is optional for local dev — rate limiting and caching fall back to in-memory stores when REDIS_URL is unset. Set it in .env if you want to test Redis-backed rate limiting.) The API service image is defined in server/Dockerfile.dev for local dev only; production deploy continues to use server/dockerfile.

From the repo root:

cp .env.example .env
# Set JWT_SECRET at minimum; add OAuth/AI keys as needed (see Environment Variables below).
docker compose up --build

Compose falls back to the same Postgres defaults as .env.example when variables are absent, but the API refuses to boot without JWT_SECRET, which your root .env must supply.

  • Frontend http://localhost:5173 — API http://localhost:3000
  • Source trees are bind-mounted into the containers; CHOKIDAR_USEPOLLING helps file watching on Docker Desktop for macOS.
  • On startup, the API container runs prisma migrate deploy, then npm run dev.
  • The frontend service runs Vite in dev mode (npm run dev) for hot reload; production client builds (cd client && npm run build) are still separate from this Compose file.

Optional sample data:

docker compose exec server npm run seed

Uncomment the postgresports section in docker-compose.yml if you need to reach Postgres from tools on your host defaulting to localhost.

To install Node and Postgres on your machine instead, follow the numbered steps below.

2. Set up environment variables

# Without Docker — per-package env files
cp server/.env.example server/.env
cp client/.env.example client/.env
# Docker Compose — single consolidated file at the repo root
cp .env.example .env

Fill values as described below (Compose uses .env; per-package copies use server/.env and client/.env).

3. Install dependencies

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

4. Set up the database

# Go to server directorycd 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

For Docker Compose, use the repo root .env.example as the master template (cp .env.example .env).

Server (server/.env or root .env with Compose)

VariableRequiredDescription
REDIS_URLNo (required in production)Redis connection string — without it rate limiters use per-process in-memory stores; the server refuses to start in NODE_ENV=production without this set
DATABASE_URLYesPostgreSQL connection string
JWT_SECRETYesRandom secret for JWT signing (64+ chars recommended)
GOOGLE_CLIENT_IDYesGoogle OAuth client ID
GEMINI_API_KEYYesGoogle Gemini API key (free tier available)
ALLOWED_ORIGINSYesComma-separated allowed CORS origins
VITE_API_URLNoAPI base URL (default: http://localhost:3000/api)
AWS_REGIONNoAWS region for S3 uploads
AWS_ACCESS_KEY_IDNoAWS access key (falls back to local storage)
AWS_SECRET_ACCESS_KEYNoAWS secret key
AWS_S3_BUCKETNoS3 bucket name
RESEND_API_KEYNoResend API key for emails
EMAIL_FROMNoFrom address for outgoing emails
DODO_PAYMENTS_API_KEYNoDodo Payments key (for premium subscriptions)
DODO_PAYMENTS_WEBHOOK_KEYNoDodo webhook verification key
GROQ_API_KEYNoGroq API key (alternative AI provider)
OPENROUTER_API_KEYNoOpenRouter key (alternative AI provider)
CODESTRAL_API_KEYNoCodestral/Mistral key (alternative AI provider)
CLAUDE_APINoAnthropic Claude API key (alternative AI provider)
JUDGE0_RAPIDAPI_KEY_1NoJudge0 key for code execution
EXTERNAL_JOB_API_KEYNoAPI 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. REDIS_URL is strongly recommended for production (see note above). Other services degrade gracefully.

Client (client/.env, or root .env — only VITE_* vars are exposed to Vite)

VariableRequiredDescription
VITE_GOOGLE_CLIENT_IDYesSame Google OAuth client ID as server
VITE_DODO_MODENotest_mode or live (default: test_mode)

Project Structure

InternHack/
├── docker-compose.yml # Postgres + API + client (dev, hot reload)
├── .env.example # Compose + combined env documentation
├── 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
│

📊 Database Schema: For a visual overview of all models and their relationships, see docs/database-schema.md.

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

PrefixModuleAuth
/api/authLogin, Register, Google OAuth, OTPPublic
/api/jobsJob browsing and searchPublic
/api/studentApplications, profile, external job applyStudent
/api/recruiterJob management, hiring rounds, candidatesRecruiter
/api/adminPlatform management, moderationAdmin
/api/atsATS resume scoringStudent
/api/job-agentAI chat for job discoveryStudent
/api/companiesCompany explorer, reviewsPublic / Student
/api/dsaDSA problems and progressPublic / Student
/api/aptitudeAptitude questions and progressPublic / Student
/api/external-jobsCurated external listingsPublic
/api/uploadFile uploads (resumes, images)Authenticated
/api/paymentsSubscription checkout, webhooksStudent
/api/blogBlog postsPublic / Admin

Production Build

# Servercd server && npm run build && npm start
# Clientcd 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

Contributors

A huge thanks to all the amazing contributors who helped make InternHack better 🚀✨

Contributors



Project Support

StarsForks

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

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages