Files
classroomio/apps/api/scripts/README.md
T
Rotimi Best 6d68351a46 feat: end to end api type safety with redis rate limiting (#573)
* feat: support hono rpc

* add wrangler file

* update name of wrangler file

* add wrangler as a dependency

* add compatibility_flags

* trigger ci

* core: add health check to docker file

* expose port 80

* update custom healthcheck

* feat: implement openapi

* install dependencies in root

* debug yml

* update yml

* update port

* update dockerfile with envs

* completely move away from apiClient

* rename backend to api

* refactor: update server descriptions and comment out local spec saving

* update lock file

* use api.classroomio.com

* add support for redis

* fix: add missing line break in WelcomeModal.svelte

* refactor: remove wrangler configuration and update Vite config for API integration
2025-09-21 19:35:41 +01:00

1.8 KiB

OpenAPI Spec Generator Script

This script generates the OpenAPI specification from your Hono application and optionally uploads it to a Cloudflare R2 bucket.

Usage

Generate and Upload OpenAPI spec

pnpm run upload:openapi

Direct script usage

tsx scripts/upload-openapi-spec.ts

Examples

# Generate spec locally only
pnpm upload:openapi

Environment Variables

For R2 upload functionality, set these environment variables:

CLOUDFLARE_ACCESS_KEY=your_access_key
CLOUDFLARE_SECRET_ACCESS_KEY=your_secret_key
CLOUDFLARE_ACCOUNT_ID=your_account_id

Output

The script will:

  1. Generate the OpenAPI specification from your Hono app routes
  2. Save locally to dist/openapi/openapi.json
  3. Upload to R2 (if credentials provided):
    • openapi/openapi-YYYY-MM-DD.json (dated version)
    • openapi/openapi-latest.json (latest version)

GitHub Action Integration

This script is integrated with a GitHub Action that automatically generates and uploads the OpenAPI spec on code changes.

Automatic Workflow

The GitHub Action runs on:

  • Push to main - Automatically uploads to R2
  • Pull Requests - Generates spec for review (no upload)
  • Manual dispatch - Allows manual triggering with custom parameters

Setup

  1. Required secrets:
    • CLOUDFLARE_ACCESS_KEY
    • CLOUDFLARE_SECRET_ACCESS_KEY
    • CLOUDFLARE_ACCOUNT_ID
    • PUBLIC_SUPABASE_URL
    • PUBLIC_SUPABASE_ANON_KEY

Features

  • ✅ Automatic OpenAPI spec generation from Hono routes
  • ✅ Local file generation for development
  • ✅ Cloudflare R2 upload with versioning
  • ✅ GitHub Action integration
  • ✅ Environment-specific deployments
  • ✅ PR previews and artifacts
  • ✅ Error handling and logging
  • ✅ CLI help with --help flag