Skip to main content

A blazing-fast, interactive terminal explorer for 17,000+ company-wise DSA interview questions.

Project description

Dooma

The offline terminal atlas for DSA interview preparation.

PyPI Python 3.9+ MIT License Downloads

██████╗  ██████╗  ██████╗ ███╗   ███╗ █████╗
██╔══██╗██╔═══██╗██╔═══██╗████╗ ████║██╔══██╗
██║  ██║██║   ██║██║   ██║██╔████╔██║███████║
██║  ██║██║   ██║██║   ██║██║╚██╔╝██║██╔══██║
██████╔╝╚██████╔╝╚██████╔╝██║ ╚═╝ ██║██║  ██║
╚═════╝  ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚═╝  ╚═╝
terminal DSA forge • 17,931 interview mappings • offline first

Dooma brings company-wise LeetCode-style preparation into your terminal: searchable, bookmarkable, trackable, and available without accounts or network access after install.

Why Dooma

Interview prep breaks down when the data is scattered, noisy, or trapped behind a browser tab you never meant to open for an hour. Dooma keeps the loop tight:

  • Find what a company asks.
  • Pick a pattern or roadmap.
  • Open the exact problem.
  • Mark progress, keep notes, and come back tomorrow.

No dashboards to sign into. No hidden telemetry. No spreadsheet archaeology.

Dataset At A Glance

Metric Count
Unique questions 3,310
Company-question mappings 17,931
Companies 662
DSA patterns 25
Curated sheets 3

The active app dataset lives in dooma/data/ as YAML files. The package also includes a legacy JSON snapshot under dooma/dataset/.

Features

Feature What it gives you
Company browser Paginated company lists sorted by available question volume.
Pattern practice Practice by DSA pattern such as binary search, graph, heap, or sliding window.
Fuzzy search Jump from rough text like two sum or binary tree to matching questions.
Curated sheets Work through Blind 75, NeetCode 150, and Striver SDE style roadmaps.
Mock mode Generate a timed random interview set with optional difficulty filtering.
Local progress Track solved, attempted, skipped, bookmarks, notes, and streaks in SQLite.
Offline-first Browse the bundled dataset without internet after installation.

Install

From PyPI:

pip install dooma

From source:

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

Dooma supports Python 3.9 and newer.

Quick Start

Launch the interactive terminal app:

dooma

First launch asks a short onboarding flow, then opens the command hub:

Commands:
  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  help         Command guide & workflows
  8  quit         Exit Dooma

Inside the menu, you can type the number, the command name, or shell-style input such as dooma help and dooma version.

Command Examples

Check the installed version:

dooma --version
dooma -V
dooma version

Open the built-in guide:

dooma help
dooma guide

Search for a problem:

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

Open a question detail screen:

dooma question two-sum

Browse company-wise questions:

dooma browse companies
dooma companies
dooma companies --limit 50

List patterns and sheets:

dooma patterns
dooma sheets

Practice by filters:

dooma practice --company google
dooma practice --difficulty medium
dooma practice --pattern sliding-window

Work through a sheet:

dooma sheet blind-75
dooma sheet neetcode-150
dooma sheet striver-sde

Start a mock interview:

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

View progress:

dooma dashboard
dooma stats
dooma bookmarks

Reset onboarding/config:

dooma config --reset

Check your installation:

dooma doctor

Question Actions

Inside question detail views, Dooma supports:

Key Action
o Open the LeetCode URL in your browser.
m Cycle status: unsolved -> attempted -> solved -> skipped.
b Toggle bookmark.
n Add or edit a note.
q Go back.

Progress is stored locally in ~/.dooma/state.db.

Project Layout

dooma/
  cli/              Typer app registration and home screen
  commands/         Command implementations
  data/             Active YAML dataset
  dataset/          Legacy JSON snapshot
  config.py         Local config and onboarding state
  db.py             SQLite progress, notes, bookmarks, streaks
  display.py        Rich rendering helpers and terminal wordmark
  loader.py         YAML index builder
  search.py         RapidFuzz search
tests/              CLI, loader, search, and state tests

Development

Install development tools:

pip install -e ".[dev]"

Run the release checks:

ruff check .
mypy dooma
pytest

Build a wheel locally:

python -m pip wheel . --no-deps -w dist

Data Contributions

When updating data, keep references internally consistent:

  • Every question must have id, title, and url.
  • Difficulty should be easy, medium, hard, or empty when unknown.
  • Company, pattern, and sheet references should point to existing YAML IDs.
  • Keep generated caches, coverage files, and packaging artifacts out of git.

Philosophy

Dooma is intentionally small: a fast terminal interface, a local dataset, and local progress tracking. The goal is not to replace LeetCode. The goal is to remove friction before you practice.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md, follow the existing command/data structure, and keep pull requests focused.

This project follows the Code of Conduct.

License

Dooma 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.3.tar.gz (832.2 kB 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.3-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for dooma-2.0.3.tar.gz
Algorithm Hash digest
SHA256 e8537967500b52f9ed6ddd57833c888193506a3b15738af962f018892b19085e
MD5 cfcb5e8d617ff9dd97f6c24f300894ec
BLAKE2b-256 cf82c942f93da6f23245a0dc6fafa025567cf3175ad2184d085f340a29ebbf5e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dooma-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 2.2 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b8e6121ad698f1c40208faf6f2ef1108a4512fe8bda9980088e74cdeceb2eaec
MD5 0ed1341b35dcc2837104c938e46d92a1
BLAKE2b-256 d8980d5dbe970b8cd39dfef812155222ebc45efe2ecb075f65a6d8068d1061b3

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