Worklog
Offline Android app for tracking construction work, workers, construction sites, hours, monthly reports and local backups.
- Role
- Creator
- Year
- 2026
- Type
- Native Android
- Stack
- Kotlin, Jetpack Compose, Material 3


Overview
Worklog is a native Android application for offline daily construction work records. The app tracks dates, main workers, construction sites, additional workers, worked hours, notes, attachments, monthly totals, PDF reports and local backups without requiring accounts or a backend.
Daily tracking
The main screen is a monthly calendar where days with saved work entries are visually highlighted. Users can create or edit entries for today and past dates, while future dates are disabled at the calendar level and guarded again in the save flow.
Entry validation
The entry form validates required main worker, construction site and hours fields. Hours are sanitized as decimal input and rejected when blank, invalid, less than or equal to zero, or greater than 24 hours.
Offline-first storage
All work entries are stored locally in a Room database. The data layer maps a Room entity to a domain WorkEntry model, exposes Flow streams through a repository interface and has no backend, account system, Firebase dependency or network runtime in the source.
Attachments
Image and video attachments are selected through Android's Storage Access Framework with OpenMultipleDocuments. The app stores persistable content URI references, labels each attachment as Image or Video and opens saved attachments with ACTION_VIEW.
Reports
Monthly PDF export is implemented locally with Android PdfDocument and CreateDocument. The report includes date, main worker, construction site, other workers, worked hours, notes and a total-hours row for the selected month.
Backup and restore
Backup export writes a JSON document through the selected URI, including app name, version, export timestamp and serialized entries. Import reads a selected JSON file, validates the backup version, validates entry fields, rejects duplicate dates and replaces the local Room data after confirmation.
Architecture
The project is organized into data, domain, DI and UI packages. Hilt provides the Room database, DAO and repository binding. ViewModels expose StateFlow UI state for calendar, entry, details and search screens, while Navigation Compose handles Home, Records, Search, Entry and Details routes.
Android UX
The UI is built in Jetpack Compose with Material 3 components, a bottom navigation bar, onboarding and about dialogs, splash screen, adaptive launcher icons and Material You dynamic color support with dark and light theme handling.


