Native Android • 2026

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
Worklog calendar, backup and PDF export screen
Worklog search screen

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.

Worklog calendar, backup and PDF export screen
Calendar and export
Worklog search screen
Local search

Explore the project

Inspect the source