Skip to content

matebence/app-blesk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

200 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blesk microservice application

Blesk logo

vehicle-service

Places service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

warehouse-service

Places service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

shipment-service

Places service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

parcel-service

Places service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

place-service

Places service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

account-service

Account service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

user-service

User service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

messaging-service

Messaging service for Blesk microservice application. API Docs.
Build Status GitHub issues GitHub forks GitHub stars

authorization-server

Authorization server for Blesk microservice application. Docs and API Docs.
Build Status GitHub issues GitHub forks GitHub stars

gateway-server

Gateway server for Blesk microservice application. Docs and API Docs.
Build Status GitHub issues GitHub forks GitHub stars

config-server

Config server for Blesk microservice application. Docs.
Build Status GitHub issues GitHub forks GitHub stars

naming-server

Naming server for Blesk microservice application. Docs.
Build Status GitHub issues GitHub forks GitHub stars

tracking-server

Tracking server for Blesk microservice application. Docs.
Build Status GitHub issues GitHub forks GitHub stars

Project is build up on technologies like

  • Spring Cloud Config server,
  • Load Balancing with Ribbon, Feign and Resilient
  • Naming Server with Eureka
  • Fault Tolerance with Hystrix
  • API Gateway with Zuul
  • Distributed Tracking with Zipkin
  • Request identification with Spring Cloud Sleuth
  • CI - Travis, Jenkins
  • Docker, Docker-compose
  • Postman for API testing
  • RabbitMQ - service to service communication
  • Websocket - real time communication
  • Databases - MySQL, PostgreSQL, MongoDB, Redis
  • ORM - Hibernate, Sequelize
  • ODM - Mongoose
  • Spring Data, JPA, Criteria API, JPQL
  • RESTful API (REST API), HATEOAS
  • Template engines: EJS, Thymeleaf
  • Proxying
  • Web push notifications
  • Swagger - API Documentation
  • Frontend - React, Vue, Angular
  • Backend - NodeJs, Java Spring

Possible future improvements

  • Using Kong or Spring Cloud Gateway as gateway-server (Native websocket support)
  • Securing application via Keycloak
  • Doing microservices with JHipster
  • Creating PWA react-app

Network

Services Proxy-tier(IPv4Address) Front-tier(IPv4Address) Back-tier(IPv4Address)
pwa-react 000.000.0.0/00 192.168.0.8/20 000.000.0.0/00
web-vue 000.000.0.0/00 192.168.0.9/20 000.000.0.0/00
admin-angular 000.000.0.0/00 192.168.0.10/20 000.000.0.0/00
landing-bootstrap 152.61.0.2/30 192.168.0.7/20 172.31.0.21/16
vehicle-service 000.000.0.0/00 000.000.0.0/00 172.31.0.19/16
warehouse-service 000.000.0.0/00 000.000.0.0/00 172.31.0.18/16
shipment-service 000.000.0.0/00 000.000.0.0/00 172.31.0.17/16
parcel-service 000.000.0.0/00 000.000.0.0/00 172.31.0.16/16
place-service 000.000.0.0/00 000.000.0.0/00 172.31.0.15/16
account-service 000.000.0.0/00 000.000.0.0/00 172.31.0.10/16
user-service 000.000.0.0/00 000.000.0.0/00 172.31.0.11/16
messaging-service 000.000.0.0/00 000.000.0.0/00 172.31.0.14/16
authorization-server 000.000.0.0/00 000.000.0.0/00 172.31.0.9/16
config-server 000.000.0.0/00 000.000.0.0/00 172.31.0.3/16
gateway-server 000.000.0.0/00 192.168.0.11/20 172.31.0.8/16
naming-server 000.000.0.0/00 192.168.0.6/20 172.31.0.20/16
tracking-server 000.000.0.0/00 192.168.0.5/20 172.31.0.12/16
postgres-database 000.000.0.0/00 000.000.0.0/00 172.31.0.2/16
mysql-database 000.000.0.0/00 000.000.0.0/00 172.31.0.6/16
redis-database 000.000.0.0/00 000.000.0.0/00 172.31.0.4/16
mongo-database 000.000.0.0/00 000.000.0.0/00 172.31.0.13/16
rabbit-message-queue 000.000.0.0/00 000.000.0.0/00 172.31.0.5/16
adminer-panel 000.000.0.0/00 192.168.0.4/20 000.000.0.0/00
rabbitmq-panel 000.000.0.0/00 192.168.0.3/20 000.000.0.0/00
mailhog-panel 000.000.0.0/00 192.168.0.2/20 000.000.0.0/00

Ports

Service name Port Programing language Framework Database
App landing-bootstrap 4100 JavaScript jQuery, Bootstrap -
App pwa-react 4200 JavaScript React -
App web-vue 4300 JavaScript Vue -
App admin-angular 4400 JavaScript Angular -
Service place-service 5000 - 5100 JavaScript Express.js MySQL, Redis
Service vehicle-service 5200 - 5300 JavaScript Express.js Mongo, Redis
Service warehouse-service 5400 - 5500 JavaScript Express.js Mongo
Service shipment-service 5600 - 5700 JavaScript Express.js Mongo, Redis
Service parcel-service 5800 - 5900 JavaScript Express.js PostgreSQL, Redis
Service account-service 7000 - 7100 Java Spring Boot PostgreSQL, RabbitMQ
Service user-service 7200 - 7300 Java Spring Boot MySQL, Redis
Service messaging-service 7400 - 7500 Java Spring Boot Mongo
Server authorization-server 9090 Java Spring Boot RabbitMQ
Server config-server 8888 Java Spring Boot GitHub
Server gateway-server 8765 Java Spring Boot -
Server naming-server 8761 Java Spring Boot -
Server tracking-server 9411 Java Spring Boot RabbitMQ
Database postgresql 5432 - -
Database mysql 3306 - -
Database redis 6379 - -
Database mongo 27017 - -
Message queue rabbitmq 5672 - -
Message queue rabbitmq-management 15672 - -
Dev tools mailhog 1025 - -
Dev tools mailhog-client 8025 - -
Dev tools adminer 8050 - -
Dev tools jenkins 8080 - -

Application acces

Role Username Password
ROLE_ADMIN admin admin123
ROLE_MANAGER jansiroky manager123
ROLE_CLIENT petervarga client123
ROLE_CLIENT lukastrnka client123
ROLE_COURIER michalvelky courier123
ROLE_COURIER denismaly courier123

system server-key

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dpbl9pZCI6MSwiYWNjb
3VudF9pZCI6MSwidXNlcl9uYW1lIjoic3lzdGVtIiwic2NvcGUiOlsidHJ1c3Q
iXSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9TWVNURU0iXSwianRpIjoiZWM3ZmE5Z
GItZmY0MS00NmU4LWI4OTctMDI1YWE1YWFlMWQ2IiwiY2xpZW50X2lkIjoiOGR
lNGRjNTYtNmU5Ni0xMWVhLWJjNTUtMDI0MmFjMTMwMDAzIiwiYWN0aXZhdGVkI
jp0cnVlfQ.KzxBtlmKOliwE8tdbeBgXgWb3vlcRp4-x4vmVA-2wI4GfWtK1d-A
x4QQDImOqhnRNh81H9H0SxPYaurSo_RJUpt35iXUSmIp5rizGXAj3xge9tf5o1
jeZcVmuipzoZzF46cdnakmjaOk3fwerX50p_egO62ew8DdUgcpNpz7cyZH7-0e
bAziYNibaka0s5NwksEhrFmK1BAxu-8_couQI3R5E_veygCnA92i6gkO-4BQS3
42vnHgpI31QT5lm9BG_KM6ADqDFYwD_JCRCVeUzQymP2YL3jOlDsdJ_p5vzNjG
DrJIfSwMPDL-sIGZ9QbyXL7ffgbIiga1XI3qJ6UcGA

naming-server

username: app-blesk-naming-server
password: b1477e9ba7723b8f47e9727a39a51edf

config-server

username: app-blesk-config-server
password: b8199f18ee07292f39f5d9213cf493e8

tracking-server

username: app-blesk-tracking-server
password: 59fe09743cb9ef59276464f81734a003

JWT

username: 8de4dc56-6e96-11ea-bc55-0242ac130003
password: 04ed73c86f2d48e9789fa2d2bae6acf78bcd9b431d676e5f6d9c9c9a28de29a3

JSON Web token .pem

openssl genrsa -out jwt.pem 2048

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwySCnVbkvES/mMHJllnNM5lQ9m26uXbbJzohBhCQyRe/wvuC
1UqXDNd45VsgGWk2zZ9/36EH0DZLrrTMR487Xqa+/OWm1ZDlNRKJDBcHv/WWcx1X
ULS3uC3hvcz/7kFTQTj80vvfhtUOfl7mXMh7hznvKqB2oe067ZDzigqlDPjBCVpm
GC77aHcw7HF4NVnsDki8oHUs9uEB2IHDrcpYcSUivEwI2cN1mWDSQtoH3WRxHe39
nIE748tLatkjvmKLzArugbuWh3his10DAVfULg3kLRDtIBadvxxRZPqjyeSjFL0t
i8yO4Dahyg4iDrBhY2Xc9kUeZssRxETbxmu0BQIDAQABAoIBAG4CnSe6HsUMNL8X
MF/0TDx0iDIEdimsGawplwhmOllDbDWtuHopzLHOnzcdgiERMXYGHv6hN1hn446g
GjGVS7D2a+ECTmVDhBPBWUVZjmLnPmOy/NBgsNnB8+seMIHOjfLM/6qpl7/ZSIxx
T4iq9Qis3mm3gGmU5Y2cE8+UZKvEbC9dlUrHYUNo76j0KToqoNwFymNPUzUSyA+d
iQmQIQNy31e+G5SNUYeorGXR8rVrgk67YAWzmTJUzqO+9e9fS9BqzSYFDCCwaNdU
YSfwIav9CGCsVN7u2jZM5yyMPZuHgZPyxRm55vgS6iqbFxmoFkdjVmhvhmAHMiWY
5c0KVJkCgYEA6rpCH1hqTQKdoaznkv0Kc2ImnKbelU9PDj2r9upsTGOM87tSFlCv
McQjdAwVXlcTh4D/a+SYOcHYi2hURpAomjOuzLCeMYWkyBx9ZPw//UAGTaq8TKEt
iotOWT0m1tC5OvAeH43E/FPVmtLis8/cZw86poc4IE8mt3ZqjbuLnRMCgYEA1NPe
25wicdGb15oWpoYYxDjX9CXsFEcB2PsRfvFI7/AiDU+DiPJBcRKhKNfWjJ8CdsUC
+hcBwKroTuWAw6NKbTYIXPUWyIKFztYHtI0IJB5OZmx1J6whmBfb5n2HmBew73iH
i0sg/0dk9hNq44Vik+hQbEYg3AEuWaIocNcrhYcCgYEApKZgiYJIlpp2HhmeGyI6
eXNo6Eu5KH0IVFH4VWxc6TyPe8xzKUoRilQuFlH/jzx/a3aWNIWWLjWGg0t8ij7G
7FvCirx9SvmW+/PYFcVH0YpeoY5ZJVuOCXfsTnaxzs98jxYt2y5j9ieMV10EPuNY
lEY/et6xBSDgZKLA3Yinx1cCgYAsKyBIEVowpuCh2Q+0VYYUSvu+ZpRdDPN8NXbH
EoohiYN3obXZmPUt40Dg+hJDsshPH8njXxz1AEMgBI85iszqZ1lK+W5WBIiCiXal
6NL0s/lvVjjmF9oM936ikhCu5tPIjwoKRXg+onF4hEUdnNP9gCwYnGE7Z19YKMgd
yvn0RwKBgDK8RP58qyEHRB52La33PBMubD3JvIh0Sx1RVU9c0WhotaLiZs6KWrpA
4Tgzxw/bImb526+MDNQhYDu0m5AxWxbnrXEM4Jp+3dB7iJVaaoxNRhKT/bUkrt/5
LK0ojxkkvsvpYP4iLhqHzj10k4TbK9mz582SmoN07ekT1vtqr2Em
-----END RSA PRIVATE KEY-----

JSON Web token private key from .pem

openssl rsa -in jwt.pem

----------BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwySCnVbkvES/mMHJllnNM5lQ9m26uXbbJzohBhCQyRe/wvuC
1UqXDNd45VsgGWk2zZ9/36EH0DZLrrTMR487Xqa+/OWm1ZDlNRKJDBcHv/WWcx1X
ULS3uC3hvcz/7kFTQTj80vvfhtUOfl7mXMh7hznvKqB2oe067ZDzigqlDPjBCVpm
GC77aHcw7HF4NVnsDki8oHUs9uEB2IHDrcpYcSUivEwI2cN1mWDSQtoH3WRxHe39
nIE748tLatkjvmKLzArugbuWh3his10DAVfULg3kLRDtIBadvxxRZPqjyeSjFL0t
i8yO4Dahyg4iDrBhY2Xc9kUeZssRxETbxmu0BQIDAQABAoIBAG4CnSe6HsUMNL8X
MF/0TDx0iDIEdimsGawplwhmOllDbDWtuHopzLHOnzcdgiERMXYGHv6hN1hn446g
GjGVS7D2a+ECTmVDhBPBWUVZjmLnPmOy/NBgsNnB8+seMIHOjfLM/6qpl7/ZSIxx
T4iq9Qis3mm3gGmU5Y2cE8+UZKvEbC9dlUrHYUNo76j0KToqoNwFymNPUzUSyA+d
iQmQIQNy31e+G5SNUYeorGXR8rVrgk67YAWzmTJUzqO+9e9fS9BqzSYFDCCwaNdU
YSfwIav9CGCsVN7u2jZM5yyMPZuHgZPyxRm55vgS6iqbFxmoFkdjVmhvhmAHMiWY
5c0KVJkCgYEA6rpCH1hqTQKdoaznkv0Kc2ImnKbelU9PDj2r9upsTGOM87tSFlCv
McQjdAwVXlcTh4D/a+SYOcHYi2hURpAomjOuzLCeMYWkyBx9ZPw//UAGTaq8TKEt
iotOWT0m1tC5OvAeH43E/FPVmtLis8/cZw86poc4IE8mt3ZqjbuLnRMCgYEA1NPe
25wicdGb15oWpoYYxDjX9CXsFEcB2PsRfvFI7/AiDU+DiPJBcRKhKNfWjJ8CdsUC
+hcBwKroTuWAw6NKbTYIXPUWyIKFztYHtI0IJB5OZmx1J6whmBfb5n2HmBew73iH
i0sg/0dk9hNq44Vik+hQbEYg3AEuWaIocNcrhYcCgYEApKZgiYJIlpp2HhmeGyI6
eXNo6Eu5KH0IVFH4VWxc6TyPe8xzKUoRilQuFlH/jzx/a3aWNIWWLjWGg0t8ij7G
7FvCirx9SvmW+/PYFcVH0YpeoY5ZJVuOCXfsTnaxzs98jxYt2y5j9ieMV10EPuNY
lEY/et6xBSDgZKLA3Yinx1cCgYAsKyBIEVowpuCh2Q+0VYYUSvu+ZpRdDPN8NXbH
EoohiYN3obXZmPUt40Dg+hJDsshPH8njXxz1AEMgBI85iszqZ1lK+W5WBIiCiXal
6NL0s/lvVjjmF9oM936ikhCu5tPIjwoKRXg+onF4hEUdnNP9gCwYnGE7Z19YKMgd
yvn0RwKBgDK8RP58qyEHRB52La33PBMubD3JvIh0Sx1RVU9c0WhotaLiZs6KWrpA
4Tgzxw/bImb526+MDNQhYDu0m5AxWxbnrXEM4Jp+3dB7iJVaaoxNRhKT/bUkrt/5
LK0ojxkkvsvpYP4iLhqHzj10k4TbK9mz582SmoN07ekT1vtqr2Em
-----END RSA PRIVATE KEY-----

JSON Web token public key from .pem

openssl rsa -in jwt.pem -pubout

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwySCnVbkvES/mMHJllnN
M5lQ9m26uXbbJzohBhCQyRe/wvuC1UqXDNd45VsgGWk2zZ9/36EH0DZLrrTMR487
Xqa+/OWm1ZDlNRKJDBcHv/WWcx1XULS3uC3hvcz/7kFTQTj80vvfhtUOfl7mXMh7
hznvKqB2oe067ZDzigqlDPjBCVpmGC77aHcw7HF4NVnsDki8oHUs9uEB2IHDrcpY
cSUivEwI2cN1mWDSQtoH3WRxHe39nIE748tLatkjvmKLzArugbuWh3his10DAVfU
Lg3kLRDtIBadvxxRZPqjyeSjFL0ti8yO4Dahyg4iDrBhY2Xc9kUeZssRxETbxmu0
BQIDAQAB
-----END PUBLIC KEY-----

Example of JWT token

It can be tested here https://jwt.io/

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50X
2lkIjozLCJ1c2VyX25hbWUiOiJwZXRlcnZhcmdhIiwic2NvcGU
iOlsidHJ1c3QiXSwiZXhwIjoxNTk0ODAzMDAxLCJhdXRob3Jpd
GllcyI6WyJST0xFX0NMSUVOVCJdLCJqdGkiOiIxMWE4NmQxZS1
kMzAwLTQ5M2QtOTQ4Mi01ZTNkYTc4Y2U0ZTMiLCJjbGllbnRfa
WQiOiI4ZGU0ZGM1Ni02ZTk2LTExZWEtYmM1NS0wMjQyYWMxMzA
wMDMifQ.EWASm5uonsM6c_jJqgqWgkXApWVmkGDEKYlUEnFKvY
JtI1ysVk4THFoYFeZYCsHoZijk1wnCg1hyB4gZSOCJ1Q6p9l0z
q0TBBlliyroCpfmIM2Ijot03r5T_69SWD2LDhs4b9y_XFIc3NA
qB_jkBdZCqGy4w2VnhamjGc2zfLAOoywlGZqku2s0TIQCpZU0L
EoEQqogSw-KUMWLbkVCNfLEvtOOIwzTzELedqyJWmajQ1Eh5oK
MdBBS9yzACahpcZm6x_mX-9jp1elaIO4Yty-glIFFqb5EjBm6v
0DvDN_PE5iBVXyk3mNbX6xGk_lQ7kyivlLBVyy1cxeufN6qy8Q

List of third party APIs

  • Stripe API - payment
  • Firebase API - push notifications
  • IP-API API - location
  • IPIFY API - IPv4 address
  • HERE API - maps

API keys are stored on Google Drive

Docker base images

Server configuration and startup file

The server config files can be found here and the strartup file is stored in a Docker compose .yml file

docker-compose up -d -f docker-compose.yml

Script snippets

Docker

docker-compose up
docker-compose up -d
docker-compose up -f file-name

docker-machine ls
docker-machine rm
docker-machine start vm
docker-machine stop vm

docker buil -t image-name .
docker network create network-name
docker run -d -t -i -e ENV=value --network network-name --name container-name -p CPORT:HPORT image:tag

docker ps -a
docker images -a
docker network ls

docker logs -f container-name
docker exec -it container-name bash

docker rmi image-name
docker rm container-name
docker kill container-name
docker network rm network-name

docker image prune
docker volume prune
docker network prune
docker container prune

Angular

ng build
ng build --base-href=/manage
ng serve
ng serve --port 4100

ng g c component-name
ng g s service-name
ng g d directive-name

Vue

npm run dev
npm run build

CORS

CORS policy definition can be found here gateway-server.yml file

Postman scripts

Docker images

Invoice example

Invoice eb5377322765cde00ebb8986e65430ea.pdf

Log example

Log proxy-server.log

List of email notifications

Mailhog dashboard

Jenkins dashboard

Jenkins dashboard

Eureka dashboard

Eureka dashboard

Microservices network illustration

Microservice network

Zipkin request identification

Zipkin request identification

Caching strategy illustration

Caching strategy

Proxy illustration

App proxy flow

CI/CD illustration

CI/CD illustration

Application UI screenshoots

email notifications (structure)

Email Notifications - structure

landing-boostrap (home-page)

Landing Bootstrap - Home Page

web-vue (auth)

Web Vue - Auth

web-vue (client-dashboard)

Web Vue - Client Dashboard

web-vue (courier-dashboard)

Web Vue - Courier Dashboard

admin-angular (auth)

Admin Angular - Auth

admin-angular (management-dashboard)

Admin Angular - Management Dashboard

About

Blesk microservice application

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors