An open API service indexing awesome lists of open source software.

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

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"

### πŸ«‘ "Design"




"πŸ“‚ 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



Buy Me A Coffee



```python
{
"status_code": 500,
"message": "Thank you."
}
```