Resonance

Resonance is a native Android app for daily reflection through sensory prompts, mood colors, and optional personal notes.

The app supports one saved reflection per day and a chronological archive for revisiting previous entries. Its interface combines warm neutrals, muted greens, and a consistent visual identity.

My role

Android Development, Interface Design, Local Data Integration

Tools

Android Studio, Kotlin, XML, Material Components, Room / SQLite

Context

Academic Mobile App Project

Resonance welcome screen displayed on a phone resting on linen.
Resonance spiral opening mark displayed on a phone on a notebook.

What I worked on

I developed Resonance as a native Android app for daily reflection. Users respond to a sensory prompt by choosing a color and adding an optional note. Each reflection is saved locally and can be revisited in a chronological history.

I built the app using Kotlin and XML, including the prompt selection, color palettes, reflection entry, and history screens. I also added persistent preferences, a confirmation step for deleting entries, and layouts for portrait and landscape orientations.

Approach

I separated interface rendering, application state, and data access using activities, fragments, ViewModels, and repositories. A shared ViewModel keeps the prompt, color selection, and note field synchronized.

Room stores reflections locally, with a unique date constraint supporting one entry per day. Returning to the main screen restores that day’s saved reflection and prevents duplicate saves. The history observes database changes and updates the affected entries.

I used lifecycle-aware observation and coroutines to handle interface updates and database operations. Shared visual resources keep typography, colors, and spacing consistent across screen orientations.

Skills Demonstrated

  • Building native Android applications with Kotlin and XML.
  • Managing shared interface state with ViewModel and LiveData.
  • Structuring local storage with Room, SQLite, DAOs, and repositories.
  • Updating lists with RecyclerView, ListAdapter, and DiffUtil.
  • Handling asynchronous operations with coroutines and Flow.
  • Saving user preferences and supporting different screen orientations.

Scroll to Top