Thunder
An open-source, cross-platform Lemmy client built with Flutter
Contributing • Building From Source • Conventions • Related Packages
Hey there! Just wanted to let you know that this repo is currently my personal side project to build something cool while learning about Dart and Flutter.
Contributions to this project are always welcomed, and in fact, even strongly encouraged here! Since I am only able to work on this during my spare time, any contributions from the community is valuable. If you are a developer, feel free to tackle any issues present.
Your passion, contributions, and ideas would be greatly appreciated! Together, let’s make this project shine. 🚀 💻
Releases
Android
If you are on Android, releases are available in the Releases section under the corresponding version. There is also an option to obtain the release through IzzyOnDroid if you are interested.
iOS
If you are on iOS, there is TestFlight available through this link. An alternative is to download the corresponding IPA file in the Releases section and install it through AltStore.
Features
Thunder is currently undergoing active development, and it is possible that not all features have been fully implemented at this stage. Due to this, significant breaking changes may occur between versions. The next section summarizes the features that are currently implemented.
Communities
- Browsing through general (All/Local) feeds, as well as specific communities
- Ability to search for communities that are federated with the current instance
- See a list of subscriptions, and access their community posts and general information
Posts & Comments
- Voting (upvote/downvote) and save actions for posts and comments
- Infinite scrolling for posts and comments
- Ability to create a new post, and reply to posts/comments
Authentication
- Ability to log into multiple instances, and switch between them
Theme & Customization
- Basic customization for the look of posts
- Standard/Compact views
- Toggle full image views or a compacted image view
- Toggling voting and saving actions
- Light, dark, and OLED themes available
Extras
- In-app update notifications for new releases on GitHub
Roadmap
The current focus is to provide a MVP to be able to do basic tasks, including
- Inbox features (replies, mentions, private messages)
- Ability to view your inbox, and be able to mark them as read
- Ability to reply to inbox messages
- Ability to see full context of a given inbox message (navigate to post, or comment for replies and mentions)
- Improvements to accessibility services
- More customizability of post views (compact, normal, expanded, etc.)
Contributing
Contributions are always welcome! To contribute potential features or bug-fixes:
- Fork this repository
- Apply any changes and/or additions based off an existing issue (or create a new issue for the feature/fix you are working on)
- Create a pull request to have your changes reviewed and merged
Building From Source
Installing Flutter and Related Dependencies
Thunder is developed with Flutter, and is built to support both iOS and Android. There may be limited support on other platforms but is not guaranteed at this time (Linux, Windows, MacOS)
To build the app from source, a few steps are required.
- Set up and install Flutter.
- For more information, visit https://docs.flutter.dev/get-started/install.
- Clone this repository and fetch the dependencies using
flutter pub get
- Generate an empty
.env
file. The.env
file holds any credentials. At the time of writing, en empty.env
file with a comment is all that is required. - Run the build script using
dart scripts/build.dart
, which will build both the iOS and Android release versions
Environment File
This is an example of the .env
that can be used for Thunder.
# Sentry Credentials SENTRY_DSN=""
Conventions
While there are no specific conventions that must be followed, do try to follow best practices whenever possible.
Suggestions are always welcome to improve the code quality and architecture of the app!
Related Packages
Thunder uses the following packages and libraries under the hood. This is not an exhaustive list.
Custom Built Libraries
lemmy-dart – Custom Lemmy API library is written in Dart.
Download source code on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.