Skip to content

Code that ships. Engineering that scales.

Aditya Gupta — Full Stack / Backend Engineer building AI-powered platforms

Production-ready AI platforms — React frontends, FastAPI backends, Docker, Kubernetes, and AWS.

AI + Backend systems · AWS CCP · Remote-ready

Work

Featured Projects

Clean architecture, shipped systems, and measurable outcomes — from AI search to real-time collaboration.

Featured
Skillyn preview

Skillyn

AI-Powered Career Operating System. Analyzes resumes against job descriptions using semantic matching and generates personalized improvement recommendations.

  • +Semantic resume-to-JD matching with cosine similarity scoring
  • +FastAPI backend with async PostgreSQL ORM integration
  • +Docker containerization for consistent development and deployment
ReactFastAPIPostgreSQLDocker
ChatPro preview

ChatPro

Real-Time AI Chat Platform with interruption-safe streaming, conversation persistence, and responsive chat UI.

  • +Interruption-safe streaming with real-time token rendering
  • +Conversation persistence with SQLite and FastAPI async routes
ReactFastAPISQLite
CloudVault preview

CloudVault

Collaborative AI workspace for documents — semantic search, real-time editing, and workspace-level access control.

  • +AI-powered semantic file search with vector embeddings
  • +Real-time collaborative editing with WebSocket synchronization
Next.jsNode.jsExpressMongoDB
Problem Solving

Engineering Highlights

Two production failures, root causes, and the fixes that stuck.

Auth redirect loop in Next.js + Express

Security & Sessions

Issue

Expired sessions locked the dashboard in an infinite redirect spinner.

Cause

Middleware trusted cookie presence while the API returned 401 — login and dashboard bounced forever.

Fix

Clear the invalid token cookie on JWT failure so the client can land on login cleanly.

src/middleware/auth.tsDiff
} catch (err) {
+  res.clearCookie('token');
   res.status(401).json({ error: 'Unauthorized' });
}
Full post

In-memory cosine search that couldn't scale

System Design

Issue

Per-query in-memory similarity blocked the Node event loop as file count grew.

Cause

O(N) scans over 1,536-dim embeddings for every workspace query.

Fix

Filter by workspace at the DB layer first, then run similarity only on the active set.

src/routes/search.routes.tsDiff
- const allFiles = await File.find({});
+ const workspaceFiles = await File.find({
+   workspaceId: req.params.workspaceId,
+   deletedAt: null
+ });
Full post
Writing

From the desk

Post-mortems, system design notes, and engineering breakdowns from shipping real products.

Tech Stack

The Stack I Ship With

Frontend, backend, data, and cloud — the tools behind production systems.

React
Next.js
TypeScript
TailwindCSS
FastAPI
Node.js
Express.js
PostgreSQL
MongoDB
SQLite
AWS
Docker
Kubernetes
GitHub Actions
React
Next.js
TypeScript
TailwindCSS
FastAPI
Node.js
Express.js
PostgreSQL
MongoDB
SQLite
AWS
Docker
Kubernetes
GitHub Actions
GitHub Actions
Kubernetes
Docker
AWS
SQLite
MongoDB
PostgreSQL
Express.js
Node.js
FastAPI
TailwindCSS
TypeScript
Next.js
React
GitHub Actions
Kubernetes
Docker
AWS
SQLite
MongoDB
PostgreSQL
Express.js
Node.js
FastAPI
TailwindCSS
TypeScript
Next.js
React
Credentials

Certifications & Research

Verified cloud expertise and peer-reviewed research — proof beyond the portfolio.

Prefer long-form writeups? Read the blog →

Get In Touch

Contact

Have a project or idea? Send a note — I usually reply within a day.

Got an idea? Let's bring it to life.

Open to freelance, full-time, and interesting collaborations around AI, backends, and product engineering.

Collaboration

FROM CONCEPT TO CREATION.
LET'S MAKE IT HAPPEN.

Get In Touch