Metadata-Version: 2.4
Name: lazyplan
Version: 0.1.2
Summary: TUI para capturar y gestionar ideas de proyectos
Author-email: Marcelo Mastroiani <mastroianimarcelo04@gmail.com>
Requires-Python: >=3.11
Requires-Dist: textual>=0.47.0
Requires-Dist: typer>=0.9.0
Description-Content-Type: text/markdown

# 💤 LazyPlan

[![PyPI](https://img.shields.io/pypi/v/lazyplan)](https://pypi.org/project/lazyplan/)

TUI para capturar y gestionar ideas de proyectos, directo desde la terminal.

Cuando se te ocurre una idea, no necesitás abrir un editor de texto ni un doc en la nube: la anotás en segundos, con stack tecnológico, estado y links, y seguís trabajando. Cuando la idea madura, LazyPlan te ayuda a llevarla a código real: crea la carpeta del proyecto y el repositorio en GitHub sin salir de la TUI.

## ✨ Features

- **Lista de proyectos** con búsqueda y filtro por estado
- **Vista de detalle** con toda la información del proyecto
- **Crear y editar** proyectos con formulario completo (título, descripción, stack, estado, links)
- **Captura rápida por CLI** (`lazyplan new`) sin abrir la TUI
- **Scaffolding de carpetas** — crea la estructura del proyecto (`src/`, `docs/`, `README.md`) con un atajo
- **Integración con GitHub CLI** — crea el repositorio (público o privado) y hace el push inicial desde la TUI
- **Tema propio** (Onyx + Violet) sobre Textual
- **Persistencia local** en JSON, sin backend ni cuenta

## 📦 Instalación

Requisitos: Python 3.11+ y, opcionalmente, [GitHub CLI](https://cli.github.com/) (`gh`) si vas a usar la integración con GitHub.

LazyPlan está publicado en [PyPI](https://pypi.org/project/lazyplan/).

### Con pipx (recomendado)

```bash
pipx install lazyplan
```

### Con pip

```bash
pip install lazyplan
```

### Desde el código fuente

```bash
git clone https://github.com/MarceloMastroiani/lazyplan
cd lazyplan

python -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate

pip install -e .
```

Si vas a crear repositorios desde LazyPlan, autenticá `gh` una sola vez:

```bash
gh auth login
```

## 🚀 Uso

```bash
# Abrir la TUI
lazyplan

# Captura rápida sin abrir la TUI
lazyplan new -t "Mi idea" -s "Python, Textual" -d "Descripción breve" --status cruda

# Listar proyectos en la terminal
lazyplan ls
```

## ⌨️ Atajos de teclado

### Lista de proyectos

| Tecla | Acción |
|---|---|
| `n` | Nuevo proyecto |
| `enter` | Ver detalle |
| `e` | Editar |
| `d` | Eliminar |
| `j` / `k` | Navegar abajo / arriba |
| `ctrl+f` | Buscar |
| `escape` | Limpiar búsqueda |
| `q` | Salir |

### Detalle del proyecto

| Tecla | Acción |
|---|---|
| `e` | Editar |
| `d` | Eliminar |
| `f` | Crear carpeta del proyecto |
| `ctrl+g` | Crear repositorio en GitHub |
| `escape` | Volver a la lista |

### Editor (crear / editar)

| Tecla | Acción |
|---|---|
| `ctrl+s` | Guardar |
| `escape` | Cancelar |

### Confirmación de eliminado

| Tecla | Acción |
|---|---|
| `y` | Confirmar |
| `escape` | Cancelar |

## 🗂 Estados de un proyecto

| Estado | Significado |
|---|---|
| 🟡 Cruda | Idea sin desarrollar todavía |
| 🟢 Activa | En desarrollo |
| ⚪ Pausada | En espera |
| 🔴 Descartada | Abandonada |

## 🏗 Arquitectura

```
lazyplan/
├── pyproject.toml
├── README.md
└── lazyplan/
    ├── app.py                    # App principal — tema, screens, operaciones de datos
    ├── cli.py                    # Comandos: lazyplan / lazyplan new / lazyplan ls
    ├── models.py                 # Dataclass Project + enum Status
    ├── storage.py                # Persistencia en JSON
    ├── folders.py                # Scaffolding y borrado de carpetas de proyecto
    ├── github.py                 # Integración con GitHub CLI (gh)
    ├── lazyplan.tcss              # Estilos (tema Onyx + Violet)
    └── screens/
        ├── base.py               # BaseScreen / LazyPlanModalScreen (acceso tipado a la app)
        ├── main.py                # Lista de proyectos
        ├── detail.py              # Vista de detalle
        ├── editor.py              # Crear / editar proyecto
        ├── confirm_delete.py      # Modal de confirmación
        ├── folder_screen.py       # Modal para crear la carpeta del proyecto
        └── github_screen.py       # Modal para crear el repo en GitHub
```

### Cómo se guardan los datos

Los proyectos se persisten en:

```
~/.local/share/lazyplan/projects.json
```

Cada proyecto tiene: `id`, `title`, `description`, `stack`, `status`, `links`, `github_url`, `folder_path`, `created_at` y `updated_at`.

### Carpetas de proyecto

Por defecto, las carpetas se crean en `~/Proyectos/<slug-del-titulo>/`, con subcarpetas `src/` y `docs/`, y un `README.md` inicial con el título y la descripción del proyecto.

### Integración con GitHub

Al presionar `ctrl+g` desde el detalle de un proyecto, LazyPlan:

1. Verifica que `gh` esté instalado y autenticado
2. Te deja elegir si el repo es público o privado
3. Crea el repositorio con `gh repo create`
4. Si el proyecto ya tiene una carpeta local, hace `git init`, `commit` y `push` inicial automáticamente
5. Guarda la URL del repo en el proyecto

Si `gh` no está instalado o no está autenticado, LazyPlan te muestra cómo instalarlo y autenticarte en vez de fallar silenciosamente.

## 🛠 Stack

- **Python 3.11+**
- **[Textual](https://textual.textualize.io/)** — framework de la TUI
- **[Typer](https://typer.tiangolo.com/)** — CLI (`lazyplan new`, `lazyplan ls`)
- **JSON** — persistencia local, sin base de datos externa
- **GitHub CLI (`gh`)** — creación de repositorios (opcional)

## 🗺 Roadmap

- [ ] Stack picker visual con categorías (Backend, Frontend, DevOps, DB)
- [ ] Templates de proyecto (NestJS API, React App, etc.)
- [ ] Abrir el proyecto en el editor (`code .` / `zed .`) desde el detalle
- [ ] Exportar proyectos a Markdown
- [ ] Migración opcional a SQLite

## 📄 Licencia

Este proyecto es de uso personal. Sentite libre de forkearlo y adaptarlo a tu propio flujo.
