Projects

Ptolemy: CMS and Content Model

How tours, destinations and stories were modelled and stored

Client
Ptolemy
Year
2022
Before
AI
Result
Strapi content model, AWS hosting, WordPress writing space with custom content types

What I did

Heritage travel app Ptolemy’s content was written by people: destination guides, stories, and audio tours made of chapters along a route. Before building the app, we had to decide what that content would look like and where it would live.

The first version, in 2022, ran on Strapi, a headless CMS, hosted on AWS with images on S3. I set up the main content types:

  • Destinations, the cities and regions we covered.
  • Tours, with a route, a start and end point, duration, difficulty and chapters.
  • Stories, shorter pieces about a place or a person.
  • Writers, and books we recommendeded for further reading.

Content was built from blocks like chapters, galleries, headings, videos and sources, with an era and a culture on each piece, so readers could filter by period. Chapters got coordinates, so each one could sit at a stop along tour routes.

In late 2022 we moved the writing to a self-hosted WordPress instance, which was easier for our writers, and the content itself to Supabase. There, every type of article sat in one table, tagged by place, era, culture, topic, historical figure and series. Prepared views on Supabase gave the app what it needed: full-text search, related articles nearby, and filters by distance, duration and difficulty. The views were refreshed whenever content changed, via webwooks.

Writing in WordPress

With the Advanced Custom Fields Pro WordPress plugin I added content types and fields that matched our content model above. Saving a tour in WordPress triggered the Ptolemy API, which copied it to the database, generated its audio and refreshed the page in the app. That way a writer could publish a new tour without anyone on the tech side being involved.

The WordPress UI was also customized to make it easier for writers to engage with the content and understand chapter hierarchy while creating content.

More like this

Contact

Need something like this?

Email me about a project like this