WeekMe: A Weekly Calendar Widget for Android

Claude Code Kotlin Android Jetpack Glance

WeekMe is an Android home screen widget that shows your week at a glance — a 2×4 grid with today's events front and center, the next six days laid out beside it, and a mini month calendar in the corner. Built entirely with Claude Code in a single session.

WeekMe widget on Android home screen showing a weekly calendar view

What You Get

  • 2×4 grid layout — today always top-left, remaining days flow chronologically, mini month always bottom-right
  • Google Calendar events — reads directly from the on-device Calendar Content Provider, no OAuth or API keys needed
  • Multi-day event support — event name on the first day, continuation indicator on subsequent days
  • Week navigation — previous/next buttons to browse past and future weeks, tap the header to jump back to today
  • System theme — follows Android light/dark mode via Jetpack Glance's GlanceTheme
  • Tap to open — tapping any day cell opens Google Calendar to that day
  • Color-coded events — each event shows its calendar color as a sidebar indicator

Why a Widget?

The stock Google Calendar widget only shows a month view or an agenda list. Neither gives you a quick at-a-glance picture of what your week looks like. WeekMe fills that gap — you see seven days of events without opening any app, in a layout dense enough to be useful but readable enough to parse at arm's length.

How It Works

WeekMe is a pure Jetpack Glance widget — no companion app UI beyond a permission-grant screen. The widget uses GlanceAppWidget with Compose-style declarative layout, and reads calendar data through Android's CalendarContract.Instances content provider. This means it works with any calendar synced to the device: Google Calendar, Outlook, Samsung Calendar, whatever.

Week navigation state is persisted in Glance's PreferencesGlanceStateDefinition, so browsing to a different week survives widget updates. The widget refreshes every 30 minutes automatically.

How Claude Built It

The entire project was scaffolded and written by Claude Code from the terminal — no Android Studio UI. Claude set up the Gradle build with version catalogs, wrote all the Kotlin source files, generated a release keystore for consistent signing (so the app doesn't need re-permissioning on every install), and iterated through compile errors by reading build output.

The trickiest part was getting ColorProvider right — Glance's color API expects androidx.compose.ui.graphics.Color objects, not Android int colors, which isn't obvious from the API surface. The first build failed with 14 type mismatch errors that all pointed to the same root cause.

There was also a data-fetching bug where the widget showed events for the first two days but nothing after. The widget was displaying today through six days forward, but querying the calendar for the current Sun–Sat week — so any days past Saturday came back empty. A one-line fix to query from today instead of the week start resolved it.

Source & Download

Full project on GitHub: chomey/weekme. MIT licensed.

Build with ./gradlew assembleRelease and sideload the APK, or open in Android Studio.

← Back to all tutorials