https://github.com/aoiorio/volcano
This is a repository of TODO application called Volcano. It's using VolcanoAPI
https://github.com/aoiorio/volcano
aws aws-lambda dart flutter todoapp todolist volcano-with-todo
Last synced: 6 months ago
JSON representation
This is a repository of TODO application called Volcano. It's using VolcanoAPI
- Host: GitHub
- URL: https://github.com/aoiorio/volcano
- Owner: aoiorio
- License: mit
- Created: 2024-06-01T06:03:12.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-17T05:57:05.000Z (almost 2 years ago)
- Last Synced: 2024-09-17T13:55:58.024Z (almost 2 years ago)
- Topics: aws, aws-lambda, dart, flutter, todoapp, todolist, volcano-with-todo
- Language: Dart
- Homepage: https://apps.apple.com/jp/app/volcano-with-todo/id6657991782
- Size: 103 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## ```π {"Contents"}```
### [```{1: "π«£ Overview"}```](#1--overview-1)
### [```{2: "π½οΈ Methods"}```](#2-οΈ-methods-1)
### [```{3: "π« Thoughts"}```](#3--thoughts-1)
### [π£ "Japanese"](https://github.com/aoiorio/Volcano/blob/main/README_jp.md)
# ```{1: "π«£ Overview"}```

## ```π "What is Volcano"```
**Volcano** is a simple TODO app that can recognize your voices and convert them to texts as a **TODO**.
You can tell your TODO to Volcano like you're speaking with someone.
## ```π§ "Why"```
I usually write down my TODOs on my note every single day.
But I perceived that it's pain in the neck and I will definitely forget something what I'm going to do today.
So I came up with an application idea to manage my TODOs with more comfortable way.
I thought recognizing my voice can be a powerful feature to remember what I was planning to do.
That's the reason of why Volcano was created.
## ```π "Persona"```

## ```π "Features & Durations"```
- π "TODO"
- **Voice Recognizing Feature & Add TODO From Voice Feature** - 2024/06/12 - 06/28
- **Add TODO From Text Feature** - 2024/06/12 - 06/28
- **Playing Voice Feature** - 2024/06/28 - 07/6
- **Mark as accomplished Feature** - 2024/06/28 - 07/6
- **Delete TODO Feature** - 2024/07/7 - 07/14
- **Edit TODO Feature** - 2024/07/7 - 07/14
- **Showing TODO With Each Type Feature** - 2024/06/28 - 07/6
- **Showing Today's TODO Feature** - 2024/07/3 - 07/8
- **Showing Month's TODO Feature** - 2024/06/28 - 07/6
- **Sending Notification every morning Feature (new)** - 2024/08/27 - 08/29
- π₯ "User"
- **Sign In Feature** - 2024/06/02 - 06/11
- **Sign Up Feature** - 2024/06/02 - 06/11
- **Sign Out Feature** - 2024/07/14 - 07/22
- **Deleting User Feature** - 2024/07/14 - 07/22
- **Edit Username Feature** - 2024/07/14 - 07/22
### π» Overall: 2024/05/19 - 2024/08/26 (100 days)
## ```π "Images"```

## ```𫨠"Links"```
- "π¦ Volcano API": [Volcano API](https://github.com/aoiorio/VolcanoAPI)
- "πͺ‘ Slides": [Volcano Slides](https://docs.google.com/presentation/d/1eIEV2Hm08teWd2m_5D9OY7se3-NyqIaro5_hdHCcKiI/edit?usp=sharing)
- "π§³ Requirements Definition Slides": [Volcano Requirements Definition Slides](https://docs.google.com/presentation/d/1VScbl4NEXO8QbhK5rt-C63ebLQKySBvkVg6RB1wOrgI/edit?usp=sharing)
# ```{2: "π½οΈ Methods"}```
## ```πΊ "Technologies"```
### πͺ "Front-End"

### π "Back-End"

### π― "Infrastructure"

"π Folder Structure"
## ```"π Folder Structure"```
```dart
βββ πlib
βββ πcore
βββ errors.dart // for writing original error type (e.g. BackEndError)
βββ πdomain // for creating the base
βββ πentity
βββ πrepository
βββ πusecase
βββ πgen // for storing generated assets by using fluttergen
βββ πinfrastructure // for materializing the methods of repository from domain
βββ πdatasource // for creating methods of getting data from API Endpoints
βββ πauth
βββ πtodo
βββ πtype_color_code
βββ πuser
βββ πdto // for specializing the type of data
βββ πmodel // for the types that users input
βββ πauth
βββ πtodo
βββ πuser
βββ πrepository // for using datasource to materialize reposiotry methods of domain
βββ πpresentation // for creating UI
βββ πcomponent
βββ πglobal
βββ πmodal
βββ πsign_in
βββ πsign_up
βββ πtodo
βββ πimporter
βββ volcano_page_importer.dart
βββ πpage
βββ πauth
βββ πdialogs
βββ πtodo_details
βββ πtutorial
βββ πvolcano
βββ πprovider // for managing data by using riverpod
βββ πback
βββ πauth
βββ πtodo
βββ πtype_color_code
βββ πuser
βββ global_back_providers.dart
βββ πfront
βββ πauth
βββ πnotification
βββ πtodo
βββ πtutorial
βββ πglobal
βββ πroutes
βββ πroutes_model
βββ routes.dart
βββ πsupporter
βββ notification_random_message.dart
βββ πtheme
βββ theme.dart
βββ πusecase // for giving data to presentation layer with repository methods
βββ main.dart
```
## ```π "Flutter Dependencies"```
- π "State Management"
- [flutter_riverpod](https://pub.dev/packages/flutter_riverpod)
- [flutter_hooks](https://pub.dev/packages/flutter_hooks) (for useEffect and useState method)
- [hooks_riverpod](https://pub.dev/packages/hooks_riverpod)
- [riverpod_annotation](https://pub.dev/packages/riverpod_annotation)
- π "Connecting To The API Endpoints"
- [retrofit](https://pub.dev/packages/retrofit)
- [dio](https://pub.dev/packages/dio)
- [http](https://pub.dev/packages/http)
- [fpdart](https://pub.dev/packages/fpdart) (for using Either as a type)
- π "Implementing Authentication Feature"
- [shared_preferences](https://pub.dev/packages/shared_preferences) (for storing JWT token)
- π¦ "Creating Voice To TODO Feature"
- [speech_to_text](https://pub.dev/packages/speech_to_text) (for recognizing voice)
- [record](https://pub.dev/packages/record) (for recording voice)
- [audio_waveforms](https://pub.dev/packages/audio_waveforms) (for displaying audio waves while users are recording)
- [just_audio](https://pub.dev/packages/just_audio) (for playing audio from URL)
- π§ "Implementing Notification Feature"
- [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) (for send notification at fixed time everyday)
- [flutter_app_badger](https://pub.dev/packages/flutter_app_badger) (for removing badge from the app icon)
- π "Transition"
- [go_router](https://pub.dev/packages/go_router)
- [page_transition](https://pub.dev/packages/page_transition) (for making smooth transaction)
- π² "Creating UI"
- [shimmer](https://pub.dev/packages/shimmer) (for providing great UX by using skelton effects)
- [percent_indicator](https://pub.dev/packages/percent_indicator) (for displaying percentage from number for TODO goals)
- [smooth_page_indicator](https://pub.dev/packages/smooth_page_indicator) (for creating dots under TODO goals cards)
- [gap](https://pub.dev/packages/gap) (for making some gaps between widgets)
- [flutter_spinkit](https://pub.dev/packages/flutter_spinkit) (for displaying hourglass when Volcano is loading)
- [fluttertoast](https://pub.dev/packages/fluttertoast) (for displaying whether it's successful or not)
- [modal_bottom_sheet](https://pub.dev/packages/modal_bottom_sheet) (for making UserModal)
- π "Others"
- [flutter_gen](https://pub.dev/packages/flutter_gen) (for controlling images and fonts)
- [flutter_svg](https://pub.dev/packages/flutter_svg) (for importing svg)
- [url_launcher](https://pub.dev/packages/url_launcher) (for launching privacy policy and terms of service docs)
- [flutter_native_timezone](https://pub.dev/packages/flutter_native_timezone) (for setting local timezone)
- [pedantic_mono](https://pub.dev/packages/pedantic_mono) (for analyzing my codes)
- [flutter_lints](https://pub.dev/packages/flutter_lints)
**And more! If you want to check all of them, please go to my [pubspec.yaml](https://github.com/aoiorio/Volcano/blob/main/pubspec.yaml#L30-L82)**
## ```πΈ "Method's Pictures"```
| "As an User"| "As a Developer"|
|----|----|
|
|
|
## ```π§ "ERD"```
# ```{3: "π« Thoughts"}```
## ```π "My Favorites"```
### 1. π **Saving Hex Color Code In Database**
- Reason
- I wanted to create a great app to recognize types directly through my eyes
- Difficult Points
- Converting color codes to Flutter's color codes
- Generating RBG with range for color I like
### 2. π Displaying Today's TODOs
- Reason
- When I open Volcano in the morning, I can see what I have to do today and achieve it without forgetting something
- Difficult Points
- I was torn between splitting the API endpoints of getting Today's TODO and Month's TODO or not (Finally I decided to combine them together)
### 3. ποΈ Using Onion Architecture
- Reason
- I usually write spaghetti codes so I was craving for writing clean and updatable codes by myself
- Difficult Points
- I've started to learn about Onion Architecture without any knowledge of it. So I struggled with how I create folder structure
## ```π€ "What I've got"```
### "I felt like I was working with my teammates even I've developed this by my own"
- I used architecture like I was creating an app with someone
- When I merge my PR to a branch, I always send "LGTM" photo on my issue or PR pages and it seemed like I was reviewed from my boss
- I also tried to separate URLs of Amazon API Gateway such as prod and dev like the actual projects do in companies
```python
{
"status_code": 500,
"message": "Thank you."
}
```
