Git Product home page Git Product logo

linker's Introduction

Linker

Azure Pipelines AppVeyor GitHub Actions Travis CI Coveralls
Azure Pipelines AppVeyor GitHub Actions Travis CI Coveralls

Linker is a really simple web-based URL shortening service.

Background

When I set out to create a Pluralsight course about my favorite build tool, Cake, I needed a sample app for my demos. The idea behind the course was to take an existing web app and show you how to use Cake to create a build and deployment pipeline for it from scratch. By the end, you'd have a Cake script that can take the application all the way from source code to software running on a server. That idea eventually turned into Building and Deploying Applications with Cake, which you can read more about here.

Right from the start, I had three requirements for my demo app:

  1. Be simple
  2. Be realistic
  3. Don't be boring

I wanted an app that felt realistic—alas, not the usual ASP.NET MVC sample app—but that was also simple enough not to become a cognitive burden. The last thing you want in a course is having to spend half the time explaining what your demo app does.

I could have gone for one of the classics like the fake CRM or the online pet store, but that would be boring. Remember, I wanted to do something fun and, possibly, useful.

So, I decided to make a URL shortening service: meet Linker.

Overview

Linker consists of a RESTful API backed by a relational database and consumed by a web frontend. Here's an overview:

Linker's Architecture

This repository contains the complete source code, with tests and everything. There's also the complete build and deployment script written with Cake.

Platform

Cake is cross-platform and so is Linker. Originally, I wrote two versions of it:

  • One that runs only on Windows on top of the .NET Framework
  • One that runs on Windows, macOS or Linux built on top of .NET Core

You'll find the Windows-only version in the pluralsight-net4.6 branch, while the cross-platform one is in a branch called pluralsight-netcore1.0. These are the exact versions featured in the Pluralsight course and will stay as they are for reference.

As time went on, however, I realized that if Linker was going to stay valuable, it had to be kept up-to-date with the current technology. So, I eventually upgraded the .NET Core version from 1.0 to 2.1 LTS.

.NET Core is clearly the future when it comes to .NET development; it's also cross-platform, leaving little value in maintaining a separate version that only runs on Windows. For these reasons, I decided to make the .NET Core 2.1 version the canonical version by merging it into master. That became the officially maintained version of Linker going forward.

What to Do with It

Although Linker came into existence to serve the needs of my Pluralsight course Building and Deploying Applications with Cake, it has proven to be equally useful for other educational purposes. In fact, I'll go as far as to say that if you ever find yourself in need of a demo app for a course, a talk or a workshop, feel free to use Linker. To put in one sentence:

Linker is a simple and complete ASP.NET Core web application, ready to go. 🚀

Of course, if you would like to improve it in any way, pull requests are always welcome.

Additional Resources

You can see Linker in action in the following online resources:

linker's People

Contributors

dependabot[bot] avatar ecampidoglio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

linker's Issues

.NET 6 upgrade plus minimal apis

Hey 👋
would you be interested in an upgrade for Linker to .NET6 and a migration to minimal apis? I may open a PR if you want.

I've appreciated your Cake presentation at the NDC Conferences, and I thought I could contribute to Linker.

Following the Pluralsight course with the updated Linker

Hello!

I'm following your Pluralsight course, and trying to follow with Linker at the same time

But now i assume the project structure is a bit different?
I get the following error, so it still seems to reference the past project files?

Build FAILED.

"D:\Development\Linker\src\Linker.sln" (Build target) (1) ->
(Build target) -> 
  D:\Development\Linker\src\Linker.sln.metaproj : error MSB3202: The project file "D:\Development\Linker\src\Web\Web.csproj" was not found. [D:\Development\Linker\src\Linker.sln]
  D:\Development\Linker\src\Linker.sln.metaproj : error MSB3202: The project file "D:\Development\Linker\src\Tests\Tests.csproj" was not found. [D:\Development\Linker\src\Linker.sln]
  D:\Development\Linker\src\Linker.sln.metaproj : error MSB3202: The project file "D:\Development\Linker\src\Model\Model.csproj" was not found. [D:\Development\Linker\src\Linker.sln]

when running the following build.cake

Task("Build")
    .Does(() =>
    {
        DotNetBuild("src/Linker.sln", settings => settings.SetConfiguration("Debug")
                                                          .WithTarget("Build"));
    });


    RunTarget("Build");

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.