Skip to main content

Offline-first terminal DSA interview prep CLI with 3,310 questions, 17,931 company mappings, fast search, mock interviews, sheets, and local progress.

Project description

Dooma

Dooma terminal logo

Offline-first DSA interview prep in your terminal.
Search 3,310 questions, browse 17,931 company mappings, run mock sessions, and track progress locally.

PyPI Python 3.9+ MIT License Downloads

Dooma turns scattered interview-prep data into a focused terminal workflow. It gives you a fast way to find what companies ask, open the exact LeetCode-style problem, mark progress, keep notes, and come back later without accounts, dashboards, or network dependency after installation.

pip install dooma
dooma

Why It Exists

Interview prep usually fails in the handoff between "what should I solve?" and "did I actually make progress?" Dooma keeps that loop short:

  • Company-first discovery: see question pools for companies like Google, Amazon, Meta, Microsoft, and Bloomberg.
  • Fast local search: jump from rough text like two sum or binary tree to matching questions.
  • Local progress tracking: solved, attempted, skipped, bookmarks, notes, and streaks live in your own ~/.dooma directory.
  • Offline-first runtime: the packaged dataset ships with a prebuilt index, so the CLI does not parse thousands of YAML files on every launch.
  • Contributor-friendly data model: canonical data stays as readable YAML; the generated runtime index is reproducible.

At A Glance

Area Current state
Unique questions 3,310
Company-question mappings 17,931
Companies 662
Difficulty split 808 easy, 1,757 medium, 745 hard
Active sheet coverage Blind 75 has 71 mapped questions
Runtime index dooma/data/index.json, generated from YAML
Local state ~/.dooma/state.db and ~/.dooma/config.json
Python support 3.9+

Install

From PyPI:

pip install dooma

From source:

git clone https://github.com/im-anishraj/dooma.git
cd dooma
pip install -e ".[dev]"

Check the install:

dooma doctor

60-Second Tour

Launch the interactive hub:

dooma

The home screen gives you the main workflows:

1  practice     Pattern-first question browser
2  browse       Browse patterns & companies
3  search       Fuzzy search questions
4  sheet        Curated roadmaps
5  mock         Timed mock interview
6  dashboard    Your progress stats
7  guide        Commands, workflows, and support
8  quit         Exit Dooma

You can also run commands directly:

dooma search "two sum"
dooma companies --limit 10
dooma question two-sum
dooma random --difficulty medium
dooma mock --count 5
dooma stats

Core Workflows

Find Company Questions

dooma companies --limit 5
dooma browse companies
dooma practice --company google

The company lists are sorted by available question volume. Current top pools include Google, Amazon, Meta, Microsoft, and Bloomberg.

Search The Dataset

dooma search "two sum"
dooma search --limit 5 "binary search"

Search uses fuzzy title/topic matching through RapidFuzz, which makes it useful even when you only remember part of a problem name.

Open A Specific Question

dooma question two-sum

Question screens show difficulty, status, URL, top companies, and local notes when present.

Run A Mock Session

dooma mock --count 5
dooma mock --count 3 --difficulty hard

Mock mode samples questions, starts a timer, and lets you open, solve, or skip each prompt.

Track Progress

dooma dashboard
dooma stats
dooma bookmarks

Progress is intentionally local. Dooma does not require sign-in and does not upload your activity.

Question Actions

Inside practice, company, sheet, and random-question flows:

Key Action
o Open the problem URL in your browser
m Cycle status: unsolved -> attempted -> solved -> skipped
b Bookmark or unbookmark the question
n Add or edit a local note
q Go back

Command Map

Command Purpose
dooma Open the interactive command hub
dooma guide / dooma help Show commands, workflows, and support links
dooma version / dooma --version / dooma -V Print the installed version
dooma doctor Check Python, dataset, config, and local database health
dooma search <query> Search questions by keyword
dooma question <slug> Open one question by slug
dooma companies List companies with the largest question pools
dooma browse companies Browse companies interactively
dooma patterns List pattern taxonomy entries
dooma sheets List available sheets
dooma sheet blind-75 Work through the mapped Blind 75 sheet
dooma practice Browse questions interactively, optionally filtered
dooma random Open a random filtered question
dooma mock Start a timed random session
dooma dashboard / dooma stats Show local progress
dooma bookmarks Show bookmarked questions
dooma config --reset Reset onboarding config

Data, Privacy, And Performance

Dooma has two kinds of data:

  • Packaged dataset: YAML files in dooma/data/ are the source of truth for questions, companies, sheets, and pattern taxonomy.
  • Runtime index: dooma/data/index.json is generated from YAML so installed users get fast startup without parsing roughly 4,000 YAML files each run.
  • User state: progress, notes, bookmarks, and streaks are stored locally in SQLite at ~/.dooma/state.db.
  • Config: onboarding choices live in ~/.dooma/config.json.

The CLI is offline-first after installation. It opens problem URLs only when you ask it to open a browser.

Current Dataset Status

The company-wise dataset is the most complete part of Dooma today. Some roadmap structures are intentionally present before their mappings are complete:

Dataset area Status
Company mappings Active: 17,931 mappings across 662 companies
Questions Active: 3,310 unique question records
Blind 75 Active: 71 mapped questions
Pattern taxonomy Present: 25 pattern entries
Pattern-tagged questions Not populated yet
NeetCode 150 / Striver SDE Sheet definitions exist, mappings are not populated yet

This transparency matters for contributors: the highest-impact data work today is completing pattern tags and sheet mappings.

Project Structure

dooma/
  cli/              Typer app registration and home screen
  commands/         Practice, browse, search, sheet, mock, dashboard
  data/             Canonical YAML dataset plus generated index.json
  dataset/          Legacy JSON snapshot
  config.py         Local onboarding/config state
  db.py             SQLite progress, bookmarks, notes, streaks
  display.py        Rich terminal rendering and logo output
  loader.py         Prebuilt index loader with YAML fallback
  search.py         RapidFuzz search helpers
scripts/
  build_index.py    Rebuild dooma/data/index.json from YAML
  benchmark_loader.py
tests/              CLI, loader, search, display, and state tests

Development

Set up a local environment:

git clone https://github.com/im-anishraj/dooma.git
cd dooma
pip install -e ".[dev]"

Run the core checks:

ruff check .
mypy dooma
python -m pytest

When dataset YAML changes, rebuild and verify the runtime index:

python scripts/build_index.py
python scripts/build_index.py --check
python scripts/benchmark_loader.py

Build release artifacts locally:

python -m pip install build twine
python -m build
python -m twine check dist/*

Good First Contributions

The most useful contributions are practical and data-driven:

  • Add missing pattern tags to questions.
  • Complete NeetCode 150 and Striver SDE sheet mappings.
  • Improve fuzzy-search ranking for ambiguous queries.
  • Add regression tests for interactive command flows.
  • Improve dataset validation scripts.
  • Polish Windows, macOS, and Linux terminal rendering edge cases.

Please read CONTRIBUTING.md before opening a pull request. Keep PRs focused and include the relevant test or data-index check.

What Dooma Is Not

Dooma is not a LeetCode replacement, online judge, or solution database. It does not submit code, scrape your account, or sync progress to a server. It is a fast local command center for deciding what to solve next and remembering your progress.

Release And Maintenance

Releases are versioned in pyproject.toml and published to PyPI from GitHub Releases through the repository publish workflow. See RELEASE.md for versioning rules.

Community expectations are documented in CODE_OF_CONDUCT.md. The project is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dooma-2.0.6.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dooma-2.0.6-py3-none-any.whl (2.5 MB view details)

Uploaded Python 3

File details

Details for the file dooma-2.0.6.tar.gz.

File metadata

  • Download URL: dooma-2.0.6.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dooma-2.0.6.tar.gz
Algorithm Hash digest
SHA256 817bb79126f5b377c6b75bf71a43a7a44b1bbc2bd68f75d8bf29e6ddf2fe2d00
MD5 743753af5deb131c01885472f771fb62
BLAKE2b-256 473332aa607ad7217cfb56be55d4bf612dabef8d22d188fd014c5ecfbf6139af

See more details on using hashes here.

File details

Details for the file dooma-2.0.6-py3-none-any.whl.

File metadata

  • Download URL: dooma-2.0.6-py3-none-any.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dooma-2.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f5e2e0dad271dda440321cc56496c9ab2de2c6cd19422cc4a3c058c4008871d7
MD5 cd6ac00842a109fb231ed5e8b385d3fa
BLAKE2b-256 0d80cf5bc476e6da34e0b681f89d1b8c2bb875100e631e612c76b5004cb33dd6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page