Skip to content

illAssad/organizer

Repository files navigation

Sticky Todo App

A powerful, local-first todo list application with hierarchical tasks, AI integration via Claude, and smart notifications.

Features

✨ Core Features

  • Hierarchical Todo Management: Create multi-level todo trees with parent-child relationships
  • Smart Completion: When you complete a todo, all its children are automatically promoted to the main view
  • Tree & List Views: Visualize your tasks in an expandable tree structure
  • Categories: Organize todos with custom categories (color-coded with icons)
  • Priority Levels: Set priority (Normal, High, Urgent) for each task
  • Due Dates: Schedule tasks with date and time reminders

🤖 AI Integration

  • Claude Assistant: Chat with Claude AI about your tasks
  • Context-Aware: Claude has access to your current todos for intelligent suggestions
  • Task Planning: Ask Claude to help prioritize your day
  • Secure Storage: API keys are encrypted using OS-level security (Keychain/DPAPI)

🔔 Smart Notifications

  • Desktop Notifications: System-level notifications for important tasks
  • Always-On-Top Popup: Persistent reminder window for urgent tasks
  • System Tray: Quick access with badge counts
  • Category-Based Rules: Customize when and how you're notified
  • Time-Based Triggers: Get notified before tasks are due

🚀 System Integration

  • Auto-Launch: Start automatically on system boot
  • macOS Dock Integration: Badge counts for pending tasks
  • System Tray: Always accessible from your menu bar
  • Runs 100% Locally: All data stored on your device

🌐 REST API

  • Local HTTP Server: Exposes a REST API on localhost:3456
  • Curl-Able: Manage todos from the command line
  • Full CRUD: Create, Read, Update, Delete operations

Installation

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build for production
npm run build

Development

The app is built with:

  • Electron: Desktop application framework
  • React: UI library
  • TypeScript: Type-safe development
  • Vite: Fast build tool
  • Ant Design: Professional UI components
  • Fastify: High-performance REST API
  • Node SQLite: Embedded database
  • Claude API: AI integration

API Endpoints

The REST API runs on http://127.0.0.1:3456 and supports:

Todos

# Get all root todos (main view)
curl http://127.0.0.1:3456/api/todos/root

# Get todo tree
curl http://127.0.0.1:3456/api/todos/tree

# Create a todo
curl -X POST http://127.0.0.1:3456/api/todos \
  -H "Content-Type: application/json" \
  -d '{"title": "Call accountant", "priority": 1, "due_date": "2025-11-04T10:00:00Z"}'

# Update a todo
curl -X PUT http://127.0.0.1:3456/api/todos/1 \
  -H "Content-Type: application/json" \
  -d '{"status": "in_progress"}'

# Complete a todo (promotes children)
curl -X POST http://127.0.0.1:3456/api/todos/1/complete

# Delete a todo
curl -X DELETE http://127.0.0.1:3456/api/todos/1

# Get todo's children
curl http://127.0.0.1:3456/api/todos/1/children

Categories

# Get all categories
curl http://127.0.0.1:3456/api/categories

# Create a category
curl -X POST http://127.0.0.1:3456/api/categories \
  -H "Content-Type: application/json" \
  -d '{"name": "Errands", "color": "#52c41a", "icon": "🛒"}'

Database Schema

The app uses SQLite with the following structure:

  • todos: Main todo items (adjacency list model)
  • todo_closure: Closure table for efficient tree queries
  • categories: Todo categories with colors and icons
  • notification_rules: Category-specific notification settings
  • settings: App configuration (including encrypted API keys)

Usage Guide

Creating Multi-Leg Tasks

  1. Create a parent task: "Plan accountant meeting"
  2. Add children:
    • "Call accountant" (with due date)
    • "Prepare documents"
    • "Meet accountant" (details filled later)
  3. When you complete "Call accountant", it stays completed, and other siblings remain as children
  4. When you complete the parent "Plan accountant meeting", all remaining children move to the main view

Setting Up Claude Integration

  1. Get your API key from https://console.anthropic.com
  2. Open Settings (⚙️ icon)
  3. Enter your API key and click "Save"
  4. Click "Chat with Claude" to start asking questions

Custom Notifications

  1. Categories can have custom notification rules
  2. Set triggers based on:
    • Due date
    • Priority level
    • Time before due
  3. Choose notification type:
    • Desktop: System notification
    • Popup: Always-on-top window
    • Tray: Menu bar notification

File Locations

  • Database: ~/Library/Application Support/StickyTodoApp/todos.db (macOS)
  • Logs: Console output (check with npm run dev)
  • Config: Stored in database settings table

Security

  • ✅ API keys encrypted with OS-level security (safeStorage)
  • ✅ REST API bound to localhost only (127.0.0.1)
  • ✅ Context isolation enabled in renderer
  • ✅ No remote code execution
  • ✅ Sandboxed renderer process

Troubleshooting

Port Already in Use

If port 3456 is in use, check for other instances:

lsof -i :3456

Database Locked

Close all instances of the app and restart.

API Key Not Working

  1. Verify your API key at https://console.anthropic.com
  2. Remove and re-add the key in Settings
  3. Check console for error messages

License

MIT

Credits

Built with ❤️ using Claude Code

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages