icogn is a mobile-first internal leadership learning platform focused on memory, judgment, argumentation, decision-making, and public expression through AI-assisted practice.
- React
- TypeScript
- Vite
- Tailwind CSS
- Firebase Hosting
- Cloud Firestore
- Groq as the first LLM provider
- Provider-agnostic AI layer prepared for OpenAI and Anthropic
- Public landing page for private/internal cohort access
- Dark, mobile-first interface
- Firestore repositories isolated from UI components
- AI provider and model selection exposed in the profile layer
- Firebase-ready frontend structure with direct browser AI for the private prototype
src/
app/
components/
features/
auth/
home/
learning/
speech/
decision/
profile/
lib/
ai/
firebase/
learning/
types/
docs/
- Install dependencies:
npm install- Copy environment variables:
cp .env.example .env.local-
Fill in the Firebase web config,
VITE_GROQ_API_KEY, and default AI settings in.env.local. -
Start the app:
npm run devThe repo is already configured for the Firebase project:
civicmind-ctenucxj
Helpful commands:
npm run firebase:build
npm run firebase:deploy:firestore
npm run firebase:deploy:hosting
npm run firebase:deploy:all
npm run firebase:deployAdmin seed scripts are available for local development and use the Firebase Admin SDK.
- Create a local seed env file:
cp .env.seeds.example .env.seeds.local- Fill in:
FIREBASE_PROJECT_ID=
FIREBASE_CLIENT_EMAIL=
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
SEED_USER_ID=demo-user
SEED_ACCESS_CODE=CIVIC-DEMO-001- Run individual scripts:
npm run seed:access-codes
npm run seed:learning-items
npm run seed:decision-scenarios
npm run seed:profile- Or run the full development seed:
npm run seed:devThe seed set includes:
- access code
CIVIC-DEMO-001 - demo learning items across democracy, leadership, negotiation, public speaking, product strategy, systems thinking, ethics, economics, civic institutions, and argumentation
- demo decision scenarios
- a demo profile memory record
- Do not commit
.env.local - Do not commit Firebase or Groq secrets
- Keep frontend config in Vite env vars
- For this private prototype, Groq is called directly from the browser via
VITE_GROQ_API_KEY - Do not treat
VITE_GROQ_API_KEYas a long-term secure secret
- Firestore database created and deployed
- Firebase Hosting deployed
- Public landing page implemented
- Firestore data model and repositories implemented
- Provider/model selection surfaced in the profile UI
- AI flows run directly against Groq in the browser to remain compatible with Firebase Spark