Bygga
Type the product name from the box. Bygga shows every assembly step in 3D, with the parts, screws and tools for each one, and reads it out loud.
FuelLog is a small Android app to log fill-ups and EV charges, track mileage, predict the next fill, export CSV, and find nearby fuel pumps. Open source on GitHub and Codeberg.
LifestyleKotlin · AstroGitHub @ChandanShakyaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Simple fuel logging app with fuel refill prediction
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Website · Download latest APK · Add to Obtainium · GitHub · Codeberg
A fuel tracking app for Android. Log fill-ups, track mileage across multiple vehicles, and get predictions for your next refuel.
Built with Jetpack Compose, Room, and manual dependency injection. Ships at ~1.2MB.
Landing page source: website/ (Astro, black-and-white neubrutalism). Obtainium URL: obtainium://app/https://github.com/ChandanShakya/FuelLog. Mirrors: GitHub · Codeberg
Vehicle and fuel management
Predictions and analysis
Practical tools
| Layer | Technology |
|---|---|
| UI | Jetpack Compose + Material 3 |
| Database | Room (5 tables, version 11) |
| DI | Manual (AppContainer pattern) |
| Navigation | Sealed class + AnimatedContent (no Navigation Compose) |
| Architecture | MVVM with Kotlin Flows |
| Build | Kotlin, KSP, R8 full mode |
Requires Android Studio and minSdk 26.
git clone <repo-url>
cd FuelLog
./gradlew assembleDebug
Install the debug APK on a device or emulator.
./gradlew assembleDebug # debug build
./gradlew test # unit tests
Passwords live in app/build.gradle.kts (alias fuellog). The keystore file itself is gitignored.
Place release.keystore in the project root, then:
./gradlew assembleRelease
CI: only RELEASE_KEYSTORE_BASE64 is required (base64 of release.keystore). Workflows decode it to release.keystore before assembleRelease. Codeberg also needs CODEBERG_TOKEN to publish the release.
Release builds use R8 minification, resource shrinking, and locale stripping (English only).
./gradlew test # all unit tests
./gradlew testDebugUnitTest # debug unit tests only
./gradlew connectedDebugAndroidTest # instrumentation tests (device required)
Test coverage:
app/src/main/java/com/chandanshakya/fuellog/
data/
backup/ JSON export/import (validated, transactional)
db/ Room database, DAOs, type converters
model/ Entity classes and enums
ui/
chart/ Canvas-based line charts
components/ Reusable composables (dialogs, text fields, badges, cards)
navigation/ Screen sealed class, manual nav host with AnimatedContent
screens/ Screen composables
viewmodel/ ViewModels with factory-based instantiation
util/ Unit converter, currency/money helpers, mileage calculator,
tank capacity learner, fill-up predictor
di/ AppContainer (manual dependency injection)
Five tables with foreign key constraints:
| Table | Purpose |
|---|---|
vehicles | Vehicle profiles: name, type, distance/volume units, tank capacity |
fuel_entries | Fill records: odometer, volume, cost, date, full-tank flag, FK to vehicle and pump |
fuel_pumps | Named fuel pumps/stations |
odometer_readings | Standalone odometer check-ins between fill-ups |
user_settings | Global defaults: currency, distance unit, volume unit |
Schema version is 11. Do not bump the version without adding a real Migration. The app uses fallbackToDestructiveMigrationOnDowngrade() only — upgrades with a missing migration fail loudly instead of silently wiping user data. Export Room schemas when adding migrations (exportSchema is currently false; enable it and commit schemas before the next version bump).
When you mark a fill-up as "full tank", the app records the fuel volume added. Between two consecutive full-tank fill-ups, the volume added approximates the actual tank capacity. The algorithm computes a median-based suggestion with confidence levels (low/medium/high) based on how many full-tank pairs are available. Suggestions appear on the Insights screen and are applied manually — the app never overwrites your value.
Logging a new odometer reading without buying fuel immediately shortens remaining range and moves the predicted date earlier.
Costs are stored as Double for Room/JSON compatibility but are always rounded to 2 decimal places on save and when summing (Money.roundToCents / Money.sumCents). Display uses a per-thread DecimalFormat (thread-safe under concurrent Flow collection).
Export writes versioned JSON. Import validates the entire payload first, then clears and inserts inside a single Room transaction — a parse/validation error leaves existing data untouched. Android Auto Backup is disabled; use in-app export for backups.
MIT — see LICENSE.