Portfolio

Projects

Selected work across full-stack web apps, frontend products, and standalone HTTP APIs—shipped with TypeScript and production-ready tooling.

Backend / APIHTTP / JSON

Task Management API

A collaborative workspace API for organizing projects, assigning tasks, and tracking delivery. Project membership connects tasks, labels, and conversations, with searchable work queues and paginated results.

  • Project membership & task assignment
  • Status, priority, label & assignee filters
  • Validated requests & global rate limiting
  • NestJS
  • TypeScript
  • PostgreSQL
  • Prisma
  • JWT

Selected endpoints

  • POST/api/v1/projects

    Create a project and add its creator as an owner member.

  • GET/api/v1/projects/:projectId/tasks

    Search and paginate tasks by status, priority, assignee, or label.

  • PATCH/api/v1/projects/:projectId/tasks/:taskId/status

    Move a task through TODO, IN_PROGRESS, IN_REVIEW, and DONE.

Base URL

https://task-management-api-tu8w.onrender.com/api/v1
Backend / APIHTTP / JSON

Student Management API

An academic administration API that connects student records with course registration, assessment results, and attendance. It calculates credit-weighted GPA and cumulative GPA while giving administrators and staff distinct permissions.

  • Academic records, results & attendance
  • Credit-weighted GPA & cumulative GPA
  • Admin / staff permissions & rotating tokens
  • NestJS
  • TypeScript
  • PostgreSQL
  • Prisma
  • JWT

Selected endpoints

  • GET/api/v1/students

    Search, filter, sort, and paginate student records.

  • POST/api/v1/academic/registrations

    Register a student for a course.

  • GET/api/v1/academic/students/:studentId/cgpa

    Calculate cumulative GPA with semester breakdowns.

Base URL

https://student-management-api-wwhb.onrender.com/api/v1
Backend / APIHTTP / JSON

Core Post Backend — blog & engagement API

Versioned Express REST API (`/api/v1`) for posts, nested comments, likes, and bookmarks on MongoDB. Users register and verify email via OTP email (Nodemailer); JWT protects mutations, with an extra database-backed verified-email check for write operations. List endpoints support query pagination (`page`), and auth-sensitive routes use express-rate-limit. Vitest and Supertest cover HTTP behavior against MongoDB when available.

  • Node.js
  • TypeScript
  • Express
  • MongoDB
  • Mongoose

Selected endpoints

  • GET/

    JSON hello / basic liveness response.

  • POST/api/v1/auth/register

    Create account (rate-limited).

  • POST/api/v1/auth/login

    Authenticate and obtain JWT (rate-limited).

Base URL

https://core-post.onrender.com/api/v1
Backend / APIHTTP / JSON

Jobnest API — job board backend

REST API for job postings and applications built with Express and TypeScript. Mongoose models link users to jobs they create and jobs they apply to, with JWT-based sessions and role checks for admin-only user deletion. Request bodies for registration and login are validated with Joi; passwords are hashed with bcrypt. Routes are grouped under /api and /api/auth. No OpenAPI spec or health-check route is present in the repository.

  • Node.js
  • TypeScript
  • Express
  • Mongoose
  • MongoDB

Selected endpoints

  • GET/

    Returns a short welcome JSON message.

  • POST/api/auth/register

    Create a user account with validated registration fields.

  • POST/api/auth/login

    Authenticate and issue a JWT (cookie and JSON body).

Base URL

https://jobnest-jx9f.onrender.com
Backend / APIHTTP / JSON

SlideForge API

SlideForge is a production-grade RESTful API built with FastAPI and Python 3.12 that automates AI-powered PowerPoint generation. It exposes an async job-queue pattern — clients POST a topic and receive a job ID immediately (202 Accepted), then poll for completion before downloading the generated .pptx file. Slide content is synthesized by the Google Gemini API (JSON-mode, gemini-2.0-flash-preview) with configurable language, theme, and slide count. The generated files are assembled using python-pptx with three built-in themes (Professional, Minimal, Vibrant) and served as binary file responses with server-side path-traversal protection. The service layer follows dependency injection via LRU-cached FastAPI dependencies, structured JSON logging, custom exception hierarchy with typed error codes, per-IP rate limiting via slowapi, and a multi-stage Docker build running as a non-root user. No OpenAPI/Swagger UI is exposed in production (docs are disabled). A GitHub Actions CI/CD pipeline covers linting (ruff), static type checking (mypy), test coverage (pytest + httpx), and Docker image build.

  • Python
  • FastAPI
  • Google Gemini AI
  • python-pptx
  • Pydantic

Selected endpoints

  • GET/api/v1/health

    Liveness probe. Returns API status, environment name, and version string. Used by Docker health check and load balancers.

  • GET/api/v1/ready

    Readiness probe. Confirms the service is initialized and ready to accept traffic.

  • POST/api/v1/presentations

    Submit an AI presentation generation job. Accepts topic (3–300 chars), num_slides (1–20), language (9 locales), and theme (professional/minimal/vibrant). Returns a UUID job_id with status 'pending' immediately (202 Accepted). Generation runs as a FastAPI BackgroundTask. Rate-limited to 10 requests/minute per IP.