···33Store your runs using ATProto! Log in with your bluesky handle (sorry) and start
44saving and retrieving your runs.
5566-Press the Remix button to start storing your own records on ATProto!
66+Demo available
77+at:[https://mapped.wilhelmb.workers.dev](https://mapped.wilhelmb.workers.dev)
7888-Demo available at:[ https://proto-runs.val.run/](https://proto-runs.val.run/)99+# Local development
1010+1111+```sh
1212+# install dependencies
1313+pnpm install
1414+1515+# start dev server
1616+pnpm dev
1717+1818+# for local oauth:
1919+cloudflared tunnel --url http://localhost:5173
2020+```
-28
backend/index.ts
···11-import { serveFile } from "https://esm.town/v/std/utils@85-main/index.ts";
22-import { Hono } from "npm:hono";
33-import { getClientMetadata } from "../shared/client_metadata.ts";
44-55-const app = new Hono();
66-77-// Serve index.html at the root /
88-app.get("/", (_c) => {
99- return serveFile("/frontend/index.html", import.meta.url);
1010-});
1111-1212-// Serve all /frontend files
1313-app.get("/frontend/**/*", (c) => serveFile(c.req.path, import.meta.url));
1414-app.get("/shared/**/*", (c) => serveFile(c.req.path, import.meta.url));
1515-app.get("/public/*", (c) => serveFile(c.req.path, import.meta.url));
1616-1717-app.get(
1818- "/client_metadata.json",
1919- (c) => c.json(getClientMetadata(`https://${new URL(c.req.url).hostname}`)),
2020-);
2121-2222-app.onError((err, _c) => {
2323- throw err;
2424-});
2525-2626-// HTTP vals expect an exported "fetch handler"
2727-// This is how you "run the server" in Val Town with Hono
2828-export default app.fetch;
···11+// Generated by Wrangler
22+// After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen`
33+interface Env {
44+ ASSETS: Fetcher;
55+}