docs: add project overview
This commit is contained in:
243
docs/project_overview.md
Normal file
243
docs/project_overview.md
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
# Project Overview --- cd-browser
|
||||||
|
|
||||||
|
Author: Saky
|
||||||
|
|
||||||
|
This document provides a quick introduction to the **cd-browser**
|
||||||
|
project and guides readers through the repository structure,
|
||||||
|
documentation, and development workflow.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# What is cd-browser?
|
||||||
|
|
||||||
|
`cd-browser` is a **terminal-based directory navigator** that allows
|
||||||
|
users to browse directories interactively and then change the working
|
||||||
|
directory of their shell.
|
||||||
|
|
||||||
|
It solves a common shell limitation:
|
||||||
|
|
||||||
|
A program cannot directly change the directory of its parent shell.
|
||||||
|
|
||||||
|
The solution is:
|
||||||
|
|
||||||
|
1. The program returns a directory path.
|
||||||
|
2. A shell wrapper function performs the actual `cd`.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Example usage
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd_
|
||||||
|
```
|
||||||
|
|
||||||
|
The command launches an interactive terminal browser.
|
||||||
|
|
||||||
|
After navigating and exiting:
|
||||||
|
|
||||||
|
- the selected directory is returned
|
||||||
|
- the shell wrapper changes the working directory.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Key Features
|
||||||
|
|
||||||
|
- interactive terminal navigation
|
||||||
|
- tree-style directory browsing
|
||||||
|
- expandable directories
|
||||||
|
- keyboard-driven interface
|
||||||
|
- directory navigation history
|
||||||
|
- clean shell integration
|
||||||
|
- installable as a CLI tool
|
||||||
|
- tested Python codebase
|
||||||
|
- automated formatting and linting
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Repository Structure
|
||||||
|
|
||||||
|
cd-browser/
|
||||||
|
|
||||||
|
README.md → main project documentation
|
||||||
|
README_TEMPLATE.md → original template documentation
|
||||||
|
|
||||||
|
docs/
|
||||||
|
development-journey.md
|
||||||
|
ai-development-playbook.md
|
||||||
|
architecture.md
|
||||||
|
|
||||||
|
specs/
|
||||||
|
cd_browser_spec.md
|
||||||
|
|
||||||
|
src/
|
||||||
|
app/
|
||||||
|
cli.py
|
||||||
|
filesystem.py
|
||||||
|
history.py
|
||||||
|
navigator.py
|
||||||
|
ui.py
|
||||||
|
main.py
|
||||||
|
|
||||||
|
tests/
|
||||||
|
|
||||||
|
scripts/
|
||||||
|
|
||||||
|
pyproject.toml
|
||||||
|
Makefile
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Documentation Guide
|
||||||
|
|
||||||
|
The repository includes several documents explaining the project from
|
||||||
|
different perspectives.
|
||||||
|
|
||||||
|
## README.md
|
||||||
|
|
||||||
|
Quick introduction and installation instructions.
|
||||||
|
|
||||||
|
## specs/
|
||||||
|
|
||||||
|
Functional specifications of the application.
|
||||||
|
|
||||||
|
## docs/development-journey.md
|
||||||
|
|
||||||
|
Explains how the project was built step-by-step using AI coding agents.
|
||||||
|
|
||||||
|
## docs/ai-development-playbook.md
|
||||||
|
|
||||||
|
Reusable methodology for building applications using AI development
|
||||||
|
workflows.
|
||||||
|
|
||||||
|
## docs/architecture.md
|
||||||
|
|
||||||
|
Technical architecture of the application.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
Clone the repository:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
git clone https://gitea.sakydogalo.es/saky/cd-browser.git
|
||||||
|
cd cd-browser
|
||||||
|
```
|
||||||
|
|
||||||
|
Install the tool:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
pip install .
|
||||||
|
```
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Shell Integration
|
||||||
|
|
||||||
|
Add this function to your shell configuration (`~/.zshrc`):
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd_() {
|
||||||
|
local target
|
||||||
|
target="$(cd_browser)"
|
||||||
|
if [ -n "$target" ] && [ -d "$target" ]; then
|
||||||
|
cd "$target"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Reload the shell:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
source ~/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
|
Now you can run:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
cd_
|
||||||
|
```
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Development Setup
|
||||||
|
|
||||||
|
For contributors or developers:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
make dev
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the application:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
python -m app.main
|
||||||
|
```
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Quality and Validation
|
||||||
|
|
||||||
|
The project uses automated tools to ensure code quality.
|
||||||
|
|
||||||
|
Tools:
|
||||||
|
|
||||||
|
- black (formatting)
|
||||||
|
- ruff (linting)
|
||||||
|
- mypy (type checking)
|
||||||
|
- pytest (testing)
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
make fix
|
||||||
|
make quality
|
||||||
|
make ci
|
||||||
|
```
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# AI-Assisted Development
|
||||||
|
|
||||||
|
This project was built using a structured **AI-assisted development
|
||||||
|
workflow**.
|
||||||
|
|
||||||
|
Key ideas:
|
||||||
|
|
||||||
|
- architecture defined by a human
|
||||||
|
- AI agents used for focused implementation tasks
|
||||||
|
- strict validation loops
|
||||||
|
- small scoped prompts
|
||||||
|
|
||||||
|
More information:
|
||||||
|
|
||||||
|
docs/ai-development-playbook.md
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Status
|
||||||
|
|
||||||
|
Current version:
|
||||||
|
|
||||||
|
v0.1.0
|
||||||
|
|
||||||
|
The project is stable and functional as a minimal terminal directory
|
||||||
|
navigator.
|
||||||
|
|
||||||
|
Future improvements may include:
|
||||||
|
|
||||||
|
- improved navigation model
|
||||||
|
- fuzzy search
|
||||||
|
- bookmarks
|
||||||
|
- persistent history
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
See the LICENSE file.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
End of document.
|
||||||
Reference in New Issue
Block a user