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
  q  quit         Exit Dooma

Command Examples

Check the installed version:

dooma --version
dooma -V
dooma version

Open the built-in guide:

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.2.tar.gz (837.9 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.2-py3-none-any.whl (2.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dooma-2.0.2.tar.gz
  • Upload date:
  • Size: 837.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dooma-2.0.2.tar.gz
Algorithm Hash digest
SHA256 cc9b9781c1aa68ca1c73396d3fbafbdb755052a4f1cfda100d4e1597893f9409
MD5 7628f674e0701fe276f1770fa743eb60
BLAKE2b-256 7907cdab704afd45527f4018013d3bae795c98ab9eb94c0543606789729202b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dooma-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dooma-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dc3a40caf388b24ba0f37c2c082321e0f92cbd12c78d6923ed4666fb383211fd
MD5 969d3fdff1a14ba392ca53731b5fea4f
BLAKE2b-256 6f9a5f8100b2c6ef6af649b884a73b44a15e72047f548d63d57bca04c05faaaa

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