A comprehensive club management platform for FIRST Tech Challenge (FTC) teams, featuring real-time attendance tracking, task management, budget oversight, and AI-powered insights. Created by teams #10937 and #30548 Stuttgart High School.
You can install the FTC Dashboard globally via npm:
npm install -g ftc-dashboardOr run it directly using npx:
npx ftc-dashboard- Dashboard: Live club health metrics, attendance trends, and activity summaries
- Teams & Members: Manage team rosters with role-based permissions and scopes
- Attendance: Grid-based attendance tracking with AI-powered analysis
- Tasks: Kanban board for task management with completion analytics
- Budget: Income and expense tracking with financial summaries
- Outreach: Log community service hours and events
- Communications: Track emails and announcements
- Messaging: In-app chat with mention notifications
- AI Scout: Real-time FTC news and updates powered by local LLM
- WebSocket: Live updates across all connected clients
- Frontend: React + TypeScript, Tailwind CSS, Framer Motion
- Backend: Express.js with SQLite database
- AI: node-llama-cpp with local GGUF models (e.g., Phi-3.5)
- Real-time: WebSocket for live notifications and chat
- Node.js 18+
- SQLite3 (included with better-sqlite3)
- A GGUF model file (Phi-3.5 recommended, ~3GB)
Simply run the dashboard from your terminal:
npx ftc-dashboardOr, for installation:
npm install ftc-dashboardThis will guide you through the setup on your first run.
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
The app will be available at
http://localhost:3000
Create a .env file in the project root:
LLAMA_MODEL_PATH=./models/Phi-3.5-mini-instruct-Q5_K_M.gguf
MAX_TOKENS_LIMIT=1024
DISABLE_NEWS=0
OLLAMA_URL=http://localhost:11434/api/generate
OLLAMA_MODEL=phi3.5
EXA_API_KEY=your_exa_api_key_here
MAX_TOKENS_LIMIT: Maximum tokens for AI responses (default: 1024)DISABLE_NEWS: Set to1to disable the news endpoint temporarilyOLLAMA_*: For Ollama backend integration (optional)EXA_API_KEY: For web search integration (optional)
POST /api/ai/fetch-news- Get FTC/robotics news (supports?stream=true)POST /api/ai/attendance- Analyze attendance patternsPOST /api/ai/check-excuse- Evaluate absence reasonsPOST /api/ai/activity-summary- Generate club activity summaries
GET/POST /api/teams,/api/members,/api/attendance,/api/tasks,/api/budget,/api/outreach,/api/communicationsPOST /api/auth/login,/api/auth/setup,/api/auth/reset
The app uses CPU-only inference by default to avoid GPU allocation errors. For optimal performance:
- Use quantized models (Q4_K_M, Q5_K_M) to reduce memory footprint
- Phi-3.5 mini (~3-4GB) provides good balance of speed and quality
- Response generation typically takes 30-60 seconds depending on model size and hardware
SQLite database (nexus.db) stores:
- Teams and members with role-based permissions
- Attendance records with excused/unexcused tracking
- Tasks with status tracking and assignments
- Budget transactions categorized by team
- Outreach events and hours logged
- Messages and notifications with real-time WebSocket sync
- Build for production:
npm run build - Preview production build:
npm run preview - Hot Module Replacement enabled for instant feedback
GNU General Public License v3.0