-
The web-application is a Single Page Application implemented in vue.js. Client-side routing has been implemented. Infinite scroll loading has been used.
-
The back-end API is a REST-API implemented in ASP.Net Core. The persistency is using a PostgreSQL database. It is decomposed in 3 layers:
- the Site is responsible for exposing the Rest API. The search API are using pagination.
- Services implements and exposes the functionality to the site. CQRS principles have been applied with an separation between read and write objects.
- Data provide entities Nhibernate mapping and migrations.
Create an empty PostgreSQL database:
CREATE DATABASE beer WITH OWNER = postgres ENCODING = 'UTF8' CONNECTION LIMIT = -1;
The connection string to the PostgreSQL can be altered using the appsettings.json
file, name "ConnectionString"
dotnet restore
dotnet build
npm install
npm run build
For debug:
npm install
npm run serve
When running in debug the front-end application, the back-end url is provided by the .env file. It is configured to be the default port of the ASP back-end and should work without adjust.
- ASP.Net Core 2.2
- Swashbuckle.AspNetCore to provide swagger integration of the API
- Nhibernate, Fluent Nhibernate and Fluent.Migrator to handle SQL data
- Scrutor to simplify dependency injection
- For tests:
- XUnit as test framework
- NSubstitute for mocking
- FluentAssertions for test assertion
- AutoFixture to generate random test data
- vue.js as the front-end framework
- vue router to handle client-side navigation
- vuetify as UI material design library
- axios as a ajax library
- scrollwatch to handle lazy-loading on scroll
- lodash.debounce to debounce search input updates