Teller
Android library that makes your apps faster.
Teller facilitates the downloading, saving, and reading of the cached data of your app. Keep your user's data fresh and remove those annoying loading screens!
Read the official announcement of Teller to learn more about what it does and why to use it.
iOS developer? Check out the iOS version of Teller.
Announcement - version 1.0
Version 1.0 has been announced and is in development. Check out the issue to learn more. The pre-1.0 code will be in maintenance mode until v1.0 is complete. Pre-1.0 is used by myself in production apps today, but you have been warned that there will more then likely be large breaking changes when 1.0 comes out.
What is Teller?
The data used in your mobile app: user profiles, a collection of photos, list of friends, etc. all have state. Your data is in 1 of many different states:
- Being fetched for the first time (if it comes from an async network call).
- Data has been fetched before.
- Data has been fetched before, but is empty.
- Data has been fetched before but it's too old. It should be updated to show the user fresh data in the app.
Determining what state your data is in, keeping it up-to-date, and displaying this information to the user in the UI is a big pain. That is where Teller comes in. All you need to do is show Teller how your app's cached data is saved, queried, and fetched and Teller facilities everything else for you.
Teller will query your cached data, parse the cache to determine it's state, fetch fresh data if the cache is too old, and deliver the results to listeners so you can update the UI to your users.
Are you building an offline-first mobile app?
Teller is designed for developers building offline-first mobile apps. If you want to build fast apps without loading screens, check out another great Android library, Wendy-Android (there is an iOS version too). Wendy is designed to sync your device's cached data with a remote API. Think of it like this: Teller is really good at GET calls for your network API, Wendy is really good at PUT, POST, DELETE network API calls. Teller pulls data, Wendy pushes data.
Why use Teller?
The use of a cache in your Android app delivers a better app experience where you can...
- Remove annoying loading screens from your app.
- Not worry about your user having a spotty Internet connection.
- Allow your users to complete tasks in your app, faster.
- Teller has performance improvements built-in to save your user's battery life.
As app developers, we all understand that the fetching, saving, loading, and maintaining of cache data is a pain. When something is a pain to do, we often ignore that task and move on with building our app.
However, with Teller this pain goes away. By using Teller you will get the benefits of using a cache while not having to maintain that cache.
Here are some more benefits of Teller:
- Small - The only dependency at this time is RxJava2 (this issue is working to make it optional)
- Built in Kotlin, for Kotlin
- Not opinionated. Use any storage method you wish
- Paging just works
- Full test suite, full documentation
What are you waiting for? Let's install Teller!
Documentation
The very detailed documentation for Teller can be found here. Go on, check them out!
Author
- Levi Bostian - GitHub, Twitter, Website/blog
Contribute
Do you think Teller is cool? Want to help make it more cool? Great! We can use your help.
Open source isn't just writing code. Teller could use your help with any of the following:
- Finding (and reporting!) bugs.
- New feature suggestions.
- Answering questions on issues.
- Documentation improvements.
- Reviewing pull requests.
- Helping to manage issue priorities.
- Fixing bugs/new features.
The Teller community is a very positive one, and the maintainers are committed to keeping things awesome. Like in over 230,000+ other communities, always assume positive intent; even if a comment sounds mean-spirited, give the person the benefit of the doubt.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.