A production-style URL shortening and analytics service built with ASP.NET Core, Entity Framework Core, SQLite, Docker, and xUnit.
SimplifyLink generates unique short URLs and tracks detailed analytics for every click — including timestamp, IP address, and User-Agent metadata.
This project demonstrates backend engineering fundamentals such as REST API design, database indexing, async programming, dependency injection, caching, Docker containerization, and cloud deployment.
🔹 Swagger API:
https://simplifylink-api.onrender.com/swagger/index.html
🔹 Example Working Short Link:
https://simplifylink-api.onrender.com/521e23
- Generate unique 6-character short codes (GUID-based)
- Public short link redirection
- Track click count
- Store detailed click metadata:
- Timestamp (UTC)
- IP address
- User Agent
- Real-time analytics (last 7 days)
- Swagger API documentation
- SQLite database persistence
- Auto database migration on production startup
- Unique index on
ShortCode - Unit testing with xUnit (13 passing tests)
- Clean layered architecture
- Async + dependency injection best practices
- Dockerized deployment (Render)
- ASP.NET Core (.NET 9)
- Entity Framework Core
- SQLite
- Docker
- xUnit
- Swagger / OpenAPI
- MemoryCache
POST /api/links
Request:
{
"originalUrl": "https://google.com"
}Response:
{
"id": 1,
"originalUrl": "https://google.com",
"shortCode": "abc123",
"shortUrl": "https://simplifylink-api.onrender.com/abc123"
}GET /{shortCode}
Example:
https://simplifylink-api.onrender.com/abc123
Redirects to the original URL and records click metadata.
GET /api/links/{id}/stats
Returns:
- Click count
- Total click events
- Last 7-day breakdown
SQLite database file:
simplifylink.db
Tables:
ShortLinksClickEvents
Unique Index:
IX_ShortLinks_ShortCode
dotnet testIncludes:
- URL validation tests
- ShortCode uniqueness tests
- Service logic tests
All tests currently passing.
dotnet restore
dotnet ef database update
dotnet runOpen:
https://localhost:5292/swagger
docker build -t simplifylink .
docker run -p 8080:8080 simplifylink- RESTful API architecture
- Database normalization & indexing
- Async programming patterns
- Dependency injection
- Unit testing & separation of concerns
- Caching optimization
- Docker containerization
- Cloud deployment strategy
- Production-style backend engineering
Mohammed Akrama
Bachelor of Information Technology (Class of 2026)
Aspiring Software Development Engineer