TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Track inspections, recurring tasks, issues, and meter readings for everything you own — aircraft, cars, boats, bikes, and homes. Works offline, syncs everywhere.
ProductivityKotlin · TypeScriptGitHub @fz172OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
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
Loading the full README. The saved excerpt is shown below.
SquawkIt is a cross-platform aviation logbook and fleet-management app for aircraft owners and
mechanics. It keeps maintenance records, inspection compliance, and open squawks in one place —
designed to feel like a well-made instrument, not an app trying to impress.Read the full README ↗SquawkIt is a cross-platform aviation logbook and fleet-management app for aircraft owners and mechanics. It keeps maintenance records, inspection compliance, and open squawks in one place — designed to feel like a well-made instrument, not an app trying to impress.
Naming note: The user-facing brand is SquawkIt. The codebase still uses the original WingsLog name for internal identifiers (Kotlin package
dev.fanfly.wingslog, Gradle module names, the Firebase projectwingslog-9ca4e). This is intentional — renaming the published app identity would break Play Store / App Store / Firebase registration.
One shared Kotlin Multiplatform + Compose Multiplatform codebase ships to:
app/) — minSdk 33iosApp/) — Xcode project wrapping the shared frameworkwebApp/) — Kotlin/JS, served as a Firebase-hosted siteattachmentUploadEnabled feature-lab flag).MVVM + StateFlow, Koin DI, local-first storage, background sync. In one line:
A SQLDelight
EntityStoreis the single source of truth for every read and write; a background Firestore sync engine is the only Firestore client, pushing local changes and pulling remote ones. There is no Firestore in the UI read path.
core/storage's SQLDelight entity
store. Feature managers never touch Firestore directly.feature/sync): hydration, pull subscriptions, a push worker, tombstone GC, and
blob upload/download (Android WorkManager, iOS URLSession background tasks).core/model).backend/firebase/functions/ — e.g. export email delivery. Not a Gradle module.app/ Android entry point
composeApp/ Shared Compose UI + central Koin init
webApp/ Kotlin/JS web host (OPFS SQLite storage)
iosApp/ Xcode project
core/ model · ui · auth · firebase · storage · datetime · appinfo · analytics · nav
feature/ fleet · aircraft · logs · tasks · squawk · technician · attachment ·
export · sync · settings · userprofile · featurelab · stresstest
backend/ Firebase Cloud Functions (TypeScript)
Each feature follows a canonical submodule pattern — model / datamanager / sharedassets /
viewing / update (feature/tasks is the reference). See AGENTS.md for the full
dependency rules and module map.
| Area | Choice |
|---|---|
| Language | Kotlin 2.4.0 (Multiplatform) |
| UI | Compose Multiplatform 1.11.1 |
| Build | Gradle / AGP 9.2.1 |
| DI | Koin 4.2.2 |
| Local storage | SQLDelight 2.3.2 |
| Backend | Firebase (Auth, Firestore, Storage, Analytics, Cloud Functions; BOM 34.15.0) via GitLive KMP SDK |
| Models | Wire / protobuf |
SquawkIt uses a deliberate aviation identity (no dynamic color):
See DESIGN.md and PRODUCT.md for the full brand and product principles.
./gradlew assembleDebug # Android debug APK (developer tooling on)
./gradlew assembleRelease # Android release APK (developer tooling off)
./gradlew lint # Lint
./gradlew testDebugUnitTest testAndroidHostTest # All Android unit tests
./gradlew :feature:fleet:datamanager:testAndroidHostTest # Single-module tests
./gradlew :composeApp:iosSimulatorArm64Test # iOS simulator tests (local only)
./gradlew :webApp:jsBrowserDevelopmentWebpack # Web development bundle
For iOS, open iosApp/ in Xcode and run the iosAppDebug scheme (iosAppRelease for a
tooling-off build).
CI runs lint → assembleDebug → testDebugUnitTest + testAndroidHostTest on every push and requires a
GOOGLE_SERVICES_JSON secret. iOS is not built on CI.
docs/ — per-feature PRDs and design docs (storage, sync, squawks, export, attachments,
technician, analytics, web/adaptive layout), each with an implementation-status note