CodeASCIIMap
Walk around any codebase — or any GitHub repo — as a live ASCII city inside your terminal.
╔══════════════ facebook/react ═══════════════╗
║ ║
║ ┌──────────┐ ┌────────────────────┐ ║
║ │▓▓▓▓▓▓▓▓▓▓│ │▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│ ║
║ │░░░ ░░░ ░░│ │░░░ ░░░ ░░░ ░░░ ░░░░│ ║
║ │░░░ ░░░ ░░│ ├────────────────────┤ ║
║ └─index.js─┘ │░░░ ░░░ ░░░ ░░░ ░░░░│ ║
║ └─ReactDOM.js─────── ┘ ║
╚═════════════════════════════════════════════╝
─────────────────────────────
@
Each directory is a walled city block. Each file is a building — taller buildings have more lines. Walk around with WASD, search with /, and inspect any file's source code by pressing i.
Install
pip install codeasciimap
On Windows, windows-curses is installed automatically as a dependency.
Run
# Current directory
codeasciimap
# Any local path
codeasciimap ~/projects/myapp
codeasciimap C:\Users\you\projects\myapp
# GitHub repo (owner/repo shorthand)
codeasciimap torvalds/linux
codeasciimap facebook/react
codeasciimap twbs/bootstrap
codeasciimap vercel/next.js
# Full GitHub URL
codeasciimap https://github.com/django/django
GitHub repos are shallow-cloned (--depth 1 --filter=blob:none) so even massive repos like the Linux kernel load in seconds. The clone is deleted automatically when you quit.
Controls
| Key | Action |
|---|---|
W A S D or arrow keys |
Move around the city |
i or Enter |
Inspect the file you're standing next to |
j / k |
Scroll file content up/down in inspector |
q or Esc |
Close inspector / cancel search |
/ |
Open search bar |
Enter |
Jump to search result |
n / N |
Next / previous search result |
? or F1 |
Show help screen |
q or Ctrl+C |
Quit |
City legend
| Symbol | Meaning |
|---|---|
@ |
You (the player) |
╔═╗ ║ ╚═╝ |
District border (a directory) |
┌─┐ │ └─┘ |
Building frame (a file) |
▓ |
Penthouse / top floor |
░░░ ░░░ |
Window floors (lit office at night) |
├───┤ |
Floor separator (every 3 floors) |
│ above building |
Rooftop antenna (tall buildings only) |
─ / │ / · |
Streets |
Color coding
| Color | Lines |
|---|---|
| 🟢 Green | < 50 lines |
| 🟡 Yellow | 50 – 500 lines |
| 🔴 Red | 500 – 2 000 lines |
| 🔵 Cyan | > 2 000 lines |
| 🟣 Magenta | Binary or unreadable |
Mini-map
The bottom-right corner always shows a miniature overview of the entire city. Your position blinks as @. The dotted rectangle shows what's currently on screen.
Requirements
- Python ≥ 3.8
giton PATH (only needed for GitHub repos)- Terminal ≥ 80 × 24, UTF-8 recommended
Publish to PyPI (maintainers)
pip install build twine
python -m build
twine upload dist/*
Then anyone in the world can install with:
pip install codeasciimap
Metadata
Release files for codeasciimap 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| codeasciimap-1.0.0.tar.gz | 21.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codeasciimap-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.6 kB
Release files / codeasciimap-1.0.0.tar.gz
| Download URL | codeasciimap-1.0.0.tar.gz |
|---|---|
| Size | 21.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76595ed1ff3466410f50869117b896259e6df9a11b33eb4175489bca418283be
|
|
BLAKE2b-256 checksum How to use checksums |
34dae918ddf8361a8c116c155189ea0a6185293ac34eec63dd5962db9a554135
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / codeasciimap-1.0.0-py3-none-any.whl
| Download URL | codeasciimap-1.0.0-py3-none-any.whl |
|---|---|
| Size | 22.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3fabdd18c9689a77f6f405310885e391de806dbe47cab22c55993410b53218c7
|
|
BLAKE2b-256 checksum How to use checksums |
dd3e011c286deb1dbcac61bcf1013ad3716c7ae70e8c43d5fad4ad1a6e935805
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|