YouTube Link - https://youtu.be/iYDEEdiLWKI
This project shows how to build a typical frontend backend architecture with .NET 5.0 and React. It has a corresponding video on YouTube where you can learn:
- How to create a .NET 5.0 project from scratch.
- How to setup a proper solution structure.
- How to create a repository, service and API layers.
- How to setup EF Core and Migrations.
- How to create unit tests.
- How to create a react app.
- How to setup redux.
- How to create an E2E todo feature.
You need to have the following installed on your machine to follow along with the project:
HTTP Verb | API | Description | Request Body | Response Body |
---|---|---|---|---|
GET | /todo | Get all todos | None | Array of todos |
GET | /todo/{id} | Get a todo by id | None | Todo |
POST | /todo | Add a new todo | Todo | Todo |
PUT | /todo/{id} | Update an existing todo | Todo | None |
DELETE | /todo/{id} | Delete a todo | None | None |
- Create a solution to host all the projects
dotnet new sln --name FS.Todo
- Create the Api project
dotnet new webapi --output FS.Todo.Api --framework net5.0
- Add the project to the solution
dotnet sln add FS.Todo.Api/FS.Todo.Api.csproj
- Trust the HTTPS development certificate
dotnet dev-certs https --trust
- Build the solution
dotnet build FS.Todo
- Run the project
dotnet run --project FS.Todo.Api/FS.Todo.Api.csproj
- Test it out
curl https://localhost:5001/WeatherForecast
or using Postman.
- C# extension for vs code
- Change directory to 'backend'
- Run
.NET: Generate Assets for Build and Debug
- Go to
https://localhost:5001/swagger/index.html
- C# Extensions for vs code
- Create a class library project
dotnet new classlib -o FS.Todo.Data
- Add the project to the solution
dotnet sln add FS.Todo.Data/FS.Todo.Data.csproj
- Add a reference to the new project
dotnet add FS.Todo.Api/FS.Todo.Api.csproj reference FS.Todo.Data/FS.Todo.Data.csproj
- Add a reference to the new project from the core project
dotnet add FS.Todo.Core/FS.Todo.Core.csproj reference FS.Todo.Data/FS.Todo.Data.csproj
- Install package
dotnet add package Microsoft.EntityFrameworkCore --version 5.0.1
- Installing sqlite
- VS Code extension
- Accessing sqlite database
- Install
dotnet tool install --global dotnet-ef
- Install package
dotnet add package Microsoft.EntityFrameworkCore.Design
- Add first migration
dotnet ef migrations add InitialCreate
- Update database
dotnet ef database update
- Create a class library project
dotnet new classlib -o FS.Todo.Core
- Add the project to the solution
dotnet sln add FS.Todo.Core/FS.Todo.Core.csproj
- Add a reference to the new project
dotnet add FS.Todo.Api/FS.Todo.Api.csproj reference FS.Todo.Core/FS.Todo.Core.csproj
- Add package:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
- Install code generator
dotnet tool install -g dotnet-aspnet-codegenerator
- Make sure it's up to date
dotnet tool update -g dotnet-aspnet-codegenerator
- Scaffold a new controller
dotnet aspnet-codegenerator controller -name TodoController -async -api -m TodoModel -outDir Controllers
- Install package
dotnet add package Microsoft.EntityFrameworkCore.InMemory
- Install package
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
- Create a unit test project
dotnet new xunit -o FS.Todo.Tests
- Add project to solution
dotnet sln add FS.Todo.Tests/FS.Todo.Tests.csproj
- Add reference to core project
dotnet add FS.Todo.Tests/FS.Todo.Tests.csproj reference FS.Todo.Core/FS.Todo.Core.csproj
- Add reference to data project
dotnet add FS.Todo.Tests/FS.Todo.Tests.csproj reference FS.Todo.Data/FS.Todo.Data.csproj
- Add reference to Api project
dotnet add FS.Todo.Tests/FS.Todo.Tests.csproj reference FS.Todo.Api/FS.Todo.Api.csproj
- Install package
dotnet add package Microsoft.EntityFrameworkCore
- Install package
dotnet add package Microsoft.EntityFrameworkCore.InMemory
- Install package
dotnet add package NSubstitute --version 4.2.2
- Install package
dotnet add package Microsoft.AspNetCore.TestHost --version 5.0.1
- Add
IncludeOpenAPIAnalyzers
property in the project file
<PropertyGroup>
<IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
</PropertyGroup>
- Check warnings on build.
- Run the command
npx create-react-app .
- redux
npm install redux
- react-redux
npm install react-redux
- axios
npm install axios
- rselect
npm install reselect
- redux-thunk
npm install redux-thunk
YouTube Link - https://youtu.be/iYDEEdiLWKI