Project to participate in 2023 google solution challenge
Chanho Park | Keo Kim | Boyoung Kim | SeoKyung Baek |
---|---|---|---|
- Lead - Backend |
- Frontend | - Frontend | - AI |
The lack of physical activity among modern people has been a serious problem in many nations. The wonder app tries to fix this problem with our unique approach to walking exercises.
We added some gamification feature to help users enjoy walking in their daily lives. The user is encouraged to walk on daily basis, through various motivations and game-like mechanics we provide.
In addition, we connect local volunteering organizations with users so that they can participate in various volunteer activities that involves some 'walking' in the progress. For example, there are volunteer activities to take a walk with dogs at a dog shelter or lunch box delivery services for the elderly living alone. This way, walking is not just a daily experience, but also a way to help others and contribute to society.
- Java 11
- Spring, Spring boot
- Spring Web MVC, Spring Security
- Spring Data JPA, QueryDsl
- MySQL
- Docker, Docker-compose
- GCP
- Spring server application is deployed through Docker and Docker Compose.
- First, I created a Dockerfile to build an image of my application.
- Then, I built an image of my application and pushed it to the DockerHub.
- I also created a docker-compose.yml file with information about my spring application from the hub and Nginx and certbot. related issue
- I used Nginx to implement the reverse proxy, and certbot for the https protocol.
- Finally, I can start my app with Docker compose by running a command like "docker-compose up". This starts containers for the app.
- Dart 2.19.2
- Flutter 3.7.5
- Flutter ScreenUtil 5.7.0
- Get 4.6.5
- Dio 5.0.3
- Google Maps Flutter 2.2.5
- Google Login 5.5.3
app
├── common
│ ├── util
│ └── values
│ └── styles
├── data
│ ├── enums
│ ├── errors
│ ├── models
│ └── providers
├── modules
│ ├── event
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── home
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── login
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── map
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── map_detail
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── register
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── reservation_list
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── splash
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ ├── walk_track
│ │ ├── bindings
│ │ ├── controllers
│ │ └── views
│ └── widgets
└── routes
- We chose MVC pattern as an architecture.
- Every feature is divided into modules, and each module has its own controller, view, and binding.
- The data layer is divided into models and providers.
- The models are used to store data, and the providers are used to communicate with the backend.
- GetX is used as a state management and navigation tool.
- In exchange for less flexible page transitions, GetX allowed us to quickly implement the app's core features.
- We used the Google Maps Flutter plugin to implement the map feature. We also used the Google Login plugin to implement the login feature.
Reward system based on image classification
- Users can find these stickers at the end of their walk.
- When they take their phone cameras upon the sticker, our AI model recognizes it and uploads it on our app.
- By using mobilnet_v2 model from tensorflow hub it is light, and can solve privacy issues of QR code.
- Since the sticker they find is directly uploaded online, users can find fun accomplishing every walk.
- tensorflow
- mobilenet_v2 model from tensorflow hub