dttmm / BirdMeal

이더리움 기반 결식아동 후원 어플리케이션

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

README.md

Untitled

BirdMeal

결식아동을 위한 Ethereum 기반 후원 커머스 APP

프로젝트 소개

어미새가 아기새[Bird]에게 먹이[Meal]를 주다.

결식아동 급식비 횡령, 적은 사용처, 적은 사용금액 문제를 해결하기 위해 시작된 프로젝트 입니다.

블록체인 기술을 활용하여 투명한 후원금 관리가 가능합니다.

자체적으로 커머스를 만들어 다양한 사용처를 제공합니다.

주단위로 지원금을 지급하며 주 10만원의 넉넉한 금액을 제공합니다.

NFT를 활용하여 결식아동과 기부자의 소통창구를 마련합니다.

주요 기능

판매자

지갑

  • 메타마스크를 통해 지갑을 연동할 수 있습니다.

상품 관리

  • 상품을 등록/수정/삭제 할 수 있다.
  • 등록한 상품의 배송 정보를 입력할 수 있습니다.

일반 사용자

지갑

  • 이더리움 기반 지갑을 생성할 수 있습니다.
  • 개인키를 통해 지갑을 불러올 수 있습니다.

토큰

  • ELN 토큰을 결제하여 충전할 수 있습니다.
  • NFC 쿠폰 태깅을 통해 토큰을 충전할 수 있습니다.

기부

  • 기부를 할 수 있습니다.
  • 전체 기부 내역과 아이들이 사용한 기부금 내역을 볼 수 있습니다.

마켓

  • 마켓에서 물건을 구매할 수 있습니다.
  • 장바구니에 물건을 담고 수량을 조절할 수 있습니다.
  • 토큰을 통해 결제를 할 수 있습니다.
  • 물건을 구매하면 3%만큼 기부를 할 수 있습니다.
  • 구매 확정을 하면 컨트랙트에서 판매자에게 토큰을 전송하게 됩니다.

감사 카드

  • 한 달에 10만원 이상 기부할 시 결식아동이 제작한 감사카드를 NFT로 민팅하여 받을 수 있습니다.

결식아동

결식아동 인증

  • 결식아동 카드 OCR 인증을 통해 결식아동임을 인증할 수 있습니다.

기부금 수령

  • 일주일에 1번씩 전체 기부금에서 10만 ELN 토큰을 받을 수 있습니다.

마켓

  • 일반 사용자와 똑같이 토큰을 이용하여 물건을 구매할 수 있습니다.

감사 카드

  • 캔버스를 이용하여 감사카드를 제작할 수 있습니다.

개발 화면

  • 로그인 화면

    로그인.gif

  • 지갑 생성 화면

    지갑생성.gif

  • 엘레나 토큰 충전 화면(NFC 태깅)

    토큰충전_NFC태깅.gif

  • 엘레나 토큰 충전 화면(PG사 결제)

    토큰충전.gif

  • 장바구니 화면(담기 / 수정 / 삭제)

    장바구니.gif

  • 상품 주문 화면

    상품주문.gif

  • 기부 화면

    기부.gif

  • 포토카드 NFT 생성 화면

    포토카드NFT생성.gif

  • 포토카드 NFT 수령 화면

    포토카드NFT받기.gif

  • 판매자 홈 화면

Untitled

  • 판매자 내 상품 보기

Untitled

  • 판매자 주문 목록

Untitled

  • 판매자 주문 상세보기

Untitled

프로젝트 설계

ERD

회원, 마켓,기부 기능이 유기적으로 연결되어있고,

그를 효율적으로 활용하기 위해 ERD를 작성했습니다.

Untitled

사용 기술

프로젝트에서 사용된 기술들입니다.

Untitled

시스템 구조도

Spring boot를 활용해 서버를 구축하고,

Besu를 활용해 프라이빗 블록체인 네트워크를 구축하였습니다.

판매자는 상품 등록을 하면, 상품 컨트랙트를 배포하게 되고

결식 아동, 일반 사용자가 이용하는 기부, 마켓, NFT 관련 기능들은

모두 스마트 컨트랙트와 상호작용 하게 되고, 모든 기록이 남게 됩니다.

블록체인 네트워크에서 정보를 불러오는 속도를 개선하기 위해

모든 히스토리는 백엔드에 동일하게 저장하여

빠르게 히스토리를 불러오도록 처리하였습니다.

Untitled

기타

프로젝트 구성 요소

Android 구성 요소

Package Version Comment
Dagger Hilt 2.40.5 의존성 주입 라이브러리
Retrofit 2.9.0 HTTP 통신 라이브러리
Coroutines 1.5.1 비동기 처리 라이브러리
Coroutine Flow 0.27.2 비동기 처리 데이터 스트림 라이브러리
Navigation 2.3.5 화면 이동 라이브러리
web3.j 4.8.7 스마트 컨트랙트 연결을 위해 사용
Glide 4.11.0 이미지 로딩 라이브러리
Room 2.3.0 SQLite 로컬 DB 라이브러리
BootPay + 최신버전 PG사 테스트 결제 오픈 API

Frontend 구성 요소

Package Version Comment
vue-router 3.2.0 요청 URL에 따라 브라우저에서 돔을 변경
pinia 2.0.21 전역 상태관리를 위해 사용
vite 3.0.9
axios 0.27.2 REST API 서버로부터 데이터를 받아오기 위해 사용
vuetify 3.0.0 UI 구성을 위해 사용
web3.js 1.8.0 스마트 컨트랙트 연결을 위해 사용
vue3-google-login 2.0.12 구글 Oauth를 위해 사용
MetaMask - 지갑구현을 위해 사용

Backend 구성 요소

기술 스택 Version Comment
OpenJDK 11 Java vendor 사용
SpringBoot 2.7.3 Rest API 웹 애플리케이션 개발
Gradle 7.5 프로젝트를 빌드하고 라이브러리를 관리 도구
MySQL 8.0.30 DB
JPA 2.7.3 서버와 DB의 연동을 위해 사용
JWT - 로그인 유저 인증을 위해 토큰 사용
Spring Security 2.7.3 손쉬운 보안 관리를 위해 사용
Swagger 2.9.2 API 문서화를 위해 사용
Ubuntu 20.04 LTS 서비스 제공을 위해 리눅스 서버 구축
Docker latest 컨테이너화 된 애플리케이션 관리
Jenkins latest 자동화 배포 및 빌드
Nginx latest Vue 클라이언트 웹 서버 사용

Smart Contract 구성 요소

solidity Version Comment
solidity 0.7.0 <0.9.0 스마트컨트랙트 작성을 위해 사용
web3j 1.4.1 래퍼클래스 작성을 위해 사용
ERC20 openzeppelin 오픈소스 활용
ERC721 openzeppelin 오픈소스 활용

팀원 소개

🍀 BirdMeal 팀

  • 최시령 - Infra, Web
  • 강태웅 - Android
  • 김지수 - Backend, Web
  • 배혜연 - Backend, Android
  • 심세현 - Android
  • 이건희 - SmartContract, Web

📆 개발 일정

개발일정.png

About

이더리움 기반 결식아동 후원 어플리케이션


Languages

Language:Kotlin 56.4%Language:Java 28.9%Language:Vue 9.3%Language:JavaScript 3.2%Language:HTML 1.2%Language:Solidity 1.1%