- *Debian
- tested on Linux Mint 18.04 but should work on any common distro
- DotNet Core SDK
- rested with version 2.2.0
- Docker
- tested with version 18.09.4
- Python 3
- with following libraries:
uuid
,urllib
,lxml
- with following libraries:
- MySQL client
- testesd with version 14.14
- Networking:
api.local
redirected to127.0.0.1
(testeds usinghosts
file)- Ports:
- Web:
8080
- application itself,5000, 5050, 5051
- running api and services - RabbitMQ:
5672
- messaging queue itself,15672
- RabbitMQ management - Database:
30006
- MySQL database port
- Web:
# requirements already satisfied
git clone https://github.com/antoninkriz/KrizikPedFUznaniPredmetu.git
cd KrizikPedfUznaniPredmetu/Tools/DockerDeploy
sudo ./netcore-publish.sh
Whole project can be divided into following parts:
- Back-end
- KarolinkaUznani.Api - Api containing only controllers and connection to RabbitMQ
- KarolinkaUznani.Services - Services themselves
- ... .Auth - Everything related to users - sign up, login, ...
- ... .Data - Fetching data related to Karolinka only from the database
- Front-end
- KarolinkaUznani.Api/ClientApp - Whole front-end client with styles and everything around
- Database
- Database/*.sql - SQL scripts to create and seed the database from
- KarolinkaUznani.Database - contains only stored procedures
- Tools
- DockerDeploy - script for one-click deployment of the whole project
- KarolinkaToSQL - script parsing Karolinka into one huge SQL insert
- Docker - for simple project deployment across other systems
- RabbitMQ - messaging queue for communication between API and Services
- MySQL - platform on which is the whole database based around
A great tool to eliminate "it works on my machine" phrase. Simple to setup with docker-compose and sounds great as a buzzword.
Since RabbitMQ is the most used solution of its type, combined with RawRabbit (.Net framework for communication with RabbitMQ server) and since it's also used at my workplace, the choice was simple.
To make everything sound even cooler my first choice was MongoDB, but since the relational database is a better choice for this project, I stuck to MySQL which I already have more experience with. However, the whole structure of this project takes in mind possible usage of other types of databases.
- C# DotNet Core - framework the whole project is based on
With my love for modern C#, its usage at my workplace, simple one-click creation of SPA (Single Page Application) web project and an already solid amount of experience, the choice was simple.
- Angular 7 - front-end TypeScript based web framework
- SCSS - CSS extension language
With already some experience with React, I wanted to try something new, its also used at my workplace and with its popularity in other job listings, it was a simple choice over VueJS. TypeScripts
Pure CSS makes me sucidal unhappy to work with, especially on bigger projects, so LESS or SCSS was an obvious choice. For my purposes, both would do the job just fine, but SCSS was easier for me to integrate with Angular.
With a solid amount of libraries, Python was the perfect choice for something like a script parsing HTML from a website.