Every subject is a cosmos. Enter it.
EverNodes is an interactive, AI-powered knowledge mapping tool. Enter any topic and it instantly generates a beautifully visualized, hierarchical graph of concepts β powered by Groq (Llama 4 Scout) on the backend and vis.js on the frontend. Explore concepts node by node, dive deeper into any subject, mark what you've learned, and save your progress.
| Feature | Description |
|---|---|
| Dynamic Knowledge Maps | AI generates structured topic trees with root, concept, detail, and deep nodes |
| Interactive Graph | Click to preview, double-click to enter, drag to rearrange any node |
| Structure Map Tab | Live flowchart sidebar showing the full graph hierarchy β scrollable in both directions, color-coded by node type, click any node to focus it |
| Deep Dive | Double-click or dive button on any node to generate an AI sub-tree for that concept |
| Fuzzy Topic Cache | Server-side + client-side caching with similarity matching β entering "ML" or "machine learning" reuses the same cached map, saving Groq tokens |
| Mark Learned | Track your progress per node with confetti + particle bursts |
| Saved Maps | Auto-save + manual save to localStorage; searchable sidebar |
| Three Depth Levels | Beginner, Intermediate, Expert β each uses tailored prompts and token budgets |
| Starfield UI | Animated cosmic background with nebulae and twinkling stars |
| Congratulations Overlay | Shooting star animation when you learn every node on a map |
| Layer | Technology |
|---|---|
| Backend | Python 3 Β· Flask Β· Groq Python SDK |
| AI Model | meta-llama/llama-4-scout-17b-16e-instruct via Groq Cloud |
| Graph Rendering | vis.js β hierarchical network layout |
| Frontend | Vanilla JS Β· SVG Β· CSS custom properties |
| Fonts | Syne Β· DM Sans Β· JetBrains Mono (Google Fonts) |
| Persistence | Browser localStorage for saved maps Β· Server in-memory cache for tokens |
git clone https://github.com/your-username/EverNodes.git
cd EverNodespip install -r requirements.txtrequirements.txt includes:
flask
groq
python-dotenv
Sign up at console.groq.com β the free tier is generous for personal use.
Create a .env file in the project root:
GROQ_API_KEY=gsk_your_key_herepython app.pyOpen http://127.0.0.1:5000 in your browser.
- Type any learnable topic in the text area (e.g. "Quantum Mechanics", "Jazz Theory", "Ancient Rome")
- Optionally describe what you already know
- Select Beginner, Intermediate, or Expert
- Click Generate Map
- Click a node β preview in the bottom info panel
- Double-click a node β open the Portal (full detail view with child cards)
- Drag nodes β rearrange the layout (auto-saved)
- Scroll / pinch β zoom in and out
- βΉ Reset View β fit all nodes back into viewport
- βΊ Reset Structure β snap nodes back to original AI-generated positions
- Click β Map in the top-right to toggle the sidebar
- The sidebar shows a live top-down flowchart of the entire current graph
- Root node at the top; concept, detail, and deep nodes spread downward
- Color-coded by node type (gold = root, cyan = concept, green = detail, purple = deep, white = learned)
- Click any node in the sidebar to focus it in the main graph and open its panel
- The flowchart scrolls both vertically and horizontally for large maps
Click β¬’ Dive Deeper on any non-root node (panel or portal) to generate an AI sub-tree for that specific concept. The breadcrumb trail in the top bar shows your dive path and lets you navigate back to any level.
- Toggle Auto-save in the top bar (on by default β saves 5 seconds after any change)
- Click β¦ Save Map to save immediately
- Open the hamburger menu (β°) on the home screen to browse, search, and load saved maps
EverNodes/
βββ app.py # Flask backend β Groq API, caching, JSON validation
βββ requirements.txt
βββ .env # Your GROQ_API_KEY (not committed)
βββ .gitignore
βββ README.md
βββ static/
β βββ script.js # All frontend logic β graph, portal, structure map, dives
β βββ style.css # Full UI design system (dark cosmic theme)
βββ templates/
βββ index.html # Single-page app shell
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Serve the frontend |
POST |
/everNodes |
Generate a knowledge map for a topic |
POST |
/deepDive |
Generate a sub-tree for a specific node |
POST |
/cache/clear |
Clear the server-side topic cache |
GET |
/cache/stats |
View currently cached topics and their levels |
{
"goal": "Machine Learning",
"prior": "Basic Python, some statistics",
"level": "intermediate"
}{
"topic": "Gradient Descent",
"parent": "Optimization",
"level": "intermediate",
"detail": "Existing node detail text for contextβ¦"
}EverNodes uses a two-layer caching system to minimize Groq API usage:
- Exact match: same topic + level returns instantly
- Fuzzy match (new): checks substring containment, word-set overlap (β₯ 75%), and sequence similarity (β₯ 82%) β so "ML", "machine learning", and "Machine Learning basics" all resolve to the same cached map
- Response includes
matched_topicso the UI can inform you which cached entry was used
- Stores up to 20 topic/level pairs in the browser session
- Bypasses the server entirely for repeated lookups within the same browser tab
| Level | Max tokens |
|---|---|
| Beginner | 5,000 |
| Intermediate | 7,000 |
| Expert | 8,192 |
The backend validates all inputs before sending to Groq:
- Rejects topics shorter than 3 characters
- Rejects pure numeric or symbol input
- Rejects repeated-character sequences (
"aaaaaaa") - Detects and rejects consonant-only gibberish
- All JSON from the LLM is sanitized, repaired (trailing commas, unclosed brackets, unescaped quotes, smart quotes), and validated before returning to the client
| Category | Color | Meaning |
|---|---|---|
| Root | Gold | The top-level topic you entered |
| Concept | Cyan | Major sub-topics or key ideas (tier 1) |
| Detail | Green | Specific facts or sub-concepts (tier 2) |
| Deep | Purple | Advanced or niche details (tier 3+) |
| Learned | White | Any node you've marked as learned |
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature - Open a Pull Request
Bug reports and suggestions are welcome via GitHub Issues.
This project is licensed under the terms in the LICENSE file.
- Groq β blazing-fast LLM inference
- Meta Llama 4 β the model powering all AI generation
- vis.js β network graph rendering
- Google Fonts β Syne, DM Sans, JetBrains Mono
Built with β¦ and curiosity.