Stack is an Android application that lets you browse stackoverflow.com and other Stack Exchange sites. It is powered by the Stack Exchange API.
The goal of this project is to provide examples for the latest Android libraries and tools. A few noteworthy examples include:
- Kotlin Coroutines for asynchronous code
- Dagger Hilt for dependency injection
- Jetpack Compose for declarative UI code written in Kotlin (Slowly being introduced)
- Room for local data persistence
- Markwon for rendering markdown
- View questions, answers, and comments with rich Markdown previews
- Switch to any Stack Exchange site
- Log in to vote for questions or post new questions and answers (Saving drafts supported)
- Bookmark questions to save for later (Supports offline)
- Search for questions with advanced filter controls
- View other users' profiles
- Dark mode
- Question deep linking
Here you can also find a few useful Gradle modules as well:
- buildSrc - A Gradle module for common build logic with a custom plugin example.
- compose-markdown - A Jetpack Compose Text component that can render markdown content using intellij-markdown for parsing.
- compose-preference - A set of Jetpack Compose Preference components.
- dynamic-list-adapter - An abstraction around
RecyclerView
built onListAdapter
for asynchronous list diffing. - dynamic-list-adapter-viewbinding - View Binding support for
DynamicListAdapter
.
Copyright (C) 2020 Tyler Wong
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses.