23 January, 2022

Wisecards Android App

Last year in 2021 I re-continued to learn Chinese. I still use my Android Flashcard App, which is about 14 years in development now. While using it, the urge for some improvement. Much time is spent keeping up-to-date with changes in Android Development when coming back to a pet-project. The latest update was in 2018 and a year later I 'finished' migrating the code from Java to Kotlin and changed all database code from directly using Cursor to Room. The migration went well but using Room for all database access was not a great idea because some parts of the App become too slow for my taste. Some Room usage had to be rolled back, that was the time when I made a break. It still had no new feature, nothing to publish.

Now it's in a state where I can add new experimental features:

Wisecards Android App - Daily usage
Daily usage stats.
Wisecards Android App - Review Reminder
Review reminder.

Work in Progress

Here is a temporary and incomplete list of open tasks.

Android UI
  • Prepare public release of version 2.0
    • Show title for daily activity graph
    • Show title for daily expired-cards graph
    • Show a summary of the current day
      • How much time spent today
      • How many card answered today
      • How many distinct card answered today.
  • Add synchronization to a server.
    • Add client for accessing Wisecards Web-API.
  • Add configuration for 15min, 30min 45min, 1h, 2h
  • Reorganize the home-screen.
    • Add bottom-app-bar
Wisecards Web-API
  • Endpoint to update client.
  • Differentiate between admin-client and public-client and admin-user and public-user!
  • Test OAuth2 password flow.
  • Add OAuth2 redirect-url flow.
  • Extend OpenIddict Application with own fields
  • Endpoint for decks
    • Add deck
      • Validate values
    • Update deck
    • Delete deck
    • Undelete deck
  • Endpoint for cards
    • Add card
    • Update card
    • Delete card
    • Undelete card
  • Endpoint for groups
    • Add group
    • Update group
    • Delete group
    • Undelete group
  • Endpoint for learnings
    • Add learning
    • Update learning
    • Delete learning
    • Undelete learning
  • Has entities CardLog, DeckLog, FileEntry, Group and Learning
  • Add endpoints and entities to make a backup of Android client data possible
  • Customize IdentityUser and add references to db-models
  • Handle model/entity/data-versions


Android UI
Wisecards Web-API
  • Endpoint to get access-token.
    • OAuth2 with password flow
  • Endpoint to add new client.


Android UI
Wisecards Web-API
  • Endpoint to add/update client.
    • Validate available/allowed `client_id`