Welcome to the URL Shortener sample project. This guide will help you set up the application locally and understand the basic workflow.
- .NET 10.0.x — Download here
- Git — For cloning and version control
- A text editor or IDE — Visual Studio, Visual Studio Code, or Rider are recommended
git clone https://github.com/mddennis-emburse/si-test.git
cd si-testdotnet restore UrlShortener.slnxdotnet build UrlShortener.slnx -c Releasedotnet run --project src/UrlShortener.Web/UrlShortener.Web.csprojThe application will start on http://localhost:5000 by default.
Once the application is running:
-
Shorten a URL — Navigate to the home page and use the form to convert a long URL into a short code
- Enter any valid HTTP/HTTPS URL
- The system generates a 7-character short code
- Copy the short link to share with others
-
Use your shortened link — Share the
/r/{shortCode}link with others or test it directly- The redirect endpoint automatically tracks click counts
- You'll be redirected to the original URL with a 302 status code
-
View your links — Visit
/linksto see your complete inventory- Browse all created links with their short codes, destinations, creation date, and click counts
- See a statistics dashboard showing total links, active links, and total click volume
Press Ctrl+C in the terminal where the application is running.
If port 5000 is already in use, you can specify an alternative port:
dotnet run --project src/UrlShortener.Web/UrlShortener.Web.csproj -- --urls "http://localhost:5001"Ensure you have .NET 10.0.x installed:
dotnet --versionIf you're on an older version, update by following the official installation guide.
The SQLite database is automatically initialized on first run at App_Data/url-shortener.db. If you encounter database errors:
- Delete the
App_Datafolder in the application directory - Restart the application — a fresh database will be created
- Learn the Architecture — Read Architecture to understand system design
- Contribute — See Developer Guide for how to make changes
- Follow Development — Check Phase Blog for feature updates and progress