Skip to content

Minimalist, portable task manager - embeddable micro-frontend with framework-agnostic API handlers.

License

Notifications You must be signed in to change notification settings

WolffM/hadoku-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

308 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Hadoku Task Manager

A minimalist, portable task tracking micro-frontend

Live at: https://hadoku.me/task/

Fast, focused task management with tags, filtering, and multi-user support. Built as a reusable micro-frontend with framework-agnostic API handlers. Perfect for embedding in larger applications or using standalone.


๐Ÿ“ฑ Mobile App (Android)

Native Android app available! Built with Capacitor WebView wrapper.

Quick Download:

Repository: hadoku-task-mobile


โœจ Features

  • โšก Quick Task Entry - Type and press Enter
  • ๐Ÿท๏ธ Tag Support - Organize with #tags
  • ๐Ÿ” Smart Filtering - Filter by tag or view all
  • ๐ŸŽฏ Drag & Drop - Reorder tasks and move between boards
  • ๐ŸŽจ 9 Theme Families - Light, Dark, Strawberry, Ocean, Cyberpunk, Coffee, Lavender, Nature, Pink, Izakaya
  • ๐Ÿ“‹ Multi-Board - Organize tasks across multiple boards
  • โšก Optimistic Updates - Instant UI response with background sync
  • ๐Ÿ‘ฅ Multi-User - Public (localStorage), Friend/Admin (server sync)
  • ๐Ÿ”Œ Framework Agnostic - Pure handlers work with any backend

๐Ÿš€ Quick Start

Install and Run

npm install
npm run dev
# Open http://localhost:5173?userType=public

Build for Production

npm run build:all

Output:

  • Client: dist/index.js (~22KB gzipped), dist/style.css (~7KB gzipped)
  • Handlers: dist/server/ (TypeScript compiled to JavaScript)

๐Ÿ“ฆ Installation

As an NPM Package

npm install @wolffm/task

Basic Integration

Client-side:

import { mount } from '@wolffm/task/frontend'
import '@wolffm/task/style.css'

mount(document.getElementById('app'), {
  userType: 'public',
  sessionId: 'session-123'
})

Server-side (framework-agnostic):

import { TaskHandlers, TaskStorage } from '@wolffm/task/api'

// Implement storage for your environment (KV, filesystem, database, etc.)
const storage: TaskStorage = {
  getTasks: async userType => {
    /* your implementation */
  },
  saveTasks: async (userType, tasks) => {
    /* your implementation */
  },
  getStats: async userType => {
    /* your implementation */
  },
  saveStats: async (userType, stats) => {
    /* your implementation */
  }
}

// Use handlers with any framework (Express, Hono, Cloudflare Workers, etc.)
const tasks = await TaskHandlers.getTasks(storage, auth)
const newTask = await TaskHandlers.createTask(storage, auth, { title: 'Task' })

๐Ÿ’ก Usage

Creating Tasks

Buy groceries [Enter]                    # Plain task
Buy groceries #home [Enter]              # With tag
Fix bug #high-priority [Enter]           # Tagged task

Task Actions

  • โœ“ Mark complete
  • ร— Delete task
  • โœŽ Edit title
  • + Add tag
  • Drag Reorder or move between boards

Themes

Choose from 9 theme families via the theme picker (top-right), each with light and dark variants:

  • โ˜ผ Light / โ˜ฝ Dark - Clean and sophisticated defaults
  • โ– Strawberry - Sweet pink tones
  • โ‰ˆ Ocean - Deep sea blues
  • โ—† Cyberpunk - Neon dystopia
  • โ—‰ Coffee - Rich espresso
  • โœฟ Lavender - Soft purple
  • ๐ŸŒฟ Nature - Lush forest greens
  • ๐Ÿ’— Pink - Bubblegum vibes
  • ๐Ÿฎ Izakaya - Cozy Japanese bar aesthetic

๐Ÿ“š Documentation

Document Purpose Audience
ARCHITECTURE.md System design, patterns, technical decisions Developers integrating or extending
API.md Complete endpoint reference Backend implementers
CHANGELOG.md Version history and changes All users
CONTRIBUTING.md Contribution guidelines Contributors

Quick Links


๐Ÿ—๏ธ Architecture Highlights

Universal Adapter Pattern

This package separates pure business logic from framework-specific code:

// Handlers are pure functions - work with ANY framework
await TaskHandlers.getTasks(storage, auth)
await TaskHandlers.createTask(storage, auth, input)

Deployment flexibility:

  • โœ… Cloudflare Workers (KV storage)
  • โœ… Node.js + Express (filesystem storage)
  • โœ… Any framework that can call JavaScript functions

Client Architecture

  • React-based UI with optimistic updates
  • All user types use localStorage for instant feedback
  • Non-public users sync to server in background
  • 9 theme families (18 themes) with CSS custom properties

See ARCHITECTURE.md for detailed design documentation.


๐Ÿ” Security & Authentication

This micro-frontend delegates authentication to the parent application.

The task app:

  • โœ… Does NOT handle credentials or passwords
  • โœ… Receives userType and sessionId from parent
  • โœ… Uses these for storage namespacing only

Your parent app must:

  • โœ… Handle user login/logout
  • โœ… Validate authentication keys
  • โœ… Provide correct userType and sessionId
  • โœ… Secure API endpoints

See ARCHITECTURE.md - Security for complete security model.


๐Ÿค Contributing

Contributions are welcome! Please see CONTRIBUTING.md for:

  • Development workflow
  • Code style guidelines
  • How to add features
  • Pull request process

๐Ÿ“ License

MIT License - see LICENSE for details.


๐Ÿ”— Links


Author: WolffM

About

Minimalist, portable task manager - embeddable micro-frontend with framework-agnostic API handlers.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors