{"id":13398985,"url":"https://github.com/bholmesdev/whiteboard-the-web","last_synced_at":"2025-05-07T01:46:33.102Z","repository":{"id":41338235,"uuid":"504287715","full_name":"bholmesdev/whiteboard-the-web","owner":"bholmesdev","description":"Search my videos!","archived":false,"fork":false,"pushed_at":"2025-03-28T12:45:02.000Z","size":1828,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-28T13:36:52.690Z","etag":null,"topics":["video"],"latest_commit_sha":null,"homepage":"https://wtw.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bholmesdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-16T19:52:27.000Z","updated_at":"2025-03-28T12:45:33.000Z","dependencies_parsed_at":"2024-03-19T04:24:04.132Z","dependency_job_id":"1bb2d25e-de18-4e70-982a-0a6b0b48f533","html_url":"https://github.com/bholmesdev/whiteboard-the-web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bholmesdev%2Fwhiteboard-the-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bholmesdev%2Fwhiteboard-the-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bholmesdev%2Fwhiteboard-the-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bholmesdev%2Fwhiteboard-the-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bholmesdev","download_url":"https://codeload.github.com/bholmesdev/whiteboard-the-web/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252798773,"owners_count":21805879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["video"],"created_at":"2024-07-30T19:00:33.207Z","updated_at":"2025-05-07T01:46:33.073Z","avatar_url":"https://github.com/bholmesdev.png","language":"TypeScript","readme":"# Whiteboard the Web API\n\n\u003e wtw.dev/anything\n\nA serverless API built with Astro and Vercel for searching all of my YouTube videos.\n\n## Project Overview\n\nThis project implements a serverless API that enables:\n\n- YouTube video searching with cached results\n- Direct video lookups by ID\n- Automatic redirection to video URLs\n\n## Project Structure\n\n```\n/\n├── public/\n│   └── favicon.ico\n├── src/\n│   └── pages/\n│       ├── index.astro\n│       ├── videos.json.ts\n│       └── [search].ts\n├── package.json\n└── vercel.json\n```\n\n## Development Setup\n\n1. Clone the repository\n2. Install dependencies:\n   ```bash\n   pnpm install\n   ```\n3. Configure environment variables:\n   Create a `.env` file with:\n   ```\n   YOUTUBE_API_KEY=your_api_key\n   YOUTUBE_PLAYLIST_ID=your_playlist_id\n   ```\n4. Start the development server:\n   ```bash\n   pnpm run dev\n   ```\n\n## API breakdown\n\n### Direct Video Lookup (`/[search]`)\n\nRedirects to YouTube video by exact ID (ex. wtw.dev/141), or falls back to a search query (ex. wtw.dev/react-hooks or wtw.dev/react+hooks). It'll redirect to the first search result that matches.\n\n### JSON for all videos (`/videos.json`)\n\nReturns a list of all video information as JSON.\n\n## Deployment Instructions\n\n1. Fork or clone this repository\n2. Create a new project on Vercel\n3. Connect your repository\n4. Configure environment variables in Vercel:\n   - `YOUTUBE_API_KEY`\n   - `YOUTUBE_PLAYLIST_ID`\n5. Deploy!\n\n## Cache Behavior\n\nThe API implements two caching strategies:\n\n- Search results: Cached for several days to balance freshness and performance\n- Direct ID lookups: Permanently cached as video IDs are immutable\n\n## Tech Stack and Dependencies\n\n- [Astro](https://astro.build) - Web framework\n- Vercel - Serverless deployment platform\n- YouTube Data API - Video data source\n\n## Commands\n\nAll commands are run from the root of the project:\n\n| Command            | Action                                                  |\n| :----------------- | :------------------------------------------------------ |\n| `pnpm install`     | Install dependencies                                    |\n| `pnpm run dev`     | Start local dev server at `localhost:4321`              |\n| `pnpm run build`   | Check types and build your production site to `./dist/` |\n| `pnpm run preview` | Preview your build locally before deploying             |\n","funding_links":[],"categories":["TypeScript","Astro"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbholmesdev%2Fwhiteboard-the-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbholmesdev%2Fwhiteboard-the-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbholmesdev%2Fwhiteboard-the-web/lists"}