• Courses
  • TutorialsFree
  • Learning Paths
  • Blogs
  • Authors
  • 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, 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 46m 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
    01:13 Free preview
    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:45
    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:49
    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:04
    Accessing user identity in the API
    08:55
    Section recap
    01:28
    Introduction
    03:46
    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:01
    Implementing access restrictions for KeyVault
    02:15
    Section recap
    02:29
    Conclusion
    00:48

    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

    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
    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
    Working with Large Language Models
    tutorial

    Working with Large Language Models

    Learn how to work with Large Language Models (LLMs). Understand the fundamentals of how GPT works, the transformer architecture, and master prompt engineering techniques to build AI agents.

    Learn More
    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
    Deep Dive: Solution Architecture
    course

    Deep Dive: Solution Architecture

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

    Learn More
    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
    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
    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
    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