## 1. Project Overview & Quickstart (APIs-guru/APIs)

# APIs

Open-source repository APIs-guru/APIs

### Repository Details
- **Repository:** [APIs-guru/APIs](https://github.com/APIs-guru/APIs)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (APIs-guru/APIs-guru.github.io)

## File: README.md

# APIs.guru Website

Visit: [https://apis.guru/](https://apis.guru/)

## Getting Started (Development)

Clone the repository and install dependencies:

```bash
git clone https://github.com/APIs-guru/APIs-guru.github.io.git
cd APIs-guru.github.io
```

Run the development server:

```bash

npm install
npm run dev
# or: yarn dev / pnpm dev / bun dev
```

Open [http://localhost:3000](http://localhost:3000) in your browser.

This project is tested with BrowserStack

---

## File: CLOUDFLARE_WORKERS.md

# Cloudflare Workers D1 Database Setup

## Prerequisites

- Node.js 18+
- Cloudflare account with Workers access
- Wrangler CLI: `npm install wrangler`

## Database Setup Commands

```bash
# Create production database
wrangler d1 create apis-guru-data

# Initialize production schema
wrangler d1 execute apis-guru-data --file=./schema.sql

# Create development database
wrangler d1 create apis-guru-data-dev

# Initialize development schema
wrangler d1 execute apis-guru-data-dev --file=./schema.sql
```

## Manual Configuration

1. Copy `database_id` from create commands
2. Update `wrangler.toml` with production and development `database_id`

## Next Steps

```bash
# Deploy Workers
wrangler deploy

# Start development server
wrangler dev

# Test API endpoint
curl -X POST http://localhost:8788/api/sync-apis
```

---

## File: components.json

{
  "$schema": "https://ui.shadcn.com/schema.json",
  "style": "new-york",
  "rsc": true,
  "tsx": true,
  "tailwind": {
    "config": "",
    "css": "app/globals.css",
    "baseColor": "neutral",
    "cssVariables": true,
    "prefix": ""
  },
  "aliases": {
    "components": "@/components",
    "utils": "@/lib/utils",
    "ui": "@/components/ui",
    "lib": "@/lib",
    "hooks": "@/hooks"
  },
  "iconLibrary": "lucide"
}

---

## File: package.json

{
  "name": "apis-guru",
  "version": "2.0.0",
  "private": true,
  "scripts": {
    "dev": "next dev --turbopack",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "export": "next build",
    "postbuild": "next-sitemap",
    "prettier": "prettier --write .",
    "preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
    "deploy": "NEXT_PUBLIC_SITE_ENV=production opennextjs-cloudflare build && opennextjs-cloudflare deploy",
    "deploy:preview": "NEXT_PUBLIC_SITE_ENV=development opennextjs-cloudflare build && npx wrangler versions upload --env=preview",
    "cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
    "prettier:check": "prettier --check .",
    "test": "npm run lint && npm run prettier:check"
  },
  "dependencies": {
    "@algolia/client-search": "^5.35.0",
    "@cloudflare/workers-types": "^4.20250810.0",
    "@hookform/resolvers": "^5.2.1",
    "@next/third-parties": "^15.4.6",
    "@opennextjs/cloudflare": "^1.6.5",
    "@portabletext/react": "^3.2.1",
    "@radix-ui/react-accordion": "^1.2.12",
    "@radix-ui/react-avatar": "^1.1.10",
    "@radix-ui/react-dialog": "^1.1.14",
    "@radix-ui/react-dropdown-menu": "^2.1.16",
    "@radix-ui/react-label": "^2.1.7",
    "@radix-ui/react-radio-group": "^1.3.7",
    "@radix-ui/react-select": "^2.2.5",
    "@radix-ui/react-slot": "^1.2.3",
    "@sanity/client": "^7.8.2",
    "@sanity/code-input": "^5.2.1",
    "@sanity/image-url": "^1.1.0",
    "@sanity/orderable-document-list": "^1.4.0",
    "@sanity/preview-url-secret": "^2.1.14",
    "@sanity/ui": "^2.16.12",
    "@sanity/vision": "^3.99.0",
    "@sentry/cloudflare": "^10.5.0",
    "@sentry/nextjs": "^10.4.0",
    "@tailwindcss/typography": "^0.5.16",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "drizzle-orm": "^0.44.4",
    "embla-carousel-react": "^8.6.0",
    "lucide-react": "^0.525.0",
    "marked": "^16.0.0",
    "motion": "^12.23.12",
    "next": "15.3.4",
    "next-sanity": "^10.0.10",
    "next-sitemap": "^4.2.3",
    "next-themes": "^0.4.6",
    "postcss": "^8.5.6",
    "prism-react-renderer": "^2.4.1",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "react-hook-form": "^7.62.0",
    "react-instantsearch": "^7.16.2",
    "react-instantsearch-nextjs": "^1.0.1",
    "react-json-tree": "^0.20.0",
    "react-markdown": "^10.1.0",
    "react-player": "^3.3.1",
    "redoc": "^2.5.0",
    "rehype-raw": "^7.0.0",
    "remark-gfm": "^4.0.1",
    "resend": "^4.8.0",
    "sanitize-html": "^2.17.0",
    "sanity": "^4.5.0",
    "sass": "^1.89.2",
    "sonner": "^2.0.7",
    "tailwind-merge": "^3.3.1",
    "tailwindcss-animate": "^1.0.7",
    "vaul": "^1.1.2",
    "zod": "^4.0.10"
  },
  "devDependencies": {
    "@eslint/eslintrc": "^3",
    "@tailwindcss/postcss": "^4",
    "@types/node": "^20",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "@types/sanitize-html": "^2.16.0",
    "eslint": "^9",
    "eslint-config-next": "15.3.4",
    "prettier": "^3.6.2",
    "tailwindcss": "^4",
    "tw-animate-css": "^1.3.4",
    "typescript": "^5"
  }
}

---

## File: tsconfig.json

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "paths": {
      "@/*": ["./*"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}

---

## File: public/_routes.json

{
  "version": 1,
  "include": ["/api/*"],
  "exclude": [
    "/build/*",
    "/assets/*",
    "/_next/*",
    "/out/*",
    "/static/*",
    "/*.js",
    "/*.css",
    "/*.png",
    "/*.jpg",
    "/*.jpeg",
    "/*.gif",
    "/*.svg",
    "/*.ico",
    "/*.woff",
    "/*.woff2",
    "/*.ttf",
    "/*.eot"
  ]
}