Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/PunctuOwlity/llms.txt

Use this file to discover all available pages before exploring further.

PunctuOwlity is a mobile-style event tracker built for anyone who wants a quick, glanceable view of their upcoming dates, appointments, and reminders — without signing up for a cloud service or installing a heavy calendar suite. It was originally built as a native Android application and later adapted into a fully static web app that runs entirely in the browser. Both versions share the same screen flow, visual identity, and core feature set: account creation, login, SMS preferences, an event grid with search and category filters, and a simple add/edit form.

Key Features

Event Management

Create, edit, and delete events with a title, date, time, and optional reminder toggle. Events are displayed in a two-column grid sorted by date, showing the weekday abbreviation, day number, and formatted time at a glance.

Account Management

Sign up with a username and password. The web app extends sign-up with first name, last name, email, optional phone number, and a confirm-password field, and supports login by either username or email. The Android app stores only username and password and logs in by username only. Duplicate usernames are rejected at registration.

Search and Filters

Filter your event grid by category — All Events, Birthdays, Appointments, or Trips — and use the live search field to narrow results by title in real time without a page reload.

Reminders

Toggle a reminder on any event. The web app uses the browser Notifications API to alert you on the day of the event; the Android app requests SMS permission to deliver alerts to your phone number.

Two Versions

PunctuOwlity ships in two distinct forms. The Android app is the original, built in Java with SQLite storage and native Material components. The static web app is a faithful conversion of that same interface into HTML, CSS, and JavaScript — no server, no database engine, no build step required.
The Android version is a native Java application targeting API 35 (Android 15) with a minimum supported API of 21 (Android 5.0 Lollipop). It uses SQLite for persistent storage via a DatabaseHelper class, Material Design components for UI, and a GridLayout for the events screen. Five activities cover the full user journey:
  • LoginActivity — the launcher screen; accepts username and password
  • SignupActivity — collects user credentials and stores them in SQLite
  • SmsPermissionActivity — asks the user to allow or deny SMS alerts
  • MainActivity — the events grid with search, filters, and CRUD actions
  • AddEventActivity — the add/edit form for individual events
The app declares android.permission.SEND_SMS with android:required="false" on the telephony hardware feature, so it installs on tablets and emulators without a SIM card. User data lives in a private SQLite database named punctuowlity.db on the device.

Project Pages

The application is organized around a small set of pages that map directly to the Android activity stack:
PageAndroid EquivalentPurpose
index.htmlLoginActivityEntry point — log in or navigate to sign up
signup.htmlSignupActivityCreate a new account
sms.htmlSmsPermissionActivityChoose whether to receive SMS alerts
events.htmlMainActivityBrowse, search, filter, and manage events
add-event.htmlAddEventActivityAdd a new event or edit an existing one
case-study.htmlWritten case study of the project’s development
articles.htmlCollection of related articles
The top navigation bar on every page includes a hamburger menu that opens a panel with links to the Case Study and Articles pages, keeping those supplemental pages reachable from anywhere in the app.
All web app data — user accounts, SMS preference, and events — is stored in your browser’s localStorage. No data is ever sent to a server. This means your data persists across browser sessions on the same device, but it is local to that browser profile. Clearing your browser’s site data will erase all accounts and events.

Build docs developers (and LLMs) love