Easy Ledger

A personal finance Android app. Data lives in on-device SQLite (Room), no login and no server; no accounts or cloud sync—backups leave the device only when you export or share them.

Easy Ledger

Easy Ledger

v1.3.1Android 8.0+APK

Download latest APK

GitHub Releases · free & open source

Easy Ledger download QR code
Scan to download
View source

Learn more

Main features

Entries

Quick entry · search and filter

Amount, date/time, type, category, account, note, tags; quick add and month switch; full-text search on notes/tags; filter by category, account, tag, amount range, income/expense/transfer.

Transfer

Account transfers

From/to accounts, amount, date, note; both balances update; excluded from monthly income/expense and shown separately in the list.

Categories · Accounts

Categories and accounts

Separate expense/income categories with editable names and colors; default Chinese categories on first launch; cash, cards, Alipay, WeChat, etc., balances follow transactions.

Stats

Monthly stats and trends

Monthly income, spending, balance (vs last month), category pie, 12-month trend; filter by time, account, tag; share a monthly image or export PDF.

Budget

Budgets and reminders

Monthly total plus per-category budgets; 80% warning and 100% overspend; configurable large-transaction threshold; gentle nudge on the home screen after days without entries.

Backup

Import and export

Export CSV and full JSON backup (entries, categories, accounts, budgets, reminder settings); import with preview, common column detection, duplicates: skip / import all / overwrite.

Auto

Recurring entries

Daily / weekly / monthly rules; creates due entries when you open the app; edit, pause, or delete rules.

Widget

Home screen widget

Shows monthly income, spending, balance (green/red); tap opens the app; refreshes after you log transactions.

Privacy

Receipt photos

Attach a camera shot or gallery image when logging; photos stay on device with thumbnail, replace, and delete.

Dark mode toggle under Me / Settings; first launch seeds sample entries—clear or restore under Me → Reminder settings. Stack: Kotlin, Jetpack Compose, Material 3, Room, Navigation Compose.

Group Matters

Offline Android app for any small group—attendance, fee collection, cost splits, checklists (club, dorm, team, and more). Data stays on device (Room), no account or network required.

Group Matters

Group Matters

v1.5.2Android 8.0+APK

Download latest APK

GitHub Releases · free & open source

Group Matters download QR code
Scan to download
View source

Learn more

Main features

Members

Members and roster

Add/edit/archive members (optional member ID and notes); bulk paste import with ID-first Tab columns, warnings on duplicate names/IDs; restore archived members while keeping history.

Groups

Sub-groups

Multi-select members into sub-groups; one person can join several; activity scope is the whole group or a sub-group (empty groups cannot be selected).

Activities

Four activity types

Attendance / payment / split / checklist; scope is whole group or a sub-group; member snapshot at creation—later roster changes do not alter history; “Start another round” re-snapshots the current roster.

Split

Flexible splits

Amounts stored in cents, shown as ¥ in the English UI; remainder to first N people; exclude members, weight-based or fixed-amount splits.

Progress

Progress and roll call

Activity detail defaults to incomplete-only; tap to update status; edit amounts on payments/splits; continuous roll call for attendance; sort roster by member ID (optional).

Reminders

Summaries and reminder text

Copy summary / reminder text in WeChat-friendly format (one person per line with amounts); share or copy incomplete lists and CSV from details.

Fund

Group fund ledger

Income/expense ledger and balance; payment activities can post collected totals to the group fund; notes and photo receipts on payments/splits.

Backup

Backup and export

Backup/restore data (zip, includes payment receipt images); export members, activity progress, and ledger CSV.

Widget

Incomplete-count widget

Shows incomplete counts for recent in-progress activities (total when several); tap opens the app.

Search activities by title on home; filter in progress / archived; quick title templates for roll call, group fund, dorm splits when creating activities or starting another round; Material 3 dark theme follows system or fixed light/dark. Stack: Kotlin · Jetpack Compose · Material 3 · Navigation Compose · Room · DataStore · App Widget · Flow · Coroutines · MVVM.

C Week

In 7 days, take beginners from zero to writing Dijkstra shortest paths in C (arrays, pointers, and memory done right). Lessons include real VS Code screen recordings (H.264, bundled in the APK), Kotlin + Jetpack Compose, fully offline.

C Week

C Week

v1.5.0Android 8.0+APK

Download latest APK

GitHub Releases · free & open source

C Week download QR code
Scan to download
View source

Learn more

Highlights

Same capabilities as in the APK—no backend; lessons and demo videos ship inside the app.

Plan

Weekly plan and progress

Day 1–7 cards, checkmarks, and overall percentage; progress persisted with DataStore and follows system light/dark theme.

1.3.0

Learning calendar / check-ins

Light up D1–D7 one day at a time, weekly date strip and streak count; completing a lesson, lab, or quiz stamps the day automatically.

1.4.0

Wrong-answer book + retry

Failed quizzes and labs record day, question, answers, and error category; listed by day and marked corrected when you get them right.

1.4.0

Multi-case lab grading

Offline simulated tests against multiple I/O pairs, show passed cases and partial scores, with clearer feedback.

1.4.0

Learning report

Streaks, per-day completion, and quiz accuracy—share via the system share sheet.

Lessons · Quizzes · Recordings

Chinese explanations (with everyday analogies), quizzes, and real VS Code recordings; Day 1 covers paths/files and step-by-step bash (pwd/ls/cd and a cheat sheet).

Coding labs

Edit C snippets in-app; simulated runs against multiple cases. Feedback covers missing headers, off-by-one, pointers, formulas, TODO stubs, BFS/Dijkstra mix-ups, and more.

Day 7 capstone

Adjacency list + O(V²) Dijkstra fill-in; multiple test cases; after passing, step through dist and the shortest path on a grid.

Glossary

Look up pointer, stack/heap, array decay, launch.json, bash paths, and more; large tap targets and monospace code for reading comfort.

7-day learning path

Matches the course map in `app/src/main/assets/curriculum/map.json` and the Kotlin lessons; each day has a micro-lesson, quiz, and lab.

D1

Environment, files, and Hello World

Paths · bash · VS Code · first compile

Tell paths from workspaces, use the terminal for basic file ops, create .c in VS Code, compile with gcc, and use launch.json and breakpoints.

Lab: print Hello, Ada
D2

Types, variables, and I/O

Static typing · printf/scanf · no automatic cleanup

Declare int/double/char, read/write with printf/scanf, and understand overflow and stack variable lifetimes.

Lab: Celsius ↔ Fahrenheit
D3

Control flow and functions

if/for/while · prototypes · pass-by-value

Write functions with prototypes, understand pass-by-value in C, and see why swap needs pointers (setup for Day 4).

Lab: write is_prime
D4

Arrays, strings, pointers

Contiguous memory · addresses · '\0'

Draw pointer diagrams, use arrays and '\0' strings correctly, and avoid bounds and decay pitfalls.

Lab: reverse a string in place
D5

Structs, heap memory, files

struct · malloc/free · fopen

Define structs, allocate adjacency nodes on the heap, free correctly, and do basic file I/O.

Lab: highest score in a struct array
D6

Algorithms warm-up: sorting and BFS

Selection sort · adjacency list · grid/graph BFS

Understand selection sort, simulate an adjacency list with arrays, and complete BFS (queue + dist[]).

Lab: finish BFS relaxation
D7

Capstone: Dijkstra shortest paths

Non-negative weights · adjacency list · O(V²) teaching implementation

Complete the relaxation loop on your own, explain how it differs from BFS, and compile/run tests in VS Code.

Capstone: complete Dijkstra relaxation

FAQ

Install, requirements, and offline use — for all three apps on this page.

How do I install the APK?

Download the latest APK from each app’s GitHub Releases and install: Easy Ledger, Group Matters, and C Week. Android may ask you to allow installs from unknown sources (varies by OEM). Launcher names are “Easy Ledger”, “Group Matters”, and “C Week”.

Install tips (Android version, unknown sources, upgrades)

All three apps use minSdk 26 (Android 8.0)—the same value in each repo’s app/build.gradle.kts (easy-ledger, group-matters, c-week). On first install, Android may block APKs until you allow Install unknown apps for your browser or file manager (wording and location vary by device). If an upgrade fails with a signature conflict, uninstall the old build before installing the new one—uninstalling erases on-device app data, so export or back up first (backup files for Easy Ledger / Group Matters, and any export path for C Week progress).

What are the system requirements?

All three apps require at least Android 8.0 (API 26, minSdk 26) and target SDK 35 (compileSdk 35). C Week bundles H.264 lesson videos; a recent OS version usually plays them more reliably.

Do I need the internet?

No for everyday use—data stays on your device. C Week ships lessons, demo videos, and lab data in the APK; progress lives in DataStore. Easy Ledger stores entries and settings in Room (SQLite). Group Matters stores group and activity data in Room. None require login or a mandatory backend.

Does C Week compile C on the phone?

No. C Week uses offline simulated grading (multiple test cases, rule checks, and feedback). Partial credit shows a score; a lab counts complete only when all cases pass. You do not need gcc on the phone.

How does C Week work with VS Code on a computer?

Install VS Code and gcc on PC/Mac/Linux, open the c-week repo, and follow the .c files under app/src/main/assets/labs/; for Day 7 see day7_dijkstra.c and expected output in that repo’s README.