This repository powers the official CAMEL organization website.
It is a Next.js application for presenting the CAMEL ecosystem, research, community, framework pages, blogs, and organization updates. If you are looking for the CAMEL framework itself, go to the main framework repository: camel-ai/camel.
- Website: camel-ai.org
- Framework repository: camel-ai/camel
- Documentation: docs.camel-ai.org
- Discord: discord.camel-ai.org
- Contributing guide:
CONTRIBUTING.md
This codebase contains the public-facing website for the organization, including:
- landing and product pages
- framework overview pages
- community and ambassador pages
- blog listing and blog post rendering
- localized site content
- lightweight server routes for newsletter and GitHub-backed data
The upstream CAMEL README focuses on the framework, research platform, and community mission. This repository focuses on the website that presents those initiatives and routes visitors to the framework, docs, blogs, and community channels.
- App Router site built with
Next.js - UI implemented with
React,TypeScript, andTailwind CSS - blog system backed by markdown files in
public/blogs - internationalization via
next-intl - newsletter signup endpoint using
Resend - GitHub-backed endpoints for stars, contributors, and release metadata
- reusable component library under
src/components
npm installnpm run devOpen http://localhost:3000.
npm run dev
npm run build
npm run start
npm run lint
npm run lint:fix
npm run format
npm run format:checkRecommended before opening a pull request:
npm run lint
npm run format:check
npm run buildsrc/
app/ App Router pages, layouts, and API routes
components/ Reusable UI and page components
i18n/ Internationalization setup
lib/ Utilities
store/ Client-side state stores
messages/ Translation files
public/ Static assets
public/blogs/ Blog posts and blog images
keystatic.config.ts Keystatic config
next.config.ts Next.js config, redirects, rewrites, image settings
eslint.config.mjs ESLint config
Blog posts are loaded from:
public/blogs/<slug>/index.mdpublic/blogs/<slug>/index.mdx
Each post should live in its own folder, with related images stored beside the content file.
Typical frontmatter fields include:
titlesubtitledateauthordescriptionkeywordstoccoverthumbnailfeaturedcategory
Use relative image paths such as ./cover.png so the site can resolve them correctly.
Optional author profiles can be added under:
content/authors/<slug>.yaml
This site includes a few lightweight API routes:
src/app/api/newsletter/subscribe/route.tssrc/app/api/github-stars/route.tssrc/app/api/github-contributors/route.tssrc/app/api/github-releases/route.tssrc/app/api/keystatic/[...params]/route.ts
Example newsletter request:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"email":"steve.wozniak@gmail.com","firstName":"Steve","lastName":"Wozniak"}' \
http://localhost:3000/api/newsletter/subscribeSuccessful responses return { ok: true, id }.
Please read CONTRIBUTING.md before opening a pull request.
- Design Generation Guideline — Plan and review new UI before/after implementation
- Blog Upload Guide — Step-by-step guide for adding blog posts
- Project Memory — Stack, architecture, and key file locations
In general:
- keep pull requests focused
- run lint, formatting checks, and a production build before submitting
- include screenshots for visible UI changes
- document any new environment variables or manual verification steps
- Framework: camel-ai/camel
- OWL: camel-ai/owl
- OASIS: camel-ai/oasis
- CRAB: camel-ai/crab
- LOONG: camel-ai/loong
- SETA: camel-ai/seta
This repository is licensed under Apache 2.0. See LICENSE.