尚未检测到更新。GitHub 发布版本后会显示在这里。
NexIntern: AI micro-internship platform. Next.js + Express/Node.js + MySQL + FastAPI AI service. Final-year project, SZABIST Islamabad.
翻译准备中
正在加载完整 README。
查看完整 README ↗NexIntern connects university students with short, paid micro-internships posted by companies. Students build a profile and get tasks ranked by how well they fit; companies post tasks, review ranked applicants, interview and evaluate them; mentors guide students through the work. Every AI score comes with written reasons.
Final-year project for the BS in Software Engineering at SZABIST Islamabad, designed and built by Osama Khattak.
Three services: a Next.js front end, an Express API that owns the data and business rules, and a Python FastAPI service for the AI scoring.
┌──────────────────┐ ┌──────────────────────┐ ┌─────────────┐
│ Next.js frontend │ ───▶ │ Express + Node.js API│ ───▶ │ MySQL 8 │
│ (port 3000) │ │ (port 5000) │ │ (Sequelize) │
└──────────────────┘ └──────────┬───────────┘ └─────────────┘
│
▼
┌──────────────────────┐
│ FastAPI AI service │
│ (port 8000) │
└──────────────────────┘
The API calls the AI service for matching, progress risk, evaluation, feedback drafting and performance insights. If the AI service is unreachable, the API falls back to its own copy of the same rules, so the platform keeps working.
Database history: the project started on MongoDB with Mongoose. In May 2026, at my supervisor's request, I moved it to MySQL with Sequelize, splitting nested data (student skills, education, task attachments and so on) into their own tables.
| Layer | Tools |
|---|---|
| Frontend | Next.js 14 (App Router), React 18, TypeScript, Tailwind CSS, Radix UI, Formik + Yup, Axios |
| Backend | Node.js, Express 4, Sequelize 6 on MySQL 8, JWT, Passport (Google OAuth), bcrypt, Multer, Nodemailer or Brevo for email |
| Security | Helmet, CORS, express-rate-limit, express-validator, xss-clean |
| AI service | Python 3.11, FastAPI, Pydantic, scikit-learn (TF-IDF), optional sentence-transformers embeddings |
| Payments | Stripe Checkout over Stripe's REST API, with signed webhooks and a sandbox provider for testing |
| Testing | Jest + Supertest (backend), pytest (AI service) |
| Deployment | Vercel (frontend), Render (API), managed MySQL over TLS, Docker and docker-compose for local runs |
Accounts and roles
Students
Companies
Mentors and admins
Evaluation and trust
/verify/<code>Every engine is deterministic: the same input always gives the same output, and every score comes with plain-language reasons. Nothing is a black box, so each number can be explained in a viva or to a user.
| Endpoint | What it does |
|---|---|
POST /match | 0-100 match score between a student and a task |
POST /rank-candidates | Ranks a task's applicants by match score |
POST /rank-mentors | Suggests mentors for a student |
POST /progress-insight | Performance indicators and early delay warnings for an internship |
POST /evaluate-internship | Scores each rubric criterion with a rationale and evidence |
POST /feedback-assist | Drafts feedback and reviews tone |
POST /performance-insights | Performance index, score trend and projection |
GET /health | Service status and whether the embedding model is loaded |
The match score is a weighted sum: skill match 55%, experience fit 15%, level fit 10%, interest overlap 10% and text similarity 10% (TF-IDF, or sentence embeddings when AI_USE_EMBEDDINGS=true). See docs/module-6-matching-explained.md.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗