dorkhub

simple-todo-c

A lightweight, native Windows Todo application built with pure C and the Win32 API. Just 60 KB

Efeckc17
C57038 forksMITupdated 3 months ago
git clone https://github.com/Efeckc17/simple-todo-c.gitEfeckc17/simple-todo-c

🌟 Simple Todo (C / WinAPI)

Platform Language License Size GitHub release (latest by tag)

Payments

If you're building projects in regions where services like PayPal or Stripe are restricted, I built a separate solution:

PayCow — accept payments using ERC-20 (TRC-20 soon), without relying on traditional platforms.

https://paycow.net

https://github.com/Efeckc17/Paycow-Introduction

A modern :) , native Windows Todo application built with C and Win32 API. This project demonstrates advanced Windows GUI programming and system integration capabilities.

Todo App Screenshot

✨ Features

  • 📝 Create, edit, and delete todo items
  • ✅ Mark tasks as complete
  • 💾 Persistent storage in AppData
  • 🔔 System tray integration (minimize to tray)
  • 🌙 Native Windows look and feel
  • 🚀 Auto-start with Windows option
  • 🔍 Real-time search functionality with case-insensitive matching

🛠️ Technical Details

  • Written in pure C
  • Uses Win32 API for GUI
  • System tray integration
  • Lightweight native executable
  • Modern Windows visual styles with manifest

🐛 Debugging

Debugging

Check out our debugging guide for instructions on how to debug this application using Visual Studio, VS Code, or other tools.

💾 Data Storage

The application stores todos in a binary file:

  • Location: %APPDATA%\TodoApp\todos.dat
  • Format: Binary file containing the entire todo list
  • Capacity: Maximum 100 todos

📋 Requirements

  • Windows OS
  • MinGW-w64 (GCC compiler)
  • Windows SDK (included with MinGW)

🚀 Building from Source

  1. Install MinGW-w64:

  2. Clone the repository:

    git clone https://github.com/Efeckc17/simple-todo-c.git
    cd simple-todo-c
  3. Build the project:

    .\build.bat

🎮 Usage

  1. Run bin/todo.exe
  2. Use the interface to:
    • Add new todos with the "Add" button
    • Edit existing todos by selecting and clicking "Edit"
    • Delete todos with the "Delete" button
    • Mark todos as complete with the "Complete" button
    • Set priority levels for each todo

🏗️ Project Structure

.
├── src/
│   ├── app.manifest
│   ├── main.c           # Application entry point
│   ├── todo.c           # Todo management logic
│   ├── todo.h           # Todo data structures and declarations
│   ├── gui.c            # GUI implementation
│   └── utils/
│       ├── search.c     # Search functionality implementation
│       └── search.h     # Search function declarations
├── bin/                 # Compiled executable
├── build.bat            # Build script
└── README.md            # This file

🔧 Development

The project uses the following key components:

  • Win32 API: For window management and GUI
  • Common Controls: For modern UI elements
  • UXTheme: For Windows visual styles
  • File I/O: For data persistence

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📫 Contact

Toxi360 - @Efeckc17

Project Link: https://github.com/Efeckc17/simple-todo-c

more like this

r2

Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…

TypeScript50

leaf

Lightweight, self-hosted task tracking

Rust50

taskbutler

Create and add progress bars, Office365 Files and Dropbox Paper papers by labels and link them to your Todoist tasks.

Python50

search

search projects, people, and tags