Kirby + Svelte/Sapper

Another simple approach (if you only need to read public data) I used on one site is to simply return JSON from your templates. It was really straight-forward and was close to working with normal templates. You can then use the URLs / routing provided by Kirby as your custom API.

Some sample code:

<?php
$data = [
  'text' => $page->text()->kirbytext()->value(),
  'title' => $page->title()->value(),
  'uid' => $page->uid()
];

// set response content type to `application/json`
$kirby->response()->json();

echo json_encode($data);

Edit: This Vue starterkit mentioned by @texnixe in this thread seems to use the same idea.