30% OFF - Use code HANDSON30 for 30% off any course or Dometrain Pro! Browse courses →
  • Courses
  • Learning Paths
  • Blogs
  • Authors
  • Leaderboard
  • Dometrain Pro
  • Shopping Basket

    Your basket is empty

  • Business Portal
  • Let's Build It: URL Shortener in .NET

    Learn how to build a production-ready URL Shortener in its entirety, including conception, development and deployment.

    About This Course

    In this massive "Let's Build It" course, Gui Ferreira will build an entire, production-ready URL Shortener system from conception to production deployment. The course will start with requirement analysis, move into system design, and then follow that up by setting up a development environment and continuous integration. It will then move to infrastructure as code and secrets management, and only after all the setup has been done properly will it move into coding an entire URL shortener using best practices. On top of that, the author will develop a client-side web application that will include best practices for telemetry and security. This is a unique opportunity to learn how a system can be built from scratch all the way to production.

    Course Curriculum

    16h 47m 18 sections
    Welcome
    01:33 Free preview
    What will you learn in this course?
    03:44 Free preview
    Who is the course for and prerequisites
    02:08
    Introduction
    04:59
    Functional requirements
    03:02
    Non-functional requirements
    04:46
    Section recap
    01:45
    Discovering the Short Url length
    09:42
    Designing the high-level architecture
    14:58
    Assigning technologies to the architecture
    06:14
    Introduction
    01:56
    Creating and setting up the GitHub repository
    04:44
    Setting up GitHub environments
    04:19
    Creating the API Project
    08:15
    Creating GitHub Actions for API
    09:03
    Section recap
    00:34
    Introduction
    05:26
    What is Infrastructure as Code and Bicep?
    09:48
    Writing Bicep scripts for URL shortener infrastructure
    21:19
    Deploying infrastructure to Azure with GitHub Actions
    14:48
    Deploying infrastructure to multiple environments
    15:15
    Deploying API with GitHub Actions
    06:23
    Section recap
    01:09
    Introduction
    05:20
    Deploying Azure Key Vault using Bicep
    08:34
    Integrating with Key Vault
    12:55
    Elevate GH Actions privileges to write permissions
    04:31
    Section recap
    01:19
    Introduction
    00:24
    Feature Design
    08:58
    Generating a short URL
    38:14
    Handling requests to create a Short URL
    29:51
    Adding input validation
    08:37
    Creating an API endpoint to create Short URLs
    13:12
    Deploying CosmosDB resources with Bicep
    06:31
    Storing URLs in CosmosDB
    16:12
    Increment token and avoid duplication
    07:04
    Demo
    06:48
    Section recap
    04:21
    Introduction
    01:27
    Feature Design
    05:16
    Creating the Token Range API infrastructure
    01:58
    Setting up PostgreSQL for token management
    09:40
    Creating the Token Range API GitHub Action Workflow
    14:50
    Handling token range requests
    33:23
    Deploying the database schema
    06:41
    Creating an hosted service for range retrieval
    32:14
    Adding a retry policy with Polly
    08:33
    Demo
    06:16
    Section recap
    01:47
    Introduction
    00:33
    Using Microsoft Entra ID for authentication
    03:11
    Deploying Entra ID resources using Bicep
    11:45
    Configuring Entra ID application for the API
    04:12
    Giving permissions to GitHub Action deploy EntraID Application
    04:51
    Adding JWT authentication with Entra ID in API
    09:03
    Accessing user identity in the API
    08:55
    Section recap
    01:28
    Introduction
    03:45
    Deploying the Redirect API using Bicep
    02:44
    Creating the Redirect API GitHub Action Workflow
    07:23
    Implementing URL redirection logic
    21:10
    Setting up Azure Redis Cache
    03:59
    Using Redis Cache for better performance
    14:54
    Demo
    05:11
    Section recap
    01:24
    Introduction
    00:41
    Addressing data challenges
    13:49
    Setting up Azure Function for data processing using Bicep
    13:15
    Creating GitHub Action for Azure Function
    16:17
    Implementing CosmosDB Trigger Azure Function
    10:53
    Adding a List endpoint to the API
    29:07
    Add pagination using Continuation Tokens
    22:03
    Demo
    01:57
    Section recap
    02:17
    Introduction
    01:13
    What is React.js
    06:15
    Creating the React Project
    08:20
    Deploying Azure Static Web App using Bicep
    05:21
    Configuring the Web Application in Microsoft Entra ID
    05:35
    Creating GitHub Action for Static Web App
    08:26
    Integrating MSAL.js for Entra ID authentication
    29:03
    Enable CORS on Api
    03:51
    Listing URLs in the UI
    17:29
    Applying style to the Components
    09:13
    Building a form to create a short URLs
    12:20
    Section recap
    02:41
    Let's practice
    05:31
    Solution
    04:58
    Introduction
    01:11
    What is a Health Check
    04:38
    Implementing a HealthCheck
    12:50
    Applying Health Checks across all services
    08:48
    Configuring Health Checks using Bicep
    03:50
    Section recap
    02:50
    Introduction
    01:27
    What is OpenTelemetry?
    05:51
    Configuring Application Insights and Log Analytics workspace with Bicep
    17:42
    Adding OpenTelemetry to services
    17:54
    Collecting Request Metrics
    04:19
    Demo
    09:47
    Section recap
    03:34
    Introduction
    00:50
    What is Azure FrontDoor?
    06:00
    Deploying Front Door using Bicep
    27:05
    Configuring the Health Probe
    04:53
    Adding a Rate Limit Rule with WAF to Front Door
    06:28
    Setting up a custom domain with Front Door
    13:06
    Demo
    02:36
    Section recap
    01:38
    Introduction
    01:24
    Setting up a Virtual Network
    03:49
    Adding services to the Virtual Network
    19:23
    Allowing FrontDoor requests
    06:47
    Implementing access restrictions for CosmosDB
    03:14
    Implementing access restrictions for Redis
    08:11
    Implementing access restrictions for PostgreSQL
    05:41
    Allowing GitHub Action deployments to App Services
    09:00
    Implementing access restrictions for KeyVault
    02:15
    Section recap
    02:29
    Conclusion
    00:47

    Meet Your Instructor

    Gui Ferreira

    Gui Ferreira

    Guilherme Ferreira, also known as Gui, is a Minimalist Software Craftsman, passionate about simplicity and continuous learning. Gui is a Microsoft MVP for Developer Technologies, a Tech Speaker, a YouTuber, and a .NET content creator. With over 15 years of experience in software development, Gui went from Startups to Tech Giants. Along his journey, he got to know several hats, including Software Engineer, Architect, CTO, and Developer Advocate, gathering a diverse and invaluable skill set.

    View all courses by Gui Ferreira

    What's New

    Getting Started: Model Context Protocol (MCP)
    course

    Getting Started: Model Context Protocol (MCP)

    Learn how to get started with the Model Context Protocol (MCP) and integrate it into your applications.

    Learn more about Getting Started: Model Context Protocol (MCP)
    Hands-On: Learn TypeScript
    course

    Hands-On: Learn TypeScript

    Learn TypeScript through hands-on coding exercises. Practice what you learn with interactive challenges designed for every level.

    Learn more about Hands-On: Learn TypeScript
    Hands-On: Learn JavaScript
    course

    Hands-On: Learn JavaScript

    Learn JavaScript through hands-on coding exercises. Practice what you learn with interactive challenges designed for every level.

    Learn more about Hands-On: Learn JavaScript
    Hands-On: Data Structures & Algorithms in C#
    course

    Hands-On: Data Structures & Algorithms in C#

    Master data structures and algorithms through hands-on coding exercises in C#. Free to enroll for 7 days!

    Learn more about Hands-On: Data Structures & Algorithms in C#
    Blogsmith.ai
    feature

    Blogsmith.ai

    Turn your videos into blogs and newsletters with AI. Check out our new product at blogsmith.ai.

    Learn more about Blogsmith.ai
    Leaderboard
    feature

    Leaderboard

    See how you stack up against other learners. Track your progress, climb the ranks, and compete with the Dometrain community.

    Learn more about Leaderboard
    Hands-On: Learn PostgreSQL
    course

    Hands-On: Learn PostgreSQL

    Learn PostgreSQL through hands-on coding exercises. Practice what you learn with interactive challenges designed for every level.

    Learn more about Hands-On: Learn PostgreSQL
    Free Hands-On: C# for Beginners
    course

    Free Hands-On: C# for Beginners

    Learn C# through hands-on coding exercises. Practice what you learn with interactive challenges designed for everyone, from beginners to experts.

    Learn more about Free Hands-On: C# for Beginners
    Getting Started: AI for .NET Developers
    course

    Getting Started: AI for .NET Developers

    Get started with integrating AI into your .NET applications effectively using the latest LLM best practices.

    Learn more about Getting Started: AI for .NET Developers
    Getting Started: Building .NET Applications on AWS
    course

    Getting Started: Building .NET Applications on AWS

    Learn how to build and deploy .NET applications on AWS using CDK, Lambda, DynamoDB, S3, and more.

    Learn more about Getting Started: Building .NET Applications on AWS
    What's new in C# 14
    blog

    What's new in C# 14

    This guide covers every new C# 14 feature, explains its benefits, and provides practical code examples to help you navigate how you can use them.

    Learn more about What's new in C# 14
    Let's Build It: AI Chatbot with RAG in .NET Using Your Data
    course

    Let's Build It: AI Chatbot with RAG in .NET Using Your Data

    Build a Retrieval-Augmented Generation (RAG) chatbot that can answer questions using your data.

    Learn more about Let's Build It: AI Chatbot with RAG in .NET Using Your Data
    From Zero to Hero: SignalR in .NET
    course

    From Zero to Hero: SignalR in .NET

    Enable enterprise-grade real-time communication for your web apps with SignalR.

    Learn more about From Zero to Hero: SignalR in .NET
    Deep Dive: Solution Architecture
    course

    Deep Dive: Solution Architecture

    Master solution architecture and turn business needs into scalable, maintainable systems.

    Learn more about Deep Dive: Solution Architecture
    Migrating: ASP.NET Web APIs to ASP.NET Core
    course

    Migrating: ASP.NET Web APIs to ASP.NET Core

    A step-by-step process to migrate ASP.NET Web APIs from .NET Framework to ASP.NET Core.

    Learn more about Migrating: ASP.NET Web APIs to ASP.NET Core
    Getting Started: Caching in .NET
    course

    Getting Started: Caching in .NET

    Let's make the hardest thing in programming easy for .NET software engineers.

    Learn more about Getting Started: Caching in .NET
    From Zero to Hero: Testing with xUnit in C#
    course

    From Zero to Hero: Testing with xUnit in C#

    Learn how to test any codebase in .NET with the latest version of xUnit, the industry-standard testing library.

    Learn more about From Zero to Hero: Testing with xUnit in C#
    Create a ChatGPT Console AI Chatbot in C#
    blog

    Create a ChatGPT Console AI Chatbot in C#

    This walkthrough is your hands-on entry point to create a basic C# console application that talks to ChatGPT using the OpenAI API.

    Learn more about Create a ChatGPT Console AI Chatbot in C#