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
Frontend | Backend (API) |
---|---|
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 |
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 |
* ๐ฆexample
โโahha_android
โโ๐data
โ โโ๐api
โ โโ๐model
โ โ โโ๐request
โ โ โโ๐response
โ โโ๐response
โ โโ๐service
โ โโ๐type
โ โโ๐vo
โโ๐ui
โ โโ๐main
โ โ โโ๐adapter
โ โโ๐setting
โ โโ๐sign
โ โ โโ๐adapter
โ โโ๐viewModel
โโ๐util
- 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.
http://3.35.131.195/api/v1/docs/
node: 14.16.0
npm: 6.14.11
$ git clone https://github.com/ah-ha-dev/ah-ha-api-server.git
$ cd ah-ha-api-server
$ npm install
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>
$ docker-compose -f "docker-compose.yml" up -d --build
$ npm run start
Sohee Lee | Heewon Kang | Hyuna Kim | Sunwoo Ho |
---|---|---|---|
@heehee.dsgn | @ymcho24 | @akimcse | @hocaron |
Designer | Android | Android | Backend |