Welcome to the OneStep backend — a scalable and modular backend built with NestJS , Prisma ORM , and JWT-based authentication , designed to manage Courses , Internships , Jobs , and related user applications.
📌 Repository: onestep-backend
Framework : NestJS
ORM : Prisma
Authentication : JWT (Bearer Token)
Database : PostgreSQL (or your configured DB)
Package Manager : npm
Node.js v16+
PostgreSQL
npm (v8+)
🚀 Installation & Development
# 1. Install dependencies
npm install
# 2. Copy environment variables
cp .env.example .env
# 3. Run database migrations
npx prisma migrate dev --name init
# 4. Generate Prisma client
npx prisma generate
# 5. Seed the database (optional but recommended)
npx prisma db seed
# 6. Start development server
npm run start:dev
# Build the project
npm run build
# Start the production server
npm start
All Private APIs require a valid JWT token .
Pass it via the Authorization header:
Authorization: Bearer <your-token>
http://localhost:5000/api
Set this as your global prefix in frontend or Postman configs.
Method
Endpoint
Access
GET
/register
Public
POST
/login
Public
PATCH
/forgot-password
Public
Method
Endpoint
Access
POST
/
Private
GET
/?limit=&offset=&category=&skillLevel=&providedBy=&sortBy=&order=
Public
GET
/list?filter=
Public
GET
/:id
Public
PATCH
/:id
Private
DELETE
/:id
Private
3. Internships (/internships)
Method
Endpoint
Access
POST
/
Private
GET
/?limit=&offset=&company=&title=&location=&workMode=&sortBy=&order=
Public
GET
/list?filter=
Public
GET
/:id
Public
DELETE
/:id
Private
Method
Endpoint
Access
POST
/
Private
GET
/?limit=&offset=&company=&title=&location=&jobTime=&jobType=&sortBy=&order=
Public
GET
/list?filter=
Public
GET
/:id
Public
DELETE
/:id
Private
5. User Courses (/user-courses)
Method
Endpoint
Access
POST
/:id/enroll
Private
6. Internship Applications (/intern-applications)
Method
Endpoint
Access
POST
/:id/apply
Private
7. Job Applications (/job-applications)
Method
Endpoint
Access
POST
/:id/apply
Private
Method
Endpoint
Access
GET
/profile
Private
PATCH
/profile
Private
GET
/dashboard
Private
🔍 Query Parameters (Accepted Values)
Query
Accepted Values
limit
Integer (e.g., 10)
offset
Integer (e.g., 0)
category
"Computer Science", "AI Development", etc. (spaces as +)
skillLevel
"Beginner", "Intermediate", "Advanced"
providedBy
"Government", "Letsupgrade", "Private"
company
Any company name (e.g., "TCS")
title
Job/Internship title (e.g., "Software Engineer")
location
City or region name (e.g., "Bangalore")
workMode
"Online", "Offline", "Hybrid"
jobTime
"Full-Time", "Part-Time"
jobType
"Field", "Remote", "Office"
sortBy
Any table field (e.g., created_at, title, company)
order
"ASC" or "DESC"
filter
Field name (e.g., category, provided_by, job_title) → returns list of unique values
Copy the template and fill in your local DB and JWT values:
Required variables:
DATABASE_URL
JWT_SECRET
PORT (optional, default: 5000)
Fork the repo
Create a feature branch
Commit your changes
Open a Pull Request
This project is licensed under the MIT License .