added contributing file

This commit is contained in:
shilangyu 2020-09-22 01:25:50 +00:00
parent 822bc6bbc6
commit 388ad24a8d
1 changed files with 35 additions and 0 deletions

35
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,35 @@
# Contributing
...is welcome!
## Issue tracking / Repository
From issues to wikis: everything is on [GitHub](https://github.com/krawieck/lemmur)
## Architecture
Lemmur is written in Dart using [Flutter](https://flutter.dev/docs). To communicate with Lemmy instances [lemmy_api_client](https://github.com/krawieck/lemmy_api_client) is used.
### State management
[MobX](https://github.com/mobxjs/mobx.dart) is used for global state management, [flutter_hooks](https://github.com/rrousselGit/flutter_hooks) is used for local (widget-level) state management. `StatefulWidget`s are avoided all together and any state logic reuse is moved to a [custom hook](./lib/hooks).
### Project structure
(relative to `lib/`)
- `hooks/`: reusable state hooks
- `pages/`: fullscreen pages that you navigate to
- `stores/`: MobX global stores
- `util/`: utils
- `widgets/`: reusable widgets; building blocks for pages
- `main.dart`: entrypoint of the app. Sets up the stores, initializes the themes, renders the first page
### Things to keep in mind
- Be aware that Lemmur supports arbitrary Lemmy instances, don't hardcode instance urls
- Remember that a user is not obligated to be logged in, contributed widgets should handle this case
## Linting / Formatting
Everything is formatted with `dartfmt` (no flags) and linted with `dartanalyzer` ([see rules](analysis_options.yaml)). Both are enforced by the CI.