Coder Social home page Coder Social logo

bangazon-inc's Introduction

The Backend

You made it

As you know by now, at NSS we focus on pragmatic, hands-on learning. To that end, we're going to spend most of our time focused on building a powerful, easy-to-use, multi-user blogging platform called TabloidTM*.

* Tabloid is a wholly owned subsidiary of Bangazon Inc.

Orientation

We'll spend the first few weeks orienting you to .NET, C#, SQL, and a new set of tools and techniques for building complex applications.

  1. Installation of required tools.
  2. Introduction to the C# language.
  3. Concepts of sustainable, scalable, object-oriented software development.
  4. Overview of server-side development ecosystem
  5. How the Internet works
  6. Inheritance, composition, and aggregation
  7. Entity relationships
  8. Structured Query Language (SQL)

At the end of orientation, you will build a command line prototype of the Tabloid application.

Web Applications using Server-side Rendering

After orientation's focus on the command line development, we'll turn to web applications using Microsoft's powerful, open source ASP.NET Core framework.

We'll start with building server-side rendered web apps using ASP.NET Core MVC. These applications will generate HTML on the server and send it to the browser.

We'll wrap up this phase of the course by building an MVP of Tabloid.

Full Stack Web Applications

Finally, we'll end the course by learning to build a back-end API using ASP.NET Core Web API. This will give us the opportunity to build a dynamic front-end in React.

In the final group project we'll take two sprints to build Tabloid as a full stack application with a .NET back-end and a React front-end.

Capstone

After we've covered the course material, you'll wrap up your time at NSS by building a capstone project to demonstrate your learning.

Learning Objectives

Learning objectives

Ready to get started?

Book 1 - Orientation

bangazon-inc's People

Contributors

adamsheaffer avatar askingalot avatar brendalong avatar bryannilsen avatar copypastedeveloper avatar dtinsley333 avatar franticallycodes avatar gregkorte avatar jisie avatar joelvenable avatar joeshep avatar katerebekah avatar kimberly-bird avatar krnorris65 avatar leahhoefling avatar matthamil avatar megducharme avatar misspeperr avatar newevolution avatar stevebrownlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bangazon-inc's Issues

Remove sqlite from curriculum

Since we'll be introducing SQL Sever earlier in the course, we no longer need sqlite.

Remove mention of SQLite, tableplus and db browser from installations chapter.

Updates to Classes Chapter

There are errors in C# in the code in the Method section of this chapter

  1. Property name case in Customer class
  2. Add a string Transit property to DeliveryService
  3. Add bool IsLocal property to Customer
  4. Remove string.Format in Customer's FullName property.
  5. In Program change reference to TransitType.Train enum value to a string, "train"

SQLite Setup Instructions

Official SQLite installation instructions are woefully out of date. Add real instructions to initial chapter.

Introduce SSMS at the end of the last Bangazon Sprint

SSMS takes up too much time to download and install, and it takes up too much hard drive space. Instead of introducing it at the beginning just to run one query to create the database (and then not use it anymore), introduce it at the end when they have more context and when they have already used the Object Explorer more.

Add challenges to Student Exercises part 4

Since some students finish all orientation exercises much earlier than others, we should add some challenges to the final exercise that reinforce the lessons from orientation. Students who have completed all other exercises can then work on these challenges.

Updates to Book 2 Chapter 10 "Starting your sprint"

  1. Remove dapper
  2. Add System.Data.SqlClient
  3. Mention creating project with Visual Studio
  4. Change connection string to "Server=localhost\SQLEXPRESS;Database=BangazonAPI;Trusted_Connection=True;"
  5. Add bangazon.sql script

Update "Intro to Visual Studio" chapter

  1. Add discussion of Solutions and Projects.
  2. Ask a junior instructor what other parts of VS need to be discussed in the intro.
  3. Also ask a junior instructor to review the debugging in VS chapter.

Clarify language in Iterating Over Planets exercise in Dictionary chapter

Change the following instruction to something that suggests that each dictionary should have a planet name as a key and a probe name as a value.

Create another list containing dictionaries. Each dictionary will hold the name of a spacecraft that we have launched, and the name of the planet that it has visited. If it visited more than one planet, just pick one.

Static methods and properties in C#

  1. Create Utility class
  2. Create static method DisplayStrings()
  3. Instead of using foreach or ForEach(), use the Select() LINQ method to generate an IEnumerable<string> and then send that collection to DisplayStrings()

Add GIFs and Example to the Debugging in VS Chapter

Add some animated gifs to show...

  • Running the debugger
  • Setting a breakpoint
  • Opening Locals and Immediate Windows

Add a concrete example of using the debugger to find a bug in a real console application.

Add *.csproj file to ADO.NET Chapter

The DepartmentsAndEmployees.csproj file is needed since it has the reference to System.Data.SqlClient.

I think it makes sense to make the students copy and paste all the code instead of giving them a repo to clone because this is the first time they've done a real project in visual studio...but I'm open to other opinions, of course.

Investigate Azure Data Studio

Determine its usage in the community, and have C# instructors download and evaluate its ease of use for instruction.

Chapter on integration testing

Show students how to setup and configure as testing project for a solution. Explain Arrange, Act, Assert steps. Show how to do the following.

  1. Check status code
  2. Check content for expected strings
  3. Check header content
  4. How to post and check that resulting list/detail has the info

Chapter on using SignInManager and UserManager in Razor

For the final sprint, students use Identity Framework, and a few issues require them to show/hide HTML components based on the authentication status of the user. Either add a chapter, or add to the README of the boilerplate.

From _LoginPartial.cshtml

@using Microsoft.AspNetCore.Identity
@using Bangazon.Models

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager

In _Layout.cshtml

@inject SignInManager<ApplicationUser> SignInManager
    @if (SignInManager.IsSignedIn(User))
    {
        @await Component.InvokeAsync("MiniCart")
    }

Chapter & Boilerplate for Web API integration testing

Create a chapter in Book 2 that shows the basics of creating a test project for a Web API and implementing the following two packages.

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;

To create an HttpClient in order to make requests to the API.

Here's my initial implementation of a client provider

using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using StudentExercisesAPI;
using System.Net.Http;

namespace TestStudentExercisesAPI
{
    class APIClientProvider
    {
        private TestServer server;
        public HttpClient Client { get; private set; }

        public APIClientProvider()
        {
            server = new TestServer(new WebHostBuilder().UseStartup<Startup>());
            Client = server.CreateClient();
        }

        public void Dispose()
        {
            server?.Dispose();
            Client?.Dispose();
        }
    }
}

Then create a class for writing all the facts that will make the requests to the different endpoints.

namespace TestStudentExercisesAPI
{

    public class TestStudents
    {
        [Fact]
        public async Task Test_Get_All()
        {

            using (var client = new APIClientProvider().Client)
            {
                var response = await client.GetAsync("/api/students");

                response.EnsureSuccessStatusCode();

                string responseBody = await response.Content.ReadAsStringAsync();
                var responseObj = JsonConvert.DeserializeObject<List<Student>>(responseBody);

                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            }
        }
    }
}

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.