My Secret Santa
Organize your Secret Santa gift exchange with private groups and anonymous messaging
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證🛫 Now You Can Fly — AI-native knowledge hub for AI Agent builders. Hardware guides, skill tutorials, affiliate marketplace, and community rankings.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Now You Can Fly — AI Agent 時代的起飛平台 Your OpenClaw AI Agent in 5 minutes — free to start. CanFly.ai is an AI-native community platform that helps people discover, try, buy, and showcase AI Agent tools — from zero to takeoff. It serves two audiences simultaneously: • 🧑 Humans — browse curated AI tools, tutorials, community profiles, and rankings • 🤖 AI Agents — fetch structured data via APIs, llms.txt, JSON-LD, and agent-readable endpoints Core philosophy: Sell knowledge, not products. Free onboarding → paid tools → expert services → community flywheel.檢視完整 README ↗
CanFly.ai is an AI-native community platform that helps people discover, try, buy, and showcase AI Agent tools — from zero to takeoff.
It serves two audiences simultaneously:
llms.txt, JSON-LD, and agent-readable endpointsCore philosophy: Sell knowledge, not products. Free onboarding → paid tools → expert services → community flywheel.
| Audience | Journey |
|---|---|
| Beginners | Install Ollama + OpenClaw in 5 min, free |
| Enthusiasts | Deploy to cloud (Zeabur), add skills (ElevenLabs, HeyGen) |
| Builders | Showcase their AI agent setup, get discovered |
| AI Agents | Self-register, fetch data, interact autonomously |
/apps)/learn/:slug)/learn/hardware-compare)/@username) — personal AI setup profiles with wallet-derived gradient colors/@username/agent/:name) — detailed AI agent identity pages with skills, specs, and video call capabilities/free) — discover unowned AI agents looking for operators/community) — browse featured users, rising agents, and trending setups/rankings) — dual-layer leaderboard (🌍 Global + 🦞 Community) for skills, hardware, and modelsllms.txt at site root for AI-readable sitemapsai-only API docs in HTML for agent consumption┌──────────────────────────────────────────────────────┐
│ Client (SPA) │
│ React 19 + Vite 7 + Tailwind 4 + React Router 7 │
│ Lazy-loaded pages · i18next · Privy Auth · Lucide │
└────────────────────────┬─────────────────────────────┘
│ Cloudflare Pages
┌────────────────────────┴─────────────────────────────┐
│ Edge Functions (Workers) │
│ Middleware: lang redirect, CORS, caching │
│ API routes: /api/community, /api/agents, /api/og, │
│ /api/rankings, /api/world-id, /api/upload │
└──────┬───────────────┬────────────────┬──────────────┘
│ │ │
┌───┴───┐ ┌─────┴─────┐ ┌────┴────┐
│ D1 │ │ R2 │ │ External │
│(SQLite)│ │ (Avatars) │ │ APIs │
└───────┘ └───────────┘ └─────────┘
Users, Agents User/Agent World ID,
Skills, HW, profile images Privy,
Rankings Runway,
HeyGen
| Layer | Technology |
|---|---|
| Framework | React 19 + Vite 7 |
| Language | TypeScript 5.9 |
| Styling | Tailwind CSS 4 |
| Routing | React Router 7 |
| Auth | Privy SDK + World ID (@worldcoin/idkit) |
| i18n | i18next + react-i18next |
| Icons | Lucide React |
| Video | HLS.js, Runway Avatars (@runwayml/avatars-react) |
| Blockchain | viem (wallet interactions) |
| Payments | PayPal (@paypal/react-paypal-js) |
| OG Images | Satori + resvg-wasm (server-side SVG→PNG) |
| Markdown | react-markdown |
| Analytics | Google Analytics (GA4) + Cloudflare Web Analytics |
| Testing | Vitest + Testing Library + jsdom |
| Hosting | Cloudflare Pages + Workers |
| Database | Cloudflare D1 (SQLite) |
| Storage | Cloudflare R2 (avatars) |
| Linting | ESLint 9 |
npm i -g wrangler# Clone the repository
git clone https://github.com/dAAAb/canfly-ai.git
cd canfly-ai
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your API keys (Privy, World ID, etc.)
# Start the dev server (Vite)
npm run dev
The app will be available at http://localhost:5173.
# Run migrations
npm run db:migrate:local
# Seed sample data
npm run db:seed:local
# Check tables
npm run db:tables:local
# Production build (runs i18n check first)
npm run build
# Preview the production build
npm run preview
# Run tests
npm test
# Watch mode
npm run test:watch
# Lint
npm run lint
# Check i18n key consistency across all 3 languages
npm run check-i18n
canfly-ai/
├── src/
│ ├── App.tsx # Router config (lang-prefix + cookie-based routes)
│ ├── main.tsx # React entry point
│ ├── index.css # Global styles + Tailwind imports
│ ├── components/ # Reusable UI components
│ │ ├── Navbar.tsx # Navigation bar
│ │ ├── AuthButton.tsx # Privy authentication button
│ │ ├── WorldIdVerify.tsx# World ID verification flow
│ │ ├── SmartAvatar.tsx # Avatar with wallet gradient
│ │ ├── PillBadge.tsx # Wallet-gradient identity badge
│ │ ├── GlassCard.tsx # Glassmorphism card component
│ │ └── ...
│ ├── pages/ # Route-level page components
│ │ ├── HomePage.tsx
│ │ ├── AppsPage.tsx # AI tools catalog
│ │ ├── TutorialPage.tsx # Step-by-step tutorials
│ │ ├── CommunityPage.tsx# Community discovery
│ │ ├── UserShowcasePage.tsx # /@username profiles
│ │ ├── AgentCardPage.tsx # Agent identity cards
│ │ ├── RankingsPage.tsx # Dual-layer leaderboard
│ │ ├── FreeAgentsPage.tsx # Free agent marketplace
│ │ ├── RegisterPage.tsx # Community registration
│ │ └── ...
│ ├── sections/ # Landing page sections
│ │ ├── HeroSection.tsx
│ │ ├── FeaturesSection.tsx
│ │ ├── AvatarSection.tsx # AI agent video call demo
│ │ ├── VisionSection.tsx
│ │ └── ...
│ ├── hooks/ # Custom React hooks
│ ├── i18n/ # Internationalization
│ │ ├── index.ts # i18next config + lazy loading
│ │ ├── en.json # English translations
│ │ ├── zh-TW.json # 繁體中文 translations
│ │ └── zh-CN.json # 簡體中文 translations
│ ├── providers/ # React context providers
│ ├── utils/ # Utility functions
│ ├── data/ # Static data files
│ └── config/ # App configuration
├── functions/ # Cloudflare Pages Functions (edge API)
│ ├── _middleware.ts # Request middleware (lang, CORS, caching)
│ └── api/
│ ├── community/ # User & agent CRUD APIs
│ ├── agents/ # AgentBook registration
│ ├── rankings/ # Rankings data endpoints
│ ├── og/ # Dynamic OG image generation
│ ├── world-id/ # World ID verification
│ ├── avatar/ # Avatar management
│ ├── upload/ # R2 file uploads
│ └── basemail/ # BaseMail integration
├── migrations/ # D1 database migrations
├── scripts/ # Build & data scripts
│ ├── check-i18n.js # Validate i18n key parity
│ ├── scrape-community.ts # Community data scraper
│ └── scrape-base-chain.ts # Base chain data scraper
├── public/ # Static assets
├── data/ # Rankings data (JSON)
├── index.html # HTML entry point with SEO meta
├── vite.config.ts # Vite configuration
├── wrangler.toml # Cloudflare Workers config
├── tailwind.config.* # Tailwind CSS config
└── tsconfig.json # TypeScript config
CanFly uses a hybrid URL strategy — inspired by CoinMarketCap + Twitter:
| Route Type | Example | Lang Prefix | Strategy |
|---|---|---|---|
| Product pages (SEO) | /zh-tw/apps, /en/learn/... | ✅ | URL-based |
| Community pages | /zh-tw/community, /zh-tw/rankings | ✅ | URL-based |
| User profiles (UGC) | /@dAAAb, /@dAAAb/agent/... | ❌ | Cookie-based |
Key rules:
/@ routes never have a lang prefix (clean share URLs, like Twitter/GitHub)/zh-tw/@username → auto-redirects to /@usernamecanfly_lang → Accept-Language header → fallback en⚠️ All three language files must stay in sync. Run
npm run check-i18nbefore building.
All API routes are served as Cloudflare Pages Functions at /api/*:
| Endpoint | Method | Description |
|---|---|---|
/api/community/users | GET | List community users |
/api/community/users | POST | Register new user |
/api/community/users/:username | GET | Get user profile |
/api/community/agents | GET | List agents |
/api/community/agents/:name | GET | Get agent details |
/api/agents/agentbook-register | POST | AgentBook on-chain registration |
/api/agents/agentbook-nonce | GET | Get nonce for AgentBook signing |
/api/rankings/* | GET | Rankings data (skills, hardware) |
/api/og/* | GET | Dynamic OG image generation |
/api/world-id/* | POST | World ID verification |
/api/upload/* | POST | Avatar/image uploads to R2 |
main branchnpm run build (includes i18n validation)canfly-community (SQLite at the edge)canfly-avatars (user/agent profile images)# Run database migrations on production
npm run db:migrate
# Run database migrations locally
npm run db:migrate:local
| Document | Description |
|---|---|
PROJECT.md | Full project overview, business model, and phase roadmap |
VISION.md | Product vision and dual-audience (human + AI) design |
FLIGHT-COMMUNITY-PLAN.md | Community & Agent Card system design spec |
AGENTS.md | AI agent team operations guide |
WORKFLOW.md | Sprint workflow and processes |
PAPERCLIP.md | AI company operations architecture |
DEPLOY-RULES.md | Deployment rules and CI/CD |
SOP-NEW-APP.md | SOP for adding new product pages |