{
  "markdown": "# Starling Bank Bikes Manchester\n\nStarling Bank Bikes Manchester is a dashboard that monitors bike-sharing stations in\nManchester in real time and reports analytics about them. The project includes a web\nfrontend and a backend API.\n\n## Features\n\n- **Live bike and station stats**: View availability, utilization, and capacity for each station.\n- **Interactive map**: See station locations and bike distribution.\n- **Popular-station analytics**: Find the most-used and highest-capacity stations.\n- **Modern UI**: Use a responsive interface built with React, Tailwind CSS, and Radix UI.\n\n## Project structure\n\n```\n- bike-sharing-dashboard/   # Frontend (React, TypeScript, Vite)\n  ├── src/\n  │   ├── components/\n  │   │   ├── dashboard/         # Dashboard features (PopularStationAnalytics, StatsCards, InteractiveMap)\n  │   │   ├── home/              # Home page\n  │   │   └── ui/                # UI primitives (Sheet, Tabs, Card, Table)\n  │   ├── lib/                   # Utility functions\n  │   ├── App.css, index.css     # Styles\n  │   └── main.tsx               # App entry point\n  ├── index.html                 # Root HTML\n  ├── vite.config.ts             # Vite config\n  └── tailwind.config.js         # Tailwind config\n\n- worker/                   # Backend (Cloudflare Worker, TypeScript, Hono, D1)\n  ├── src/\n  │   ├── index.ts              # Hono app, CORS, static assets, cron entry\n  │   ├── snapshot.ts           # GBFS feed -> D1 snapshot job (10-min cron)\n  │   └── routes/               # API routes (bikes, stations, analytics)\n  ├── migrations/               # D1 schema migrations\n  └── wrangler.jsonc            # Worker + D1 + cron + custom-domain config\n```\n\n## Get started\n\n### Prerequisites\n\n- Node.js and npm\n- A Cloudflare account with Workers and D1, for deployment\n\n### Develop locally\n\nTo run the backend (Worker plus local D1), enter the following commands:\n\n```sh\ncd worker\nnpm install\nnpm run migrate:local   # first time only\nnpx wrangler dev        # API on http://localhost:8787\n```\n\nTo run the frontend, enter the following commands:\n\n```sh\ncd bike-sharing-dashboard\nnpm install\nnpm run dev             # UI on http://localhost:5173, calls the local worker\n```\n\n### Deploy\n\nThe app runs at [cycle.arrakis.house](https://cycle.arrakis.house). When you push a\nchange to `main` that touches `worker/` or `bike-sharing-dashboard/`, the\n`.github/workflows/deploy.yml` workflow builds the frontend, applies the D1 migrations,\nand runs `wrangler deploy`. The Worker serves the static frontend and the `/api/v1` API\nfrom the same origin. A 10-minute cron job snapshots the Manchester Beryl General\nBikeshare Feed Specification (GBFS) feed into D1.\n\n## Technologies used\n\n- **Frontend:** React, TypeScript, Tailwind CSS, Vite, Radix UI\n- **Backend:** Cloudflare Workers, Hono, D1 (SQLite), TypeScript\n\n## Author\n\n[ThisisBankole](https://github.com/ThisisBankole)\n",
  "bytes": 2892,
  "sha": "d9ac0a31dcfeb91f3e9c85b4b64c6948b450e2e9f8dc5b3033ee6996d8323559",
  "repo_slug": "thisisbankole/starling-bank-bikes-mancheter",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_thisisbankole_cycle_tracker_4a8feb02/readme"
}