AutonomousVehicleControlBeginnersGuide
Python sample codes and documents about Autonomous vehicle control algorithm. This project can be used as a technical guide book to study the algorithms and the software architectures for beginners.
AI-powered micro-internship platform connecting students with companies through skill-based tasks
Translation pending
EducationTypeScript · JavaScriptGitHub @osamaKhattakAlphinexOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
NexIntern: AI micro-internship platform. Next.js + Express/Node.js + MySQL + FastAPI AI service. Final-year project, SZABIST Islamabad.
Translation pending
Loading the full README.
Read the full 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.
This is the beginning of the README. Read the rest at the original. Read the full README ↗