Full-stack project · MERN · Docker Compose
URL Shortener
A URL-management platform with custom short aliases, account-based link ownership, click analytics, QR codes, and a containerized frontend, API, and MongoDB stack.
Overview
A URL-management platform with custom short aliases, account-based link ownership, click analytics, QR codes, and a containerized frontend, API, and MongoDB stack.
System architecture
A high-level view of the components and boundaries described by the project source and documentation.
User and data flow
Register or sign in and receive a JWT
Submit a destination URL and optional custom alias
Resolve the short code and redirect to its destination
Review click, device, browser, OS, and daily trend analytics
Product capabilities
Link lifecycle
- Create, list, and delete short URLs, including custom aliases.
- Resolve a short code through the redirect endpoint.
- Manage links from an authenticated dashboard rather than a single anonymous form.
Analytics and sharing
- Track clicks and summarize performance for an individual URL or across a user's links.
- Break down link traffic by device, browser, operating system, and daily trends.
- Generate QR codes for shortened URLs.
Account management
- JWT-protected profile and password update endpoints.
- Support account deletion with the associated user data.
- Apply API rate limiting and configure CORS for the deployed frontend origin.
Data model and domain
URL product data
The API scopes link management to authenticated accounts; redirect activity feeds per-link and overall analytics.
Fast data retrieval and page delivery
This portfolio case study is statically generated at build time, so opening it does not wait for a case-study API or database query. The notes below describe the project's own data path; they distinguish implemented behavior from scale-up opportunities.
Indexed redirect key
The Mongoose schema declares shortCode unique, enabling a unique index for direct lookups when model indexes are built; the deployment does not publish index status or latency benchmarks.
Account-scoped dashboard
Authenticated URL and analytics routes return the current account's links and summaries. Click events are stored separately so reporting can aggregate activity without expanding every link document.
Scale-up consideration
The click-event schema does not declare an index on shortUrl or clickedAt. Add query-shaped indexes and bounded date windows if event volume makes analytics aggregation a read bottleneck; no latency benchmark is published.
HTTP API surface
Authentication and profile
POST /api/auth/register · POST /api/auth/login · GET /api/auth/me · PUT /api/auth/profile · PUT /api/auth/password · DELETE /api/auth/delete
Short links
GET /api/urls · POST /api/urls · DELETE /api/urls/:id · GET /:shortCode
Analytics
GET /api/analytics/:urlId · GET /api/analytics/summary
Engineering decisions
Service boundary
The Vite client calls an Express REST API; URL resolution and protected management endpoints are handled on the server.
Authentication
JWT middleware protects account-specific URL, analytics, and profile operations.
Deployment configuration
The README documents frontend hosting on Vercel and backend hosting on Render, with explicit API URL, base URL, CORS origin, and production environment settings.
Container topology
Docker Compose runs MongoDB, the API, and frontend on a shared bridge network; a named volume persists MongoDB data.
Setup and delivery
- Install and run the frontend and backend as separate packages, configuring their API and database environment values.
- Use Docker Compose for the three-service local development topology; MongoDB data lives in the configured persistent volume.
- The repository README documents production deployment and the API endpoint surface for auth, URLs, analytics, and redirects.
Technology
Explore the project
Open the project links above to review its source, documentation, or available deployment.

