Skip to content

sat-06/UpSkillX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UpSkillX

AI-powered career operating system — personalized roadmaps, resume analysis, skill gap insights, and project recommendations for students and early-career developers.

Problem Statement

Students and job seekers struggle to identify skill gaps, plan learning paths, and know which projects to build for their target role. UpSkillX uses AI (with reliable fallbacks) to turn a resume and career goal into an actionable plan.

Features

  • Authentication — JWT signup/login with SQLite (Prisma)
  • Onboarding — Name, target role, and skill selection persisted to profile
  • Resume Analyzer — PDF upload → text extraction → Gemini analysis → structured JSON
  • Readiness Score — 0–100 score with status labels (Needs Improvement / Almost Ready / Internship Ready)
  • Skill Gap Analysis — Current vs. missing skills for your target role
  • Personalized Roadmap — Weekly topics, objectives, and tasks
  • Learning Resources — Curated links by missing skills
  • Recommended Projects — Role-based portfolio projects with difficulty and rationale
  • Dashboard — Unified view of progress, skills, roadmap preview, and recommendations

Architecture

┌─────────────┐     REST API      ┌─────────────┐     Prisma     ┌──────────┐
│  Next.js    │ ────────────────► │  Express    │ ─────────────► │  SQLite  │
│  Frontend   │   localhost:5000  │  Backend    │                │  dev.db  │
└─────────────┘                   └──────┬──────┘                └──────────┘
                                         │
                                         ▼
                                  ┌─────────────┐
                                  │ Gemini API  │  (optional)
                                  │ + Fallback  │
                                  └─────────────┘

Frontend stores session token, profile, and latest analysis in localStorage so data survives page refresh.

Tech Stack

Layer Technologies
Frontend Next.js 16, React 19, TypeScript, Tailwind CSS 4
Backend Node.js, Express 5, TypeScript
Database Prisma, SQLite
AI Google Gemini (with deterministic fallback)
Auth bcrypt, jsonwebtoken
Upload Multer (memory storage), pdf-parse

Project Structure

UpSkillX/
├── frontend/          # Next.js app
│   └── src/
│       ├── app/       # Pages (dashboard, resume, roadmap, …)
│       ├── components/
│       ├── lib/       # API client, localStorage helpers
│       └── services/
├── backend/
│   └── src/
│       ├── routes/    # API endpoints
│       ├── services/  # Business logic, AI, fallbacks
│       ├── config/    # Multer, Gemini
│       └── prisma/    # Schema + SQLite DB
└── README.md

Installation

Prerequisites

  • Node.js 18+
  • npm

Backend

cd backend
npm install
cp .env.example .env
# Edit .env — set JWT_SECRET; optionally set GEMINI_API_KEY

npx prisma generate
npx prisma db push

npm run dev

Server runs at http://localhost:5000

Frontend

cd frontend
npm install
npm run dev

App runs at http://localhost:3000

Optional: set NEXT_PUBLIC_API_URL=http://localhost:5000/api in frontend/.env.local

Environment Variables

Backend (backend/.env)

Variable Required Description
DATABASE_URL Yes file:./dev.db for SQLite
JWT_SECRET Yes Secret for signing auth tokens
GEMINI_API_KEY No Google Gemini API key (AI features)
PORT No Default 5000

Never commit .env or real API keys.

Prisma Setup

cd backend
npx prisma generate
npx prisma db push

SQLite database file: backend/prisma/dev.db (gitignored).

Demo Flow

  1. Open http://localhost:3000 → redirects to Login
  2. Sign up with email/password (min 6 chars)
  3. Complete Onboarding — name, career goal, skills
  4. View Dashboard — your selected skills and role (not hardcoded placeholders)
  5. Go to Resume → upload PDF → enter target role → Analyze
  6. Review readiness, skills, missing skills, roadmap, resources, projects
  7. Navigate Roadmap, Resources, Projects, Readiness, Assessment
  8. Refresh the page — profile and analysis persist via localStorage

API Overview

Method Endpoint Description
GET / API info
GET /api/health Health check
POST /api/auth/signup Create account
POST /api/auth/login Login, returns JWT
PUT /api/auth/profile Update profile (Bearer)
POST /api/resume Multipart: resume (PDF), targetRole, optional skills
POST /api/roadmap Generate roadmap
POST /api/projects Project recommendations
POST /api/resources Learning resources
POST /api/readiness Readiness status label

Resume response shape

{
  "summary": "string",
  "targetRole": "string",
  "readiness": 0,
  "skills": [],
  "missingSkills": [],
  "roadmap": [],
  "resources": [],
  "projects": [],
  "source": "ai | fallback"
}

Fallback AI Behavior

If any of the following occur, the API returns valid structured demo data (never a generic 500):

  • GEMINI_API_KEY missing or invalid
  • Gemini rate limit / quota / network error
  • PDF parsing fails or text is too short
  • AI returns markdown fences or invalid JSON

Fallback analysis is role-based and deterministic, using target role profiles and optional resume keyword extraction. Response includes "source": "fallback".

Future Scope

  • PostgreSQL for production
  • OAuth (Google/GitHub)
  • Interview prep module
  • Progress tracking on roadmap items
  • Email notifications and streaks
  • Admin dashboard

License

MIT — hackathon project.

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages