Skip to content
All projects
applicationcreative

Veil - Poetry Reading App

A React Native reading app for poetry. Poems sync from Notion on a 5-minute cron, and GitHub Actions builds and attaches an APK to every tagged release - four automated releases so far. Push notifications prune themselves: tokens that come back with Expo's DeviceNotRegistered or InvalidCredentials are deleted on sight.

Screenshot of Veil - Poetry Reading App

Tech Stack

React Native, Expo, Notion API, TypeScript, GitHub Actions

Features

  • Notion Sync Every 5 Min
  • Automated APK Releases
  • Self-Pruning Push Tokens
  • Native iOS & Android

What I Built

  • Wrote the poem reader - 611 lines in app/poem/[id].tsx - and the settings sheet that drives type size, spacing, and theme across it.

  • Set up the release pipeline: a tagged push builds the APK and attaches it to the GitHub release, which is exactly what Veon reads to hand out the download link.

  • Wrote the five-minute sync check and the push sender, both of which delete a device token the moment Expo reports it as unregistered rather than retrying a dead endpoint.

  • Built the home feed, favourites, search, and the force-update modal that catches people still on an old build.

  • Wrote scripts/build-logo.mjs, which outlines the wordmark from the font, draws the rule under it, and rasterises the standard, adaptive, splash, and favicon variants in one command - so a design change is one script re-run, not four exports by hand.