A modern task management application built with Flutter and ClojureDart, designed specifically for Mongolian language support. Inspired by Things-style task management, Mongol Focus provides a clean and intuitive interface for organizing your daily tasks.
- Create, Edit, and Delete Tasks: Full CRUD operations for task management
- Task Details: Support for task titles and detailed notes
- Task Completion: Mark tasks as done with automatic completion timestamp
- Task Prioritization: Set priority levels for tasks
- Due Dates: Optional due date assignment for tasks
- Task Reordering: Manual drag-and-drop sorting with display order persistence
- Subtasks Support: Create and manage subtasks for any parent task
- Subtask Navigation: Dedicated page for viewing and managing subtasks of a task
- Subtask Count Display: Show the number of subtasks for each task in the detail view
- Category Management: Create and manage custom categories/lists
- Category Icons: Assign icons to categories for visual organization
- Category Filtering: Filter tasks by category
- Sidebar Navigation: Quick access to categories via sidebar drawer
- Full-Text Search: Search tasks by title or notes content
- Category-Aware Search: Combine search with category filtering
- Real-Time Filtering: Instant search results as you type
- Today View: View all active (uncompleted) tasks
- Logbook View: Browse completed tasks sorted by completion date
- Settings Page: Customize app preferences
- Bottom Navigation: Easy switching between main views
- Smooth Animations: Fade transitions and entry animations for better UX
- Mongolian Text Rendering: Full support for vertical Mongolian script using the
mongolpackage - Multiple Font Families: Support for 8 different Mongolian fonts:
- OyunQaganTig
- OyunAgulaTig
- OyunGarbiqimelTig
- OyunGarqagTig
- OyunGurbanUlusTig
- OyunHaraTig
- OyunHawangTig
- OyunSoninTig
- Virtual Keyboard: Integrated Mongolian virtual keyboard for text input
- FST Input Method: Finite State Transducer (FST) based input method for efficient Mongolian text entry
- Mongolian UI Elements: All UI components support Mongolian text display
- SQLite Database: Local data storage using Drift (formerly Moor)
- Reactive Queries: Stream-based reactive database queries for real-time UI updates
- Data Migration: Built-in database migration support
- Material Design 3: Modern Material Design 3 UI components
- Dark Mode: Full dark theme support
- Responsive Layout: Adaptive layouts for different screen sizes
- Floating Action Button: Quick task creation with scroll-aware FAB
- Slidable Actions: Swipe actions on task cards for quick operations
- Dark Mode Toggle: Enable/disable dark theme
- Notification Settings: Configure notification preferences
- Language Settings: Language preference management
- Sidebar Control: Toggle sidebar visibility
- Framework: Flutter 3.10.4+
- Language: ClojureDart (Clojure for Dart/Flutter)
- Database: Drift (SQLite) with reactive streams
- Mongolian Support:
mongolpackage for vertical text renderingmongol_codefor Mongolian text encoding- Custom virtual keyboard implementation
- FST-based input method
- State Management: Atom-based state management with reactive streams
- UI Components: Material Design 3, custom Mongolian components
lib/
├── main.dart # Flutter entry point
├── database.dart # Drift database schema
└── connection/ # Database connection logic
src/minii_focus/
├── main.cljd # Application entry point
├── pages/
│ ├── home.cljd # Main home page
│ ├── settings.cljd # Settings page
│ ├── task_detail.cljd # Task detail view
│ └── subtasks_list.cljd # Subtasks list page
├── widgets/
│ ├── main_list.cljd # Task list widget
│ ├── task_card.cljd # Individual task card
│ ├── bottom_nav.cljd # Bottom navigation
│ ├── fab.cljd # Floating action button
│ ├── sidebar.cljd # Category sidebar
│ └── ... # Other UI components
├── logic/
│ ├── db.cljd # Database operations
│ ├── task.cljd # Task business logic
│ ├── task_actions.cljd # Task action handlers
│ ├── category_actions.cljd # Category operations
│ └── search_actions.cljd # Search functionality
└── state/
└── store.cljd # Global state management
assets/
├── fonts/ # Mongolian font files
└── fst/ # FST input method resources
- Flutter SDK 3.10.4 or higher
- Clojure CLI tools
- Dart SDK (included with Flutter)
- Clone the repository:
git clone <repository-url>
cd mongol-focus- Install Flutter dependencies:
flutter pub get- Install ClojureDart dependencies:
clj -M:cljd prep- Generate database code:
flutter pub run build_runner build- Run the application:
flutter runTo build the ClojureDart code:
clj -M:cljd prepTo generate database code:
flutter pub run build_runner build --delete-conflicting-outputsThe application uses Drift for database management with two main tables:
- Tasks: Stores task information (title, notes, completion status, due dates, priority, category, parent_id for subtasks, display_order for sorting, etc.)
- Categories: Stores category/list information (name, icon, position)
Tasks support a self-referential relationship through the parent_id field, allowing tasks to have subtasks. The main task list only shows top-level tasks (tasks without a parent).
drift: Reactive SQLite databasemongol: Mongolian vertical text renderingmongol_code: Mongolian text encodingflutter_slidable: Swipeable list itemsflutter_styled_toast: Toast notificationsvibration: Haptic feedbackhttp: HTTP clientarchive: Archive file handlingpath_provider: File system pathsintl: Internationalization
tensegritics/clojuredart: ClojureDart runtimeamjil/mongol-virtual-keyboard: Mongolian virtual keyboardamjil/mongol-date-picker: Mongolian date pickeramjil/mgl-components: Mongolian UI components
See LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.