Your curiosity engine for discovering, deep-diving, tracking, and applying what you learn.
Explore freely, build a living knowledge tree, learn with groups, and connect your interests to real-world opportunities.
Quick Start · Features · How It Works
Most learning apps are linear and forgettable:
- You browse content, but don’t build an identity around what you’ve explored.
- You can’t easily shift from “casual curiosity” to “intentional mastery.”
- There’s weak continuity between exploration, review, and real-world application.
Spark is built to make curiosity feel alive, cumulative, and actionable.
Spark is a curiosity-first learning experience with five connected loops:
- Explore ideas through search, discovery cards, and FreeFall swipes.
- Deep dive with AI explainers, quizzes, and interactive follow-up questions.
- Save tracks and move threads into deliberate mastery/review workflows.
- Visualize growth in a living profile tree, timeline, and streak systems.
- Connect to the world via opportunity recommendations tied to your thread fingerprint.
Core loop: Discover → Save → Deepen → Review → Apply → Discover again.
Try Spark instantly — no install required:
https://lillianwang112.github.io/spark/
Boot with a demo profile to see everything in action:
https://lillianwang112.github.io/spark/?demo=alex— College STEM studenthttps://lillianwang112.github.io/spark/?demo=maya— High school arts studenthttps://lillianwang112.github.io/spark/?demo=james— Adult humanities learner
Use Shift + 1 / 2 / 3 to switch profiles live.
git clone https://github.com/lillianwang112/spark.git
cd spark
npm install
cp .env.example .env # add your API keys
npm run dev- Search-driven exploration with AI-assisted follow-up prompts
- Discovery card flow and “surprise me” exploration direction
- FreeFall swipe mode for fast serendipitous topic intake
- “Explore freely” world picker plus spotlight topic expansion
- Topic explainers generated in-context from your profile
- Inline quick quiz support
- Multiple discovery/deep-dive interaction paths
- Save any interesting node as a track
- Track care/tend/master progress
- Review workflows for sustained retention
- Create or join collaborative topic groups
- Shared syllabus-like group progression
- Demo group seeds included for side-by-side product demos
- Opportunity suggestions generated from your thread fingerprint
- Persisted opportunity run history
- Demo mode preloads history for immediate storytelling
- Living tree visualization
- Journey timeline (tracks + searches + sessions)
- Streaks, activity calendar, and domain constellation
- Demo-ready profile data with rich historical depth
- URL boot support:
?demo=alex,?demo=maya,?demo=james - Floating demo switcher and hotkeys (
Shift + 1/2/3) - Seeded tracks/sessions/searches/groups/opportunity history for each persona
- Global Light/Dark mode toggle
- Theme preference persisted in localStorage
- Theme-aware shell and key screens/components
User explores topics
↓
Spark builds curiosity fingerprint (domains + tracks + behavior)
↓
User deep-dives / saves tracks / reviews knowledge
↓
Profile tree + timeline + streaks update over time
↓
Opportunities engine maps learning threads to real-world next steps
| Layer | Technology |
|---|---|
| Frontend | React + Vite |
| Styling | Tailwind CSS + custom CSS variables |
| Motion | Framer Motion |
| AI Integration | Claude API and/or Puter backend modes |
| Auth/Data Sync | Firebase (optional config) |
| Local Persistence | localStorage-based state/history/demo bootstrapping |
- Toggle from the top bar (
🌙 Dark/☀ Light) - Stored as
spark_themein localStorage
- Boot directly with query params:
http://localhost:5173/?demo=alexhttp://localhost:5173/?demo=mayahttp://localhost:5173/?demo=james
- Demo mode seeds profile state and related history keys for a complete 2-minute walkthrough
Copy .env.example to .env and configure as needed.
cp .env.example .envKey options include:
VITE_AI_BACKEND=puter|claudeVITE_ANTHROPIC_API_KEY=...(when using Claude backend)- Firebase config values (optional)
src/
├── ai/ # AI prompt and service orchestration
├── components/ # UI primitives and feature components
│ ├── discovery/
│ ├── explainer/
│ ├── freefall/
│ ├── layout/
│ ├── mastering/
│ ├── profile/
│ ├── search/
│ ├── tracks/
│ └── tree/
├── data/ # Seed/demo data and course datasets
├── hooks/ # Context and state hooks
├── models/ # Domain models (elo, srs, user context)
├── pages/ # Main app surfaces (Explore, Tracks, Groups, etc.)
├── services/ # API/storage/topic graph integrations
├── styles/ # Global + animation styles
└── utils/ # Constants, helpers, and seed utilities
npm run dev # Start Vite app
npm run dev:api # Start local API server
npm run build # Production build
npm run preview # Preview production build
npm run lint # ESLintSpark is designed as a curiosity-first learning system that combines discovery, mastery, social learning, and real-world application in one continuous loop.
If you’re building on this repo: fork it, theme it, and make it your own.
