Skip to content

Web app for coordinating material assistance.

Notifications You must be signed in to change notification settings

KUGELO2424/Kordi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

General info

This project was created as part of an engineering thesis. The goal of this project was to create a functional online app to coordinate in-kind assistance in crisis situations. The application allows verified users to create collection and manage them. User can specify collection items and their limits. Other logged users can donate things to collections.
Web app has a responsive user interface built with Angular, Bootstrap, PrimeNG and use REST API implemented in Spring project
The application is intended to improve the efficiency and effectiveness of assistance efforts in crisis situations, and to better match the needs of those affected with available resources.

How to Use (backend in docker-compose)

To run Kordi backend app in docker with mysql, use docker-compose file located in backend/docker/kordi_docker_compose.yml. Environmental variables are located in docker-compose file.

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

How to Use (backend dev environment)

Step 1: To run Kordi you need to have an instance of mySql server. You can use the tools.yml file for this and fire up mysql as a docker container using the following command:

docker-compose -f tools.yml up -d

tools.yml also includes a mail server, which is used in the user registration process.

Step 2: The ddl-auto property is set to update by default. After launching the kordi application, the database schema will be prepared. To import the initial data, change the sql.init.mode property to always to import data from the data.sql file. After importing the data, return to the previous value to prevent the data from being loaded twice. If you want to create the database schema yourself, you can use the db_schema.sql file for this purpose.

Step 3: Before running project, export DB_HOSTNAME, DB_PORT, DB_NAME, KORDI_USER and KORDI_PASS as your enviromental variables or create application-dev.yml file locally with proper properties. Example values in .env.example that could be used for connecting with local MySQL instance.

DB_HOSTNAME=localhost
DB_PORT=3307
DB_NAME=kordi
KORDI_USER=kordi
KORDI_PASS=kordi

Step 4: Project use external platform Twilio for verifing user by phone number. To use phone verification, plese create account here. Then export TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_SERVICE_ID as your enviromental variables or create application-dev.yml file locally with proper properties. Example values in .env.example that could be used for connecting with TWILIO platform.

TWILIO_ACCOUNT_SID=test
TWILIO_AUTH_TOKEN=test
TWILIO_SERVICE_ID=test

Step 5: Project use mailing for verifing user by email address. To use email verification export enviromental variables or create application-dev.yml file locally with proper properties. Example values in .env.example that could be used for mail server

MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USER=test
MAIL_PASSWORD=test

Step 6: After setting all the properties, run the following command to launch the application:

./mvnw spring-boot:run

How to Use (frontend)

To start angular app, run following commands in frontend directory

npm i
ng serve

Technologies

  • Java 17
  • Spring boot 2.7.7
  • Maven 3.8.1
  • Junit 5
  • Lombok 1.18.24
  • Springdoc 1.6.11
  • MapStruct 1.5.2
  • Twilio 8.31.1
  • MySQL
  • TypeScript 4.6.2
  • Angular 14
  • Bootstrap 5.2.2
  • PrimeNG 14

Demo

Home

11

Login

12

Signup

13

Phone verification

verify

Add new collection (info)

add01

Add new collection (locations)

add02

Add new collection (add item)

add03

Add new collection (items)

add04

Collection list (filter & sort)

collections01

Collection list

collections02

Collection

collection01

Collection share buttons

collection04

Collection (locations & comments)

collection02

Collection (items)

collection03

Collection donate overview

overview

Profile (user collections)

profile1

Profile (user donates)

profile2

Collection (donated items)

donates