Skip to content

Latest commit

 

History

History
220 lines (188 loc) · 8.49 KB

README.md

File metadata and controls

220 lines (188 loc) · 8.49 KB

📌 32_EasyPeasy (Team AH-HA)

🖐 Introduction

Dark data is data that is stored but whose content or value is not verified.

According to Veritas, dark data produced about 5.8 million tons of carbon dioxide in 2020, the same amount as when cars traveled around the Earth 575,000 times.

Would you like to save the Earth by reducing dark data with just lifting a finger?

The AH-HA team proposes EasyPeasy, a service that can protect the environment by reducing dark data in our daily lives and make it a lifestyle.

Presentation Slides (Kor) / apk file download


🔨 Tech Stack

Frontend Backend (API)
Android Kotlin Nestjs GoogleCloud AWS Firebase Docker MySQL AmazonDynamoDB Sentry

💚 Android

🔖Main Functions

Sign up with Google Onboarding 1 Onboarding 2 Onboarding 3
Main It's all grown up! Character History Exchange Plants
Create my Character 1 Create my Character 2 Change my character
Settings Notification for deleting email

💻 Android Tech Stack

Architecture MVVM
Jetpack Components LifeCycle (ViewModel, LiveData, LifeCycleObserver), DataBinding, Jetpack Navigation Component, viewPager2
library Standard Library, Glide, Material Design
Network OkHttp, Retrofit2, coroutine
Strategy Git Flow
Other Tool Notion, Slack

🗂 Package

* 📦example
      └─ahha_android
          ├─📂data
	  │  ├─📂api
	  │  ├─📂model
	  │  │  ├─📂request
	  │  │  └─📂response
          │  ├─📂response
          │  ├─📂service
          │  ├─📂type
          │  └─📂vo
          ├─📂ui
          │  ├─📂main
          │  │  └─📂adapter
	  │  ├─📂setting
          │  ├─📂sign
          │  │  └─📂adapter
          │  └─📂viewModel
          └─📂util



💙 Backend

✨ The technology used

  • Google OAuth2.0
    Used to obtain user authentication information.
  • Google Gmail API
    Used to get real-time mail count of users.
  • Google Cloud Platform PUB/SUB
    Whenever there is an event in the user's mailbox, it is used to collect data by communicating asynchronously.
  • Firebase Cloud Messaging
    Used to send push notifications to users.
  • DynamoDB
    Used to store users who receive push notifications. Compared to using RDS alone, we got a speedup of 39%. (Based on 50000 dummy data)
  • Sentry / Slack
    Used for real-time bug tracking.

🛠️ Dev Server

http://3.35.131.195/api/v1

📖 API Documentation

http://3.35.131.195/api/v1/docs/

🌱 Getting Started

node: 14.16.0
npm: 6.14.11

1. Cloning

$ git clone https://github.com/ah-ha-dev/ah-ha-api-server.git
$ cd ah-ha-api-server
$ npm install

2. Setting dotenv at Root Directory

JWT_SECRET=<YOUR_JWT_SECRET>
GOOGLE_CLIENT_ID=<YOUR_GOOGLE_CLIENT_ID>
GOOGLE_CLIENT_SECRET=<YOUR_GOOGLE_CLIENT_SECRET>
GOOGLE_REDIRECT_URI=<YOUR_GOOGLE_REDIRECT_URI>
FIREBASE_PROJECT_ID=<YOUR_FIREBASE_PROJECT_ID>
FIREBASE_PRIVATE_KEY=<YOUR_FIREBASE_PRIVATE_KEY>
FIREBASE_CLIENT_EMAIL=<YOUR_FIREBASE_CLIENT_EMAIL>
GOOGLE_CREDENTIALS_TYPE=<YOUR_GOOGLE_CREDENTIALS_TYPE>
GOOGLE_CREDENTIALS_PRIVATE_KEY=<YOUR_GOOGLE_CREDENTIALS_PRIVATE_KEY>
GOOGLE_CREDENTIALS_CLIENT_EMAIL=<YOUR_GOOGLE_CREDENTIALS_CLIENT_EMAIL>
GOOGLE_CREDENTIALS_CLIEND_ID=<YOUR_GOOGLE_CREDENTIALS_CLIEND_ID>
GOOGLE_PROJECT_ID=<YOUR_GOOGLE_PROJECT_ID>
GOOGLE_PUBSUB_TOPIC_NAME=<YOUR_GOOGLE_PUBSUB_TOPIC_NAME>
GOOGLE_PUBSUB_SUBSCRIPTION_NAME=<YOUR_GOOGLE_PUBSUB_SUBSCRIPTION_NAME>
AWS_ACCESS_ID=<YOUR_AWS_ACCESS_ID>
AWS_SECRET_ACCESS_KEY=<YOUR_AWS_SECRET_ACCESS_KEY>
AWS_REGION=<YOUR_AWS_REGION>
SENTRY_DSN=<YOUR_SENTRY_DSN>
SLACK_WEBHOOK=<YOUR_SLACK_WEBHOOK>

3. Run the MySQL with Docker

$ docker-compose -f "docker-compose.yml" up -d --build                                   

4. Start Local Server

$ npm run start                         

🌸 Architecture

Server Architecture

image

CICD Architecture

image

MySQL ERD

image

🌈 Contributors

Sohee Lee Heewon Kang Hyuna Kim Sunwoo Ho
@heehee.dsgn @ymcho24 @akimcse @hocaron
Designer Android Android Backend