Skip to content

Ilya-sss/ToDo-Tui-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โœ… ToDo TUI App

A sleek, keyboard-centric To-Do list application built for the terminal. Manage your tasks with style using a distraction-free interface powered by Go, Bubble Tea, and Lip Gloss.

Go Version Platform

๐ŸŒŸ Features

  • ๐ŸŽจ Beautiful TUI - Elegant, terminal-adaptive styling with Lip Gloss
  • โŒจ๏ธ Keyboard-Centric - Fully navigable with intuitive keybindings
  • ๐Ÿ’พ Persistent Storage - Tasks are saved automatically
  • ๐ŸŽฏ Distraction-Free - Minimal interface for maximum productivity
  • ๐Ÿ”„ Robust State Management - Powered by Bubble Tea framework
  • ๐Ÿš€ Fast & Lightweight - Written in Go for performance
  • ๐Ÿ“ฑ Cross-Platform - Works on Linux, macOS, and Windows

๐ŸŽฌ Demo

GoTUI.mp4

๐Ÿš€ Quick Start

Prerequisites

  • Go 1.21 or higher
  • Terminal with 256-color support (recommended)

Installation

Option 1: Using go install

go install github.com/Ilya-sss/ToDo-Tui-App@latest

Option 2: Clone and Build

# Clone the repository
git clone https://github.com/Ilya-sss/ToDo-Tui-App.git
cd ToDo-Tui-App

# Build the application
go build -o todo

# Run it
./todo

Option 3: Using Make

# Clone the repository
git clone https://github.com/Ilya-sss/ToDo-Tui-App.git
cd ToDo-Tui-App

# Build using make
make build

# Run the application
make run

๐ŸŽฎ Usage

Basic Commands

Launch the application:

./todo

Keyboard Shortcuts

Key Action
n Add a new task
โ†‘ Move cursor up
โ†“ Move cursor down
Space / Enter Toggle task completion
BackSpace Delete selected task
e Edit selected task
q / Ctrl+C Quit application

Task Management

  1. Add a task: Press n, type your task, and hit Enter
  2. Complete a task: Navigate to it and press Space
  3. Delete a task: Navigate to it and press BackSpace
  4. Edit a task: Navigate to it and press e

๐Ÿ“ Project Structure

ToDo-Tui-App/
โ”‚
โ”œโ”€โ”€ main.go              # Application entry point
โ”œโ”€โ”€ todo.go              # Core To-Do logic and models
โ”œโ”€โ”€ data/                # Data storage directory
โ”‚   โ””โ”€โ”€ todos.json       # Persistent task storage
โ”‚
โ”œโ”€โ”€ go.mod               # Go module dependencies
โ”œโ”€โ”€ go.sum               # Dependency checksums
โ”œโ”€โ”€ Makefile             # Build automation
โ””โ”€โ”€ README.md            # This file

๐Ÿ› ๏ธ Built With

  • Go - Programming language
  • Bubble Tea - TUI framework for robust state management
  • Lip Gloss - Style definitions for elegant terminal rendering
  • Bubbles - Common TUI components

๐Ÿ”ง Development

Setting Up Development Environment

# Clone the repository
git clone https://github.com/Ilya-sss/ToDo-Tui-App.git
cd ToDo-Tui-App

# Install dependencies
go mod download

# Run in development mode
go run .

Available Make Commands

make build      # Build the application
make run        # Run the application
make clean      # Clean build artifacts
make test       # Run tests
make install    # Install to $GOPATH/bin

Code Structure

The application follows the Elm Architecture pattern (via Bubble Tea):

type Model struct {
    todos    []Todo
    cursor   int
    selected map[int]struct{}
}

func (m Model) Init() tea.Cmd
func (m Model) Update(tea.Msg) (tea.Model, tea.Cmd)
func (m Model) View() string

๐Ÿ“ Configuration

Tasks are stored in data/todos.json by default. You can modify the data directory in the source code if needed.

Data Format

{
    {
      "id": 1,
      "text": "Your task here",
      "done": false,
    }
}

๐ŸŽจ Customization

You can customize the appearance by modifying the Lip Gloss styles in the source code:

// Example: Change the accent color
var accentColor = lipgloss.Color("#00ADD8")

// Example: Modify box borders
var boxStyle = lipgloss.NewStyle().
    Border(lipgloss.RoundedBorder()).
    BorderForeground(accentColor)

๐Ÿค Contributing

Contributions are welcome! Here's how you can help:

  1. ๐Ÿด Fork the repository
  2. ๐Ÿ”€ Create your feature branch (git checkout -b feature/AmazingFeature)
  3. โœ๏ธ Commit your changes (git commit -m 'Add some AmazingFeature')
  4. ๐Ÿ“ค Push to the branch (git push origin feature/AmazingFeature)
  5. ๐ŸŽ‰ Open a Pull Request

Ideas for Contributions

  • ๐Ÿท๏ธ Add task categories/tags
  • ๐Ÿ“… Implement due dates
  • โญ Add priority levels
  • ๐Ÿ” Add search functionality
  • ๐Ÿ“Š Add task statistics
  • ๐ŸŽจ More color themes
  • ๐ŸŒ™ Dark/light mode toggle

๐Ÿ› Bug Reports

Found a bug? Please open an issue with:

  • Your OS and terminal
  • Go version (go version)
  • Steps to reproduce
  • Expected vs actual behavior

๐Ÿ™ Acknowledgments

  • Charm - For the amazing TUI libraries
  • The Go community - For excellent tooling and support
  • All contributors who help improve this project

๐ŸŒŸ Show Your Support

If you find this project useful, please give it a โญ๏ธ on GitHub!

๐Ÿ“ฌ Contact

Created by Ilya-sss

Have questions or suggestions? Feel free to open an issue!

About

๐ŸŽจ A beautiful terminal To-Do app built with Go, Bubble Tea & Lip Gloss. Keyboard-driven, distraction-free task management right in your terminal!

Topics

Resources

Stars

Watchers

Forks

Contributors