尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证The frontend application for Flashcastr - a social app for sharing Space Invader flashes
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A Farcaster Frame application for broadcasting and viewing Space Invaders flash photos, with a real-time global feed.查看完整 README ↗A Farcaster Frame application for broadcasting and viewing Space Invaders flash photos, with a real-time global feed.
image_url fieldimage_url server-side (Backblaze B2 for migrated flashes, a
legacy origin fallback for older ones, null when neither is available)git clone https://github.com/gitpancake/flashcastr.git
cd flashcastr
npm install
cp .env.example .env
Configure your .env file with your actual values:
openssl rand -base64 32Run the development server:
npm run dev
Open http://localhost:3000 to see the application.
src/
├── app/ # Next.js app router pages
│ ├── api/ # API routes
│ ├── flash/[id]/ # Individual flash page
│ ├── profile/ # User profile pages
│ └── page.tsx # Homepage
├── components/ # React components
│ ├── atom/ # Atomic components
│ ├── molecule/ # Molecular components
│ ├── organism/ # Organism components
│ └── ui/ # shadcn/ui components
├── hooks/ # Custom React hooks
├── lib/ # Utility libraries
│ ├── api.flashcastr.app/ # Flashcastr API client (unified API)
│ ├── neynar/ # Neynar/Farcaster API client
│ ├── help/ # Helper utilities
│ └── constants.ts # App constants
└── auth.ts # NextAuth configuration
Flash images are resolved server-side by the Flashcastr API, not constructed by the client:
null, and the client renders a placeholder instead of a broken imageThe getImageUrl() utility is a pass-through of the API's image_url field:
const imageUrl = getImageUrl(flash);
// Returns flash.image_url, or "" if the API has no resolvable image for this flash
Flash Data Structure:
interface FlashData {
flash_id: number;
player: string;
city: string;
timestamp: number;
img: string; // Legacy field for backwards compatibility
ipfs_cid?: string; // IPFS content identifier (legacy)
image_url: string | null; // Resolved image URL from the API
}
Global Flash Structure:
interface GlobalFlash {
flash_id: number;
player: string;
city: string;
text: string;
timestamp: number;
img: string;
ipfs_cid?: string; // Legacy IPFS content identifier
image_url: string | null; // Resolved image URL from the API
}
npm run dev - Start development servernpm run build - Build for productionnpm run start - Start production servernpm run lint - Run ESLintnpm run deploy:vercel - Deploy to VercelThe app uses multiple environment files:
.env - Your local configuration (gitignored for security).env.example - Template showing all required variablesnpm run deploy:vercel
This will:
npm run build
Set environment variables on your hosting platform
Start the production server:
npm start
All required environment variables are documented in .env.example. Copy it to .env and configure with your values.
| Variable | Description | Example |
|---|---|---|
NEYNAR_API_KEY | Neynar API key for Farcaster integration | Get from neynar.com |
NEYNAR_CLIENT_ID | Neynar client ID from dashboard | ca507e6f-5287-... |
NEXTAUTH_URL | Your app's public URL | https://your-app.vercel.app |
NEXTAUTH_SECRET | JWT signing secret | Generate with openssl rand -base64 32 |
NEXT_PUBLIC_URL | Public URL for the app | Same as NEXTAUTH_URL |
FLASHCASTR_API_KEY | API key for Flashcastr backend | Contact team for access |
NEXT_PUBLIC_FLASHCASTR_API_URL | Flashcastr API endpoint | http://localhost:4000 (dev) |
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_FRAME_NAME | App name displayed in frame | Flashcastr |
NEXT_PUBLIC_FRAME_DESCRIPTION | Frame description | Broadcast your Space Invader flashes. |
NEXT_PUBLIC_FRAME_BUTTON_TEXT | Frame button text | Enter |
| Variable | Description | Required |
|---|---|---|
REDIS_URL | Redis connection for caching | Production only |
KV_REST_API_URL | Vercel KV store URL | Optional |
KV_REST_API_TOKEN | Vercel KV store token | Optional |
NEXT_PUBLIC_ADMIN_FID | Admin Farcaster ID for special features | Optional |
USE_TUNNEL | Enable localtunnel for development | Optional |
git checkout -b feature/amazing-featuregit commit -m 'Add amazing feature'git push origin feature/amazing-featureThis project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ for the Space Invaders community