1.4 KiB
1.4 KiB
Contributing
...is welcome!
Issue tracking / Repository
From issues to wikis: everything is on GitHub
Architecture
Lemmur is written in Dart using Flutter. To communicate with Lemmy instances lemmy_api_client is used.
State management
ChangeNotifier
+ Provider is used for global state management, 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.
Project structure
(relative to lib/
)
hooks/
: reusable state hookspages/
: fullscreen pages that you navigate tostores/
: global storesutil/
: utilitieswidgets/
: reusable widgets; building blocks for pagesmain.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). Both are enforced by the CI.