https://github.com/david-desmaisons/beerbrowser
https://github.com/david-desmaisons/beerbrowser
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/david-desmaisons/beerbrowser
- Owner: David-Desmaisons
- Created: 2020-08-01T13:08:41.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T20:46:28.000Z (over 2 years ago)
- Last Synced: 2025-01-19T06:10:16.592Z (5 months ago)
- Language: C#
- Size: 4.18 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BeerBrowser
## Architecture
- 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.## Build instructions
### Set-up
Create an empty PostgreSQL database:
```SQL
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"
### Back-End
```bash
dotnet restore
dotnet build
```
### Front-End```bash
npm install
npm run build
```For debug:
```bash
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.## Libraries used
### Back-End
- ASP.Net Core 2.2
- [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) to provide swagger integration of the API
- [Nhibernate](https://nhibernate.info/), [Fluent Nhibernate](https://github.com/FluentNHibernate/fluent-nhibernate) and [Fluent.Migrator](https://fluentmigrator.github.io/) to handle SQL data
- [Scrutor](https://github.com/khellang/Scrutor) to simplify dependency injection
- For tests:
- [XUnit](https://xunit.net/) as test framework
- [NSubstitute](https://nsubstitute.github.io/) for mocking
- [FluentAssertions](https://fluentassertions.com/) for test assertion
- [AutoFixture](https://github.com/AutoFixture/AutoFixture) to generate random test data### Front-End
- [vue.js](https://vuejs.org/) as the front-end framework
- [vue router](https://router.vuejs.org/) to handle client-side navigation
- [vuetify](https://vuetifyjs.com/en/) as UI material design library
- [axios](https://github.com/axios/axios) as a ajax library
- [scrollwatch](https://edull24.github.io/ScrollWatch/) to handle lazy-loading on scroll
- [lodash.debounce](https://lodash.com/docs#debounce) to debounce search input updates