YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Chainkit
Chainkit is an SEO-friendly directory for discovering and sharing public, open-source AI tools used in supply chain planning, procurement, logistics, warehousing, and visibility. Tool detail pages are rendered on the server and included in the generated sitemap.
Features
- Search and filter the directory by supply-chain category.
- Sort tools by rating, review count, and recency.
- Submit a project using its public GitHub repository URL.
- Rate tools from one to five stars; a browser can update its own rating.
- Per-tool metadata, canonical URLs, Open Graph tags,
robots.txt, andsitemap.xml. - BigQuery persistence on Google Cloud, with an in-memory sample directory for local development.
- Container deployment to Cloud Run.
The local demo directory uses real public GitHub repository links as examples; they are marked as starter data and have no pre-filled community ratings.
Run locally
Requirements: Node.js 22+ and npm.
npm ci
copy .env.example .env.local
npm run dev
Open http://localhost:3000. Without BigQuery settings the app starts in local demo mode. Local submissions and ratings are held in server memory and reset when the server restarts.
BigQuery
- Create a BigQuery dataset in the region you plan to use.
- Replace
YOUR_PROJECT_IDandYOUR_DATASETininfra/bigquery_schema.sql, then run the SQL in the BigQuery console. - Configure Application Default Credentials locally, or attach a runtime service account to Cloud Run.
- Set
BIGQUERY_PROJECT_ID,BIGQUERY_DATASET, andNEXT_PUBLIC_SITE_URL.
The runtime service account needs roles/bigquery.jobUser on the project and roles/bigquery.dataEditor on the dataset. The app uses parameterized values for BigQuery writes; project and dataset identifiers are validated before being inserted into query text.
Deploy to Cloud Run
Build and deploy the container from the repository root. Supply your canonical
domain if you already have one; otherwise omit NEXT_PUBLIC_SITE_URL on the
first deployment:
gcloud run deploy chainkit \
--source . \
--region us-central1 \
--allow-unauthenticated \
--service-account chainkit-runtime@YOUR_PROJECT_ID.iam.gserviceaccount.com \
--set-env-vars BIGQUERY_PROJECT_ID=YOUR_PROJECT_ID,BIGQUERY_DATASET=YOUR_DATASET
After deployment, set NEXT_PUBLIC_SITE_URL to the Cloud Run URL or your
canonical domain so canonical links and the sitemap match the live site:
gcloud run services describe chainkit --region us-central1 --format="value(status.url)"
gcloud run services update chainkit \
--region us-central1 \
--update-env-vars NEXT_PUBLIC_SITE_URL=https://YOUR_CANONICAL_DOMAIN
The deployer needs permission to build/deploy the service and to act as the runtime service account.
Important production considerations
- Submissions are immediately public in this starter. Add moderation or an approval workflow before opening submissions to an untrusted audience.
- Ratings use a random browser-local identifier, not an authenticated user identity. It supports repeat edits from the same browser but is not abuse-resistant; add sign-in and rate limiting before treating ratings as verified.
- The repository URL is validated and stored as a link. Chainkit does not clone, fetch, or execute submitted code.
- BigQuery is optimized for analytics rather than high-volume transactional writes. For substantial rating or submission traffic, consider a transactional store and retain BigQuery for analytics.
Project structure
src/app/ Next.js pages, SEO routes, and API endpoints
src/lib/tools.ts BigQuery adapter and local demo data
infra/ BigQuery table schema
Dockerfile Cloud Run container