Awesome
Stack
Stack is an Android application that lets you browse stackoverflow.com and other Stack Exchange sites. It is powered by the Stack Exchange API.
Download
<a href="https://play.google.com/store/apps/details?id=me.tylerbwong.stack"><img alt="Get it on Google Play" src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" height=80px /></a>
Development
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
Features
- View questions, answers, and comments with rich Markdown/LaTeX previews
- Browse any Stack Exchange site
- Log in to vote for questions or post new questions, answers, and comments
- Bookmark questions to save for later (Temporarily broken. See #126)
- Search for questions with advanced filter controls
- View other users' profiles
- Material 3 dynamic theming available
- Question/answer deep linking
Subprojects
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
.
License
Copyright (C) 2023 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.