Skip to content

Backend repository of DONUT-DONationUTile -2024 Solution Challenge Global top 10

Notifications You must be signed in to change notification settings

Donut-DONationUTile/Donut_Server

Repository files navigation

Introduction

Demo Video

DONUT is a sustainable donation platform tailored to the developmental characteristics of adolescents, providing a stigma-free process for beneficiaries.

By utilizing unused resources such as gift vouchers, amounting to 9 billion KRW annually in South Korea, it facilitates low-income youth to purchase groceries and essential items.


Architecture



DONUT is comprised of a Client Application, Web Server, Database, Storage, and AI Server.

The Client Application is implemented on Android using Kotlin, with the MVVM architecture to separate UI logic from business logic and increase code reusability and scalability. Through various interactions with users, the Client Application forwards requests to the Web Server.

The Web Server processes client requests and can communicate with the AI Server in need. It is implemented based on Spring Boot and utilizes Redis for JWT processing. Both Spring Boot and Redis are deployed in Docker containers via GCP Compute Engine. CI/CD is established using GCP Code Build and Artifact Registry for agile development.

A MySQL 8.0-based GCP Cloud SQL instance serves as the main Database. GCP Cloud Storage is used for the Image bucket, where URLs of inserted objects are stored in the Database.

The AI Model, served by FastAPI, is hosted on a separate VM from the Web Server. It is also deployed using Docker in preparation for utilizing Kubernetes for resource management caused by an increase in the number of users. Low-resolution gift card images forwarded from the Web Server to the AI Server are enhanced to high resolution using TensorFlow’s ESRGAN model and then stored in the GCP Storage bucket. The URLs of the stored objects are also updated in the Database.



Tech Stacks

image



How to Run - Server

Requirement

  • Account of Docker Hub

Local

  1. gradle build
  2. docker build -t yourAccount/yourRepository ./
  3. docker push yourAccount/yourRepository

Deploy

  1. create docker-compose.yml
  2. sudo docker pull yourAccount/yourRepository
  3. sudo docker tag yourAccount/yourRepository dockerImageName
  4. sudo docker-compose up

( docker-compose.yml that we created is on Server repository)



✨ How to Use DONUT



Member

Ganghee Lee Yeonsoo Kang
EWHA Womans University EWHA Womans University
Backend Backend

Commit convention

Tag name Description
feat Commits that add a new feature
fix Commits that fix a bug
build Commits that affect build components
chore Miscellaneous commits
style Commits for code styling or format
docs Commits that affect documentation only
test Commits that add missing tests or correcting existing tests
refactor Commits for code refactoring

About

Backend repository of DONUT-DONationUTile -2024 Solution Challenge Global top 10

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published