A template combining some best practices & tools for developing a Flutter application.
10xyour development productivity20xless time spent on bugs30xyour project setup speed and40xyour skills in detecting10xbullshit 😜
- initially only platform
macosenabled - enabling more platforms is explained here - made for VSCode - adding support for other editors such as Android Studio should be just one Google search away - see this link
- Less important files & folders hidden by default
- Meaningful commit messages
- (coming soon) - Automatic versioning &
CHANGELOG.mdgeneration
Note:
Detailed breakdown of a added repository features can be found in the Features Breakdown section.
Tip:
If you fork this repo instead of just cloning it, you benefit from future updates such as updated package versions or improved automations.
- Clone / Fork the repository
- Run
pnpm run iin the root directory of the project* - Run
pnpm run setupin the root directory of the project*
*Questions you may ask yourself:
-
What is
pnpm?pnpmis a package manager that works likenpmbut is faster & more reliable.
Install it with:npm i -g pnpm -
I do not see a
package.jsonfile. Why?The
package.jsonfile is only used for project setup and automation and thus is hidden as described here.
Hidden Files & Folders
Less important files & folders are hidden using "files.exclude" from projects
.vscode/settings.json workspace settings.
- keeps project clean and avoids cluttering
- feel free to change it to your needs
Tip:
If you install the VSCode extensionexplorer-excludeyou can toggle excluded files & folders off and on again.
Just use the command palette (CMD + SHIFT + P) and search forexcludeand select this command:
ExplorerExclude: Toggle Visibility
Uses Husky to enforce a specific commit message format. Docs on the format are defined in the repository's GIT.md file.
- using npm package:
commitlint - ensures consistent format across all commits
- required for semantic-release package to do its magic
Uses
semantic-release to
automatically create new versions of the project based on the commit messages.
It parses all commits since the last version tag and determines the next
version number based on the severity of the commits.
Also generates a CHANGELOG.md file based on the commit messages.
- no worries about versioning
- automatic
CHANGELOG.mdgeneration - automatic
git tagcreation - works because of meaningful commit messages
-
(more coming soon)
You can add more platforms by running
# adds web & ios support to the project
flutter create --platforms=web,ios .
# Available Platforms:
# [macos, ios, android, linux, windows, web]in the root directory of the project. Do not worry about your prior code changes, they are left untouched - the project will not be replaced.
- add documentation for strings and build runner
- add semantic-release feature
- todo add recommended plugins (exclude)
- add fluseo docs