dwyl / dwyl/flutter-todo-list-tutorial
Why? What? Who? How?
- Dominant language
- Dart
- Stars
- 109
- Forks
- 17
- PR merge metrics
- No merged PRs in 30d
Description
## Why?
We need a way of helping people **learn `Flutter`** the **_right_ way** as **_fast_** as **possible**.
The "right way" to build _anything_ is to follow best practices for both architecture and reliability.
If you are **`new`** to a particular language/framework simply _search_ for them:
e.g: [google.com/search?q=**flutter**+**best**+**practices**](https://www.google.com/search?q=flutter+best+practices)
For which the _many_ relevant results: (_we should summarise these **`before`** building the Todo List_)
+ Official best practices: https://flutter.dev/docs/perf/rendering/best-practices
+ Gavin Doughtie - Architecting the Reactive Flutter App: http://youtu.be/n_5JULTrstU [28:43]
+ Keep it Simple, State: Architecture for Flutter Apps: https://youtu.be/zKXz3pUkw9A [28:59]
+ Effective code in your Flutter app from the beginning: https://medium.com/flutter-community/effective-code-in-your-flutter-app-from-the-beginning-e597444e1273
> We know from our experience of building software that Apps without _tests_ fall apart very quickly.
(_if you are totally **`new`** to **software engineering** in a **team**, you can be excused for not knowing that **TDD** is **essential** to the success of Apps built by multiple people ..._)
That's why we wrote the [github.com/dwyl/**learn-tdd**](https://github.com/dwyl/learn-tdd) tutorial. So it's _easy_ for _everyone_ to learn.
We wrote the [github.com/dwyl/**javascript**-**todo**-**list**-**tutorial**](https://github.com/dwyl/javascript-todo-list-tutorial) to help people _practice_ TDD while building a real-world App. Now there's _really no excuse_ not to follow TDD.
There are _already **several**_ good examples of Flutter apps: https://github.com/dwyl/learn-flutter/issues/19
If we simply _copy_ one of those Todo List examples without adding any instructions or following best practices we will have _failed_ to add any _value_. There's no point
What does _not_ yet exist is a tutorial that builds an app from scratch following ***best practices*** with a full test suite and ***documentation*** of all the steps and functions.
Compare and contrast the following two Phoenix Chat examples:
**a**. https://github.com/chrismccord/phoenix_chat_example (_the "official" example_)
**b**. https://github.com/dwyl/phoenix-chat-example (_the @dwyl step-by-step example/tutorial_)
Which one would you rather learn from as a _complete_ beginner?
> **Note**: this is not meant as a "criticism" of Chris, he is very busy making other [awesome things](https://github.com/phoenixframework/phoenix_live_view).
> It's just to point out that there is a _huge_ gap between a _basic_ example and a _comprehensive_ one.
## What?
A step-by-step example/tutorial showing people how to build a Todo List App in Flutter
following the best practices:
+ "**_Documentation_ Driven Development**" https://opensource.com/article/17/8/doc-driven-development
+ "**_Test_ Driven Development**"
+ Whichever **architecture** is most **maintainable** one. (_suggestions as comments below_)
## Who?
Anyone @dwyl who wants to learn Flutter can _contribute_ to the example/tutorial provided they understand that we want it to represent the _best_ possible Flutter example _possible_.
We are writing the example for anyone `else` in the wider development community who wants to learn Flutter and build their own app(s).
## How?
This is a good _starting_ point for code inspiration:
https://github.com/brianegan/flutter_architecture_samples/tree/master/redux
But we want to write a _comprehensive_ step-by-step guide.
# Todo: Build a TodoMVC Clone in Flutter
This is what we need to do for this repository to be considered "done":
+ [x] Read and _follow_ all steps in the JavaScript Todo List Tutorial: [dwyl/**javascript**-todo-list-tutorial](https://github.com/dwyl/javascript-todo-list-tutorial)
> Only by _fully_ understanding the flow of Test Driven Development (TDD) can we build a tutorial that follows best practices.
+ [x] Read, understand and _summarise_ how to do TDD in Dart/Flutter: #1
+ [x] Ensure that the "setup" instructions in [github.com/dwyl/**learn-flutter**](https://github.com/dwyl/learn-flutter) are _complete_ including a "trouble-shooting" section for people who get stuck. We don't want people stumbling at the [first hurdle](https://idioms.thefreedictionary.com/fall+at+the+first+hurdle)
+ [ ] Build a Todo List Application that implements _all_ of the features described in the TodoMVC specification. see: https://github.com/dwyl/javascript-todo-list-tutorial#requirements
+ [ ] Split the tutorial into as many sections (_markdown files_) as needed and
+ [ ] include "**previous**" and "**next**" links at the bottom of each file.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.