Files
LazyPM/README.md
2026-03-10 15:36:15 +01:00

205 lines
5.8 KiB
Markdown

# LazyPM
A project management tool for developers.
Made for bachelor project, used for gathering and comparing data between interfaces.
## Overview
LazyPM is a lightweight project management system that provides three interfaces:
- **CLI** - Command-line interface for quick operations
- **TUI** - Terminal user interface for interactive use
- **Web** - Browser-based interface with HTML templates
- **Survey** - Interactive task-based survey system for data gathering
## Features
- Issue tracking (bugs, features, tasks, epics, chores)
- Status management (open, in-progress, closed)
- Dependency tracking between issues
- Labels and comments
- Statistics and reporting
- SQLite storage via Beads library
## Quick Start
### Prerequisites
- Go 1.25.6+
- Make
- npm (for Tailwind CSS)
### Installation
```bash
# Install dependencies
go mod tidy
```
### Make Installation
Linux:
```bash
sudo pacman -S make
```
Windows (Choco):
```bash
# Install choco
winget install --id chocolatey.chocolatey --source winget
# Install make
choco install make
```
## Build Commands
```bash
# Run web (without hot reload)
make web
# Web with hot reload
make dev # Watch templ files and auto-reload web
make tw # Watch Tailwind CSS changes
# Run tui
make tui
# Run cli
go run ./cmd/cli
# Run a specific task with a specific interface (e.g. WEB UI and priority_management)
go run ./cmd/pm survey start -i web -t priority_management
# Build all binaries
make build # Creates bin/pm, bin/tui, bin/web, bin/survey
# Docker (lazyos desktop environment)
make os-build # Build lazyos Docker image
make os-run # Run lazyos container (localhost:3000-3001)
make os-stop # Stop and remove lazyos container
# Maintenance
make tidy # Run go mod tidy
make clean # Clean build artifacts
# Install
make install-cli # Install CLI with shell completions
make completions # Generate shell completion scripts
```
## Project Structure
```
├── bin/ # Compiled binaries
├── build/ # Docker build files for lazyos desktop environment
│ ├── Dockerfile # Webtop-based desktop container
│ ├── setup-desktop.sh # Desktop shortcut setup script
│ └── survey # Survey binary (copied during build)
├── cmd/ # Entry points
│ ├── pm/ # CLI main
│ ├── tui/ # TUI main
│ ├── web/ # Web server main
│ └── survey/ # Survey system main
├── internal/ # Core implementation
│ ├── models/ # Data models (beads types)
│ ├── service/ # Business logic
│ ├── storage/ # Data persistence
│ └── commands/ # Cobra commands
│ ├── issues/ # Issue management commands
│ └── survey/ # Survey commands
├── pkg/ # Public packages
│ ├── cli/ # CLI framework
│ ├── tui/ # TUI views and components
│ ├── web/ # Web handlers, templates, assets
│ ├── repl/ # REPL implementation
│ └── task/ # Task registration and runner
└── .pm/ # Local data storage (gitignored)
```
## Technology Stack
- [Go](https://golang.org/) 1.25.6 - Backend language
- [Cobra](https://github.com/spf13/cobra) - CLI framework
- [Fang](https://github.com/charmbracelet/fang) - Colored CLI output
- [Bubbletea](https://github.com/charmbracelet/bubbletea) - TUI framework
- [Lipgloss](https://github.com/charmbracelet/lipgloss) - Terminal styling
- [Huh](https://github.com/charmbracelet/huh) - Terminal forms
- [Templ](https://github.com/a-h/templ) - HTML templating
- [HTMX](https://htmx.org/) - Dynamic web UI
- [Tailwind CSS v4](https://tailwindcss.com/) + DaisyUI - Web styling
- [Beads](https://github.com/steveyegge/beads) - Issue tracking engine
- [go-git](https://github.com/go-git/go-git) v6 - Git operations
## Configuration
LazyPM stores data in a local `.pm` directory:
- `.pm/db.db` - SQLite database for issues
- `.pm/stats.json` - Statistics storage
The directory is automatically created on first run.
## Development
### Running the Survey System
The survey system provides interactive task-based data gathering:
```bash
make start # Start the survey interface
```
### LazyOS Desktop Environment
LazyOS is a containerized desktop environment for running the survey in a browser-based desktop:
```bash
make os-build # Build lazyos Docker image
make os-run # Run lazyos container (access at localhost:3000)
make os-stop # Stop and remove lazyos container
```
The lazyos container provides:
- Web-based desktop environment (LinuxServer Webtop)
- Pre-configured desktop shortcut for the survey
- Runs at http://localhost:3000
### Web Development
```bash
# Terminal 1 - Auto-reload Go server on templ changes
make dev
# Terminal 2 - Watch Tailwind CSS
make tw
```
### Available Tasks
- `create_issue` - Create a new issue
- `coding_task` - Coding-related task
- `git_task` - Git operations task
- `sprint_planning` - Sprint planning task
- `issue_triage` - Issue triage task
- `milestone_tracking` - Milestone tracking task
- `dependency_management` - Dependency management task
- `team_capacity` - Team capacity task
- `report_generation` - Report generation task
- `stakeholder_update` - Stakeholder update task
- `priority_management` - Priority management task
- `backlog_refinement` - Backlog refinement task
## CI/CD
This project uses GitHub Actions for:
- Building Go binaries on push/PR
- Docker image publishing
- Release automation with GoReleaser
See `.github/workflows/` for details.
## License
See [LICENSE](LICENSE) file for details.