Skip to content

Latest commit

Β 

History

History
119 lines (93 loc) Β· 3.55 KB

File metadata and controls

119 lines (93 loc) Β· 3.55 KB

Study Notes

A structured knowledge base with an interactive web interface. Built for efficient learning, quick reference, and interview preparation.

View Online: haoweichan.github.io/study-notes

What's Inside

πŸ“š Knowledge Base β€” Notes on Algorithms, System Design, Machine Learning (AdTech focus), and Agentic AI.

🧠 Active Learning β€” 120+ Flashcards and Quizzes with real-time search, category filtering, dark mode, bookmarks, and spaced repetition.

⚑ Clean Architecture β€” Markdown-first notes with auto-extracted flashcards/quizzes, automated linting, and GitHub Pages deployment via React/Vite.

Repository Structure

study-notes/
β”œβ”€β”€ web/                     # React + Vite Web Application
β”‚   β”œβ”€β”€ src/                 # Frontend source code
β”‚   └── public/              # Static assets
β”œβ”€β”€ docs/                    # Deployment target (GitHub Pages)
β”‚   β”œβ”€β”€ artifacts/           # Auto-generated JSON data
β”‚   └── notes/               # Copied markdown content
β”œβ”€β”€ notes/                   # Source Markdown notes
β”‚   β”œβ”€β”€ algorithm/           # Algorithms & data structures
β”‚   β”œβ”€β”€ devops/              # DevOps & infrastructure
β”‚   β”œβ”€β”€ system-design/       # System architecture
β”‚   β”œβ”€β”€ machine-learning/    # ML (AdTech, RecSys)
β”‚   β”œβ”€β”€ leetcode/            # Coding problem solutions
β”‚   └── agentic/             # AI Agents, RAG, GenAI
β”œβ”€β”€ templates/               # Note templates
β”œβ”€β”€ scripts/                 # Automation scripts
β”‚   β”œβ”€β”€ new_note.sh          # Create new notes
β”‚   β”œβ”€β”€ deploy_web.sh        # Build & Deploy script
β”‚   β”œβ”€β”€ export_notes_index.py # Index notes for WebUI
β”‚   └── ...
└── .github/workflows/       # CI/CD for linting

Usage

Creating New Notes

Use the provided helper script to create new notes from the template:

./scripts/new_note.sh "Title of note" <category> [slug]

Available Categories:

  • algorithm β€” Algorithms & data structures
  • devops β€” Infrastructure & DevOps
  • system-design β€” System architecture
  • machine-learning β€” ML & AI
  • leetcode β€” Coding problems
  • agentic β€” AI agents & automation

Examples:

./scripts/new_note.sh "Binary Search Tree" algorithm
./scripts/new_note.sh "Design Real-Time Bidding" system-design
./scripts/new_note.sh "RAG Architectures" agentic

Adding Content

Flashcards:

- What is the time complexity of binary search? ::: O(log n)

Quizzes:

## Quizzes
Q: Question?
Options:
- A) Option 1
- B) Option 2
Answers: A
Explanation: ...

Note Format

All notes should follow this structure:

  • Location: notes/{category}/short-slug.md
  • Frontmatter: Required fields are title, date, and category
  • Sections: Include Summary, Details, Flashcards, Quizzes

Local Development & Deployment

1. Install Dependencies

# Python dependencies for generation scripts
pip install python-frontmatter

# Web dependencies
cd web
npm install

2. Deploy Locally (Build & Copy)

# Builds the React app and generates artifacts into docs/
./scripts/deploy_web.sh

3. Serve Locally

# Verify the build
python -m http.server 8000 -d docs

Linting

The repository includes multiple layers of linting:

  1. GitHub Actions: Run linting on all pull requests and pushes
  2. Manual checking: Run npx remark . and npx markdownlint "**/*.md" locally