Your Knowledge Casita - A second brain for mastering complex topics through structured, gamified learning.
Kasita (a play on "casita" - Spanish for "little house") is a comprehensive Knowledge Acquisition System (KAS) designed to help you rapidly master complex technical topics and convincingly demonstrate expertise in any social or professional setting.
Just as a casita is an auxiliary structure adjacent to your main house, Kasita serves as an auxiliary knowledge structure adjacent to your main brain - a personalized, focused learning space where knowledge is systematically acquired, retained, and deployed.
Kasita is built on a simple but powerful premise: the majority of what is discussed on any topic (80%) is covered by a solid understanding of core principles (20%).
Rather than attempting to master everything about a subject, Kasita helps you identify and internalize the high-signal concepts that professionals actually discuss, enabling you to:
- Infiltrate technical conversations with confidence
- Convince others of your expertise through quality of delivery
- Retain knowledge through scientifically-proven spaced repetition
- Progress from memorization to mastery through structured phases
The flagship learning approach in Kasita is called Infiltrate - a three-phase system for absorbing the most essential concepts of a topic:
Master core principles through flashcards and spaced repetition. Focus on committing the fundamental concepts to memory with precision.
Practice articulating these principles out loud. Build confidence in your ability to explain concepts clearly and naturally without reading.
Demonstrate understanding through whiteboard explanations and elaboration. Prove you can teach the concept to others and answer follow-up questions.
This methodology draws inspiration from interview preparation but extends beyond it - you're not just preparing for a specific event, you're building durable expertise.
- Spaced repetition algorithm (SM-2) for optimal review timing
- Multiple formats: flashcards, quizzes, challenges, games
- Track mastery levels from "learning" to "expert"
- Curated progressions through knowledge domains
- Prerequisite tracking and dependency management
- Hierarchical topic organization (Domain → Topic → Knowledge Unit)
- Session tracking and performance metrics
- Identify weak spots and strong domains
- Streak tracking and time-based insights
- Personal learning pattern analysis
- Achievement system for milestones
- Leaderboards for competitive learning
- Multiple game formats for engagement
- Point multipliers and challenge modes
- Interactive 3D visualization using Three.js
- Related concept linking
- Prerequisite mapping
- Multiple learning paths to the same knowledge
- Bloom's taxonomy cognitive level tracking
- Graph search and exploration
- Study anywhere, any device
- Progressive Web App support
- Offline-capable flashcard decks
- Export to Anki, Quizlet, PDF, and more
kasita/
├── apps/
│ ├── infiltrate/ # Infiltrate flashcard application (Angular)
│ ├── infiltrate-e2e/ # E2E tests for infiltrate
│ ├── dashboard/ # Analytics and progress tracking (Angular)
│ ├── dashboard-e2e/ # E2E tests for dashboard
│ ├── api/ # Backend API services (NestJS)
│ ├── api-e2e/ # E2E tests for API
│ ├── patchbay/ # Python content ingestion service
│ └── synthesizer/ # Python content processing service
├── libs/
│ ├── common-models/ # Shared data models and types
│ ├── core-data/ # HTTP client services
│ ├── core-state/ # NgRx feature slices and state management
│ ├── material/ # Angular Material UI components
│ └── python-shared/ # Shared Python utilities
├── tools/ # Custom Nx generators
│ ├── ng-http-service-generator/ # HTTP service generator
│ ├── ngrx-feature-generator/ # NgRx feature generator
│ └── nx-master-detail-view/ # Master-detail view generator
├── data/ # Data storage
│ ├── raw/ # Ingested raw content
│ ├── processed/ # Processed content (embeddings, clusters)
│ └── synthesized/ # Generated knowledge units
└── guides/ # Documentation and guides
- Angular 21 - Component-based UI framework with standalone components
- NgRx - State management with Store, Effects, and Entity
- Angular Material - UI component library
- Tailwind CSS - Utility-first CSS framework
- Three.js - 3D graphics for knowledge graph visualization
- Cytoscape.js - Graph visualization library
- D3.js - Data visualization library
- NestJS - Backend API framework with Express
- TypeORM - ORM for database access
- SQLite - Local development database (via libSQL/Turso)
- Passport.js - Authentication middleware
- JWT - JSON Web Tokens for authentication
- Socket.io - WebSocket support for real-time updates
- Python 3.11+ - Content processing services
- uv - Fast Python package manager
- sentence-transformers - Text embeddings
- Anthropic Claude API - LLM for content generation
- TypeScript - Type-safe development across the entire stack
- Nx 22 - Monorepo management and build optimization
- Vitest - Unit testing framework
- Jest - Testing framework for API
- Playwright - End-to-end testing
- ESLint - Code linting
- Prettier - Code formatting
Kasita's data model is built around several core concepts:
- User accounts with email/password authentication
- Role-based access control (guest, user, manager, admin)
- JWT-based session management
- User profiles and preferences
The atomic building blocks of learning - a single concept, question, and answer with supporting context (examples, analogies, common mistakes, sources).
Structured progressions through knowledge with phases, completion criteria, and estimated time commitments. Infiltrate decks are a specialized type of learning path.
Global content sources (RSS feeds, articles, newsletters) that can be configured for automatic ingestion. Supports archive parsing and scheduled updates.
Ingested content from data sources before processing. Stored with metadata, timestamps, and source references.
Different ways to engage with knowledge: flashcards, quizzes, games, whiteboard challenges, verbal recitation. Each activity type has custom configuration and tracks progress independently.
Granular tracking of mastery levels, spaced repetition scheduling (SM-2 algorithm), attempt history, and performance analytics.
Graph-based representation of knowledge relationships. Tracks prerequisites, related concepts, and learning paths through the knowledge space.
See libs/common-models for the complete TypeScript definitions.
- Node.js 18+
- npm or yarn
- Python 3.11+ (for Patchbay and Synthesizer services)
- uv (Python package manager) - install via:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/onehungrymind/kasita.git
cd kasita
# Install dependencies
npm install
# Start development servers
npm run serve:infiltrate # Start infiltrate app (default: http://localhost:4200)
npm run serve:dashboard # Start dashboard app
npm run serve:api # Start API serverDevelopment:
npm run serve:infiltrate- Start infiltrate appnpm run serve:dashboard- Start dashboard appnpm run serve:api- Start API servernpm start/npm run dev- Start infiltrate (default)
Building:
npm run build:infiltrate- Build infiltrate appnpm run build:dashboard- Build dashboard appnpm run build:api- Build API servernpm run build:prod:infiltrate- Production build for infiltratenpm run build:prod:dashboard- Production build for dashboardnpm run build:prod:api- Production build for API
Testing:
npm run test:infiltrate- Run infiltrate unit testsnpm run test:dashboard- Run dashboard unit testsnpm run test:api- Run API unit testsnpm run e2e:infiltrate- Run infiltrate E2E testsnpm run e2e:dashboard- Run dashboard E2E testsnpm run e2e:api- Run API E2E tests
Code Quality:
npm run lint:infiltrate- Lint infiltrate appnpm run lint:dashboard- Lint dashboard appnpm run lint:api- Lint API servernpm run format- Format all codenpm run format:check- Check code formatting
Infiltrate App: The main flashcard application for learning ML/AI concepts. See the Infiltrate README for detailed documentation.
Dashboard App: Administration and analytics interface for tracking learning progress, managing knowledge units, users, data sources, and viewing interactive knowledge graphs. Features master-detail views for all entities and role-based access control.
API Server: Backend REST API built with NestJS for managing data, authentication (JWT), and serving the frontend applications. Includes WebSocket support for real-time updates and a knowledge graph service for relationship queries.
Patchbay (Python): Content ingestion service that fetches content from RSS feeds, articles, and other sources. Stores raw content via API for further processing.
Synthesizer (Python): Content processing service that generates embeddings, clusters content, and creates knowledge units using LLMs. Transforms raw content into structured learning materials.
Shared Libraries:
@kasita/common-models- Shared data models and types@kasita/core-data- HTTP client services for API communication@kasita/core-state- NgRx feature slices for state management
Load system design concepts, coding patterns, and behavioral questions into Infiltrate decks. Progress through memorization → recitation → whiteboard phases to build genuine confidence.
When joining a new team or learning a new framework, create knowledge units for core concepts, best practices, and team-specific patterns.
Build deep knowledge of your talk topic by creating units for every concept you'll discuss, ensuring you can handle any audience question.
Import certification exam topics into Kasita, track mastery levels, and use spaced repetition to ensure long-term retention beyond the exam date.
- Core data model definition (
common-models) - Infiltrate flashcard web application (Angular)
- Dashboard application (Angular) with master-detail views
- API server (NestJS) with full CRUD operations
- Core data library for HTTP services
- Core state library for NgRx state management
- User authentication and profiles (JWT)
- Role-based access control (RBAC)
- SQLite backend with TypeORM
- Knowledge graph module and API
- Graph visualization (Three.js, Cytoscape.js, D3.js)
- Data sources management
- Python content ingestion service (Patchbay)
- Python content processing service (Synthesizer)
- Custom Nx generators for rapid development
- Complete analytics dashboard implementation
- Learning path creation UI
- Export to Anki/Quizlet
- Mobile-responsive improvements
- Whiteboard challenge interface
- Full ingestion pipeline integration
- Real-time progress updates via WebSocket
- Gamification system
- Leaderboards and achievements
- Community-contributed knowledge units
- Enhanced AI-assisted knowledge unit generation
- Voice recording for recitation phase
- Advanced graph search and filtering
- Native mobile applications
- Collaborative learning paths
- Integration with Obsidian/Notion
- Advanced analytics and ML-powered insights
- Marketplace for premium learning paths
- PostgreSQL migration for production
Focus on high-signal concepts that provide maximum conversational coverage. Quality over quantity.
Move through distinct phases: memorize → recite → perform → teach. Each phase builds genuine capability.
Knowledge that sticks requires strategic review intervals. Kasita handles the scheduling so you focus on learning.
The goal isn't just to know something, it's to convincingly demonstrate expertise in real situations - interviews, meetings, conversations.
Kasita is auxiliary to your main thinking, not a replacement for it. It's a structured space for deliberate knowledge acquisition.
Learning happens everywhere. Kasita works on any device, any time, optimized for quick study sessions and deep dives alike.
Kasita is open source and contributions are welcome! Whether you're:
- Adding knowledge units for popular topics
- Building new activity types or game formats
- Improving the spaced repetition algorithm
- Creating learning path templates
- Enhancing the UI/UX
Please see CONTRIBUTING.md for guidelines.
Kasita emerged from a personal need to rapidly acquire expertise in AI/ML engineering after years of DevOps and traditional software engineering. The "Infiltrate" methodology was born from the realization that most technical conversations revolve around a core set of principles, and mastering those principles with confidence is more valuable than surface-level knowledge of everything.
The name "Kasita" reflects the goal: create a personal, focused learning space adjacent to your main knowledge - your second brain, where systematic learning happens.
MIT License - see LICENSE for details.
- Inspired by spaced repetition pioneers like Piotr Woźniak (SuperMemo/SM-2 algorithm)
- Influenced by Bloom's Taxonomy for cognitive skill progression
- Built for learners who want to move fast and retain knowledge
- Named after the humble casita - a small structure with big purpose
Built with 🧠 by Lukas Ruebbelke
"The casita isn't the main house, but it's where the magic happens."