polar. documentation

technical reference and user guide for polar. v1.7

overview

polar. is an offline-first android task manager built with kotlin. it follows clean architecture + mvvm and stores everything locally using room.

the app targets android 7.0+ (api 24) and is compiled with the latest android sdk. since v1.7 it ships in two builds from the same codebase: an offline build that intentionally does not request the internet permission, and an online build with supabase cloud sync, available only to people who have been granted an account by the developer.

key features

  • โœ“ tasks with title, description, due date, priority, estimated time and recurrence
  • โœ“ unlimited subtasks with checkbox completion
  • โœ“ custom lists with 40 icons, color and drag & drop ordering
  • โœ“ tag-based filtering with #tag syntax
  • โœ“ monthly calendar with dot indicators and daily agenda
  • โœ“ date, time and location-based reminders with status filters and date groups
  • โœ“ statistics with bar, line and donut charts
  • โœ“ 7 themes, 6 fonts, 2 checkbox styles and font size slider
  • โœ“ launcher widget for today's tasks
  • โœ“ settings organized into appearance, notifications, data and help categories
  • โœ“ cloud sync across devices (online build, accounts granted by the developer)
  • โœ“ local backup and restore in json, plus csv import

architecture

the app uses a single activity with manual fragmentmanager navigation. ui is built with xml layouts and view binding.

dependency injection is handled by hilt. background work uses kotlin coroutines and workmanager for recurring tasks and, on the online build, periodic sync.

core stack

kotlin 2.0.21
room 2.6.1 with sqlite wal
hilt 2.51.1
workmanager 2.9.0
material components 1.13.0
supabase + ktor okhttp (online build)

permissions

the offline build does not declare the internet permission; the online build declares it only to sync with supabase, and makes no network connections until you sign in with an account granted by the developer. both request just the minimum permissions required for alarms, notifications and optional location reminders.

permission purpose
INTERNET online build only: cloud sync with supabase, used only with a linked account
POST_NOTIFICATIONS post reminders and task notifications
SCHEDULE_EXACT_ALARM trigger exact reminder alarms
ACCESS_FINE_LOCATION optional: location-based reminders
RECEIVE_BOOT_COMPLETED reschedule alarms after device reboot

backup & restore

you can export your entire database to a json file from settings. the file can be imported later on the same or a new device.

csv import is also supported for migrating simple task lists from spreadsheets.

on the offline build, restoring a backup runs in a single database transaction, so a broken file can no longer wipe your current data. backups exported by v1.6 are still accepted.

frequently asked questions

is polar. really free?

yes. polar. is free, open source and published under the mit license. there are no ads or in-app purchases.

does it sync with the cloud?

only if you have an account. the online build syncs your lists, tasks, subtasks and reminders across devices once you sign in with an account granted by the developer. the offline build never connects: your data leaves the device only if you export a backup.

can i create an account for the online build?

no. there is no public sign-up. the online build is administered by the developer, who personally decides which people are granted an account. without one, the online build works exactly as well as the offline build and makes no network connections at all.

request an account by email (contacto@rezzt.dev)

which build should i download?

pick the offline build if you want polar. with no account and no internet permission. pick the online build if the developer has granted you an account and you want your tasks in sync across several devices. without an account, the online build works just like the offline one. both share the same design and the v1.7 improvements.

can i use it on ios?

currently polar. is only available for android. there is no ios version planned at this time.

how do i report a bug?

open an issue on the github repository with steps to reproduce and your android version.