NextAgenda is a focused Ubuntu Touch calendar client for people who want a clean agenda view and direct Nextcloud Calendar synchronization without depending on the legacy Lomiri Calendar storage stack.

A dedicated Nextcloud app token is required. Filesystem access must be OFF. Before accepting the connection, NextAgenda verifies that the token cannot access Nextcloud Files. Tokens with filesystem access are rejected.

https://barrydegraaff.nl/ubuntu-touch/how-to-make-app-password.mp4

Agenda first
- One scrollable agenda with every day in the loaded range visible, including empty days.
- Today is brought into focus when the application becomes active.
- All-day and multi-day events are shown on every relevant day.
- Common recurring events are expanded locally.
- Calendar colors are read from the Nextcloud CalDAV server.
- Load five additional weeks into the past or future without jumping away from the day currently being viewed.

Direct Nextcloud CalDAV sync
- Uses its own Nextcloud configuration instead of Ubuntu Online Accounts.
- Discovers calendars directly through Nextcloud CalDAV.
- New appointments are written to the selected calendar immediately and return to their start day after synchronization unless the user navigates elsewhere.
- Non-recurring edits and deletes are sent directly to Nextcloud.
- Synchronization repeats at a configurable interval from 1 to 120 minutes while the app is active, and also while notifications are enabled.
- Calendar resources are cached in app-private local storage so the agenda remains available between syncs.

Calendar notifications
- Notifications are disabled by default.
- Notifications use standard iCalendar VALARM data from synchronized events.
- DISPLAY and AUDIO alarms are supported, including relative and absolute triggers, RELATED=END, REPEAT/DURATION, recurring occurrences, recurrence overrides and exclusions.
- Repeated events can produce a reminder for each generated occurrence.
- For all-day events, the VALARM determines the notification time relative to the local midnight start. For example, PT0S is 00:00 and PT9H is 09:00 on the event date.
- The global Notifications switch controls all reminders.
- Each discovered calendar can also be enabled or disabled individually. New calendars default to enabled for reminders; the global Notifications switch remains the master control.
- Quiet hours are enabled by default from 20:00 to 08:00 and can be changed or disabled. During Quiet hours reminders remain in the notification drawer without popup, sound or vibration.
- Direct bell sound is enabled by default outside Quiet hours. NextAgenda plays its bundled bell through the normal audio path while Lomiri Postal continues to provide popup, vibration and the notification drawer. If Direct bell sound is disabled, NextAgenda requests the normal Lomiri notification sound instead.

Important notification requirement
Ubuntu Touch must be configured in UT Tweak Tool so NextAgenda uses Prevent app suspension. Without this setting, Ubuntu Touch may suspend NextAgenda and local calendar reminders will not fire reliably. The Notifications screen displays this requirement before notifications can be enabled.

The notification implementation uses the standard common audio and push-notification-client policy groups plus a standard ubuntu-push-helper hook. It does not require unconfined mode, the reserved calendar policy group, a daemon, custom AppArmor rules or OpenStore manual-review permissions.

Meetings and attendees
- New meetings can contain comma-separated attendees such as alice@example.com or Bob <bob@example.com>.
- New appointments include a Contacts picker that can select one or more address-book entries through Ubuntu Touch Content Hub.
- Selected contact cards are parsed only to obtain attendee names/email addresses and are not retained as a local address-book copy.
- Attendees are written to VEVENT as standard iCalendar ATTENDEE properties and sent to Nextcloud.
- New attendees use RSVP=TRUE and PARTSTAT=NEEDS-ACTION.
- An organizer email is required when creating a meeting with attendees.

Backup and phone migration
- Backup and restore is available from the hamburger menu.
- Configuration is exported/imported as UTF-8 JSON through Content Hub.
- Calendar event resources and the local event cache are not included. Events remain on Nextcloud and synchronize again after restore.
- Include credentials/secrets is optional and off by default. If enabled, the dedicated Nextcloud app token is written to the JSON in plaintext. Protect or delete that file after migration.
- Without secrets, non-secret connection and calendar settings are restored and the app token must be entered again.

ICS import through Ubuntu Touch Content Hub
- NextAgenda registers as a destination for Events content.
- ICS files sent by other applications can be imported directly to a configured writable Nextcloud calendar.
- Imports are not restricted to current or future dates, so historical appointments can be added.
- Multi-event ICS files are grouped by UID before upload so recurring components for one UID stay together.

Appointment display and editing
- HTML appointment descriptions and HTML location values are converted to readable plain text, including percent-encoded HTML supplied through DESCRIPTION ALTREP data URLs.
- HTTP and HTTPS URLs in appointment descriptions and locations are clickable and open through the system browser/URL handler.
- VEVENT entries containing VALARM show a notification bell in the agenda list.
- Time entry uses separate numeric hour and minute fields with a visible colon.
- Reminder selector for new/non-recurring appointments, defaulting to No reminder, with event-start through one-week-before presets written as standard VALARM data.
- Recurring events are displayed, but recurrence editing is intentionally disabled to avoid discarding server recurrence metadata.
- Deleting a recurring item deletes the complete CalDAV resource.

Ubuntu Touch integration
- Native Qt/QML application for Ubuntu Touch 24.04 on arm64.
- Light and dark modes.
- Hamburger menu at the top right.
- About dialog includes version 0.1.32.

Privacy
- No advertising.
- No analytics.
- No tracking.
- No telemetry.
- No developer-operated cloud service.
- Direct communication only with the configured Nextcloud server.
- App-private local cache for calendar resources and optional app-private storage of the Nextcloud app token when explicitly enabled.

NextAgenda is not affiliated with or endorsed by Nextcloud GmbH.

This app was vibe coded using an AI. The source code is published for inspection and improvement.

NextAgenda is released under MIT No Attribution, SPDX identifier MIT-0.

MIT No Attribution

Copyright 2026 Barry de Graaff

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
