Skip to content

Bumblebee202111/doubean-public

Repository files navigation

doubean

An unofficial Douban app mainly used for browsing the Groups section. (豆瓣非官方app,主要用于小组浏览。)

The development of this app is resumed to meet the requests of the friend who filed the first issue! While we will only add new features for the limited number of existing users, this project is also going to be used as my playground for fashionable libraries/coding styles such as Jetpack Compose. This brings tons of migration tasks, and also means that old libraries and new libraries are currently mixed together.

Note I am an inexperienced Android beginner and the only developer of it. Occasional crashes may happen, UI design may be incomplete and features you need may be missing.

It has been inactive for 8 months, as:

  • Reinforced by the org/mods, hilarious remarks can be found everywhere
  • There are few other alternatives for me to refer to
  • Group theming was a mess

Very important changes starting from 0.5.0:

  • Repo name: doubean -> doubean-public
    • New code will only be pushed into the private doubean
  • New package name: com.github.bumblebee202111.doubean

Introduction

Functionality

The app is composed of 4 main screens

HomeFragment (new)

  • Following

ImageFragment (new)

  • Image view and save

GroupFragment

Groups Home
  • Favorite groups and tabs
Group Detail
  • Group information
  • Group tabs
Post Detail
  • Post content
  • Post comments

ProfileFragment (raw)

  • Login status
Groups Search
  • Search groups

NotificationFragment

  • Group post notifications (the feature is broken now)

Screenshots

phone_groups phone_group_detail phone_group_search phone_post_detail

### Getting Started

Using this app

  • Supported Android versions: 8.1 - 14
  • Sometimes you need to manually clear app data when I forget to handle ROOM database schema change
  • Feel free to file issues

Open-source?

To not get this project/myself into trouble, the update of the source code in the public repo will be suspended. However, the latest release is always available.

Who is it for?

  • Me and other developers who are learning Android, Kotlin and version control
  • Me and other users who want easier access to Douban groups module

Your do's and don'ts

  • Please use it only for personal learning purposes.
  • Please don't share it on other websites/apps without permission.

Features

It not only implements the very basic features of Douban app, but also has its own features.

Design Aspect Choice(s)
Language Kotlin
Libraries Jetpack and authoritative third party libraries
Architecture MVVM
Design philosophy Android Jetpack
  • Partial offline caching support
  • Ad-free, lite (~4MB)
  • Partially support URL deep links
  • Rooted users can use login session of Douban app
  • Partial support for viewing content in Douban WebView optimized for mobile reading in case of need
  • Basic use of MD2/3 (may not get along well during migration)
  • Recommended post notifications (maybe currently broken)

Libraries Used

Plans

Incoming features, bug fixes, libraries to use and environment changes (roughly in chronological order)

To-dos for current release (0.5.9)

To-dos for next release (0.5.10)

Future plans

  • Gradually revert naming conventions to those of Douban

  • Replace content of the recommended groups area with recommended posts

    • Support pagination & add favorite tabs later
  • Gracefully remove Fragments: Stop calling Fragment methods other than onCreateView

  • No RecyclerViews

  • Gradual migrations:

    • From MD2 / custom design to MD3
    • From View and data binding to Jetpack Compose
      • Exceptions: WebView
    • From Navigation Fragment to Navigation Compose (take action when next stable version is available)
      • From NavHostFragment to ComposableNavHostFragment
  • navigation-fragment-compose

  • Home - Following

    • More card types
    • Pagination
  • Group notifications

    • Group Tab: Untighten tab notification settings from group model
  • TopAppBar and Edge-to-Edge

  • Bring back load state visualization which was removed during various types of migrations

    • Paging 3 refresh, loading status ...
  • Follow/favorite/save/subscribe

    • Local favorites needs some kind of rework since following groups (official feature) is possible now although not implemented
    • Save topics
    • Follow groups
    • Pin followed groups
    • Add corresponding item action
  • Group Detail: Collapse on entrance for the followed group/tab

  • Date & time: Yesterday

  • Allow expanding group description w/ SpannableString

  • Bring back basic support for dark mode & landscape experience

  • Topics sort by

    • "Last updated" -> "active"
    • Add "New Top"
  • Shared element

  • Lazylist problems

    • Restoring scroll position is problematic
    • Topic content WebView problems
  • Group tab: Track read

  • Fix broken topics feed

    • Find why fail
    • “每次动态更新请求的帖子总数限制” -> frequency (0..1)
  • Use the new nullable "edit_time" property of network posts

  • Search

    • Search group/tab posts (in-group)
    • Search posts of all groups (global)
  • Better model layering

  • Distinguishen-DB/en-US

  • More follow/favorite/save/subscribe

    • Save comments
    • Subscribe topics
    • Sync custom lists by maintaining a fake private note (日记) which holds the data
    • Custom feeds like Reddit
  • Group Detail: Group/tab/post shortcuts

  • Hide officially-marked unfriendly content by default

  • Support blocking unfriendly content

  • NetworkManager

  • Widgets

  • [Books] Add T250

  • [Movies] Add T250

  • More features of books & movies

  • Group Detail: For post items, optimize tag display, e.g., assign color to each tag mapped from name

  • Lists: Reddit-like item expand/collapse

  • Real login (which seems impossible)

  • Group Detail: WebView for group

  • Test

Non-Todos

  • Heavy use of Material Design

References

Utilities