⚠️ The new ZFordDev Documentation Portal is currently under active development. Search is not yet enabled and some pages are still missing. Please bear with us while we transition to the new system.
Architecture & Rationale
SchedPlus is built around a simple idea: good software stays flexible. This page explores why the core engine is completely UI‑agnostic, how our data model evolved, and why the future of SchedPlus is all about choosing the workflow that fits you best.
The Decoupled Multi‑UI Core
One of the biggest strengths of SchedPlus is that the UI and the scheduling engine are completely separated. The backend handles tasks, sorting, and persistence. The UI simply asks for data and displays it however it wants.
This lets us build multiple interfaces — each with its own personality — without ever touching the core logic.
1. Tkinter (Fast & Minimal)
- Why we use it: Tkinter is built into Python, lightweight, and launches instantly.
- What it’s good for: Quick data entry, low‑resource machines, and users who want a simple “just let me add tasks” window.
2. PyQt (Polished & Visual)
- Why we use it: PyQt gives us a modern component system and a more expressive canvas.
- What it’s good for: Users who want a richer interface with panels, highlights, and a more traditional “app” feel.
3. RAW CLI Mode (Headless & Scriptable)
- Why we use it: The CLI is fast, portable, and perfect for automation.
- What it’s good for: Cron jobs, remote shells, scripting, and anyone who prefers terminal workflows.
New Direction: Workflow‑Specific UIs
SchedPlus is now expanding beyond traditional layouts. Instead of trying to force one UI to fit every workflow, we’re building dedicated interfaces for different styles of planning.
Each UI is designed to excel at one thing — and all of them plug into the same core engine.
Actively Being Tested:
-
Kanban View:
A column‑based workflow for people who think in stages rather than dates. -
Full Calendar View:
A visual grid for users who prefer a classic calendar layout.
The Philosophy Behind This
Instead of one giant UI that tries to do everything, SchedPlus grows through micro‑features added to specialized UIs.
Every new interface:
- works with the existing task engine
- uses the same database
- stays fully compatible with all other UIs
One day, a “final” UI might emerge as the default — but the real strength of SchedPlus is that it’s a multi‑UI learning tool. You pick the interface that matches your workflow, and the engine keeps everything consistent underneath.
Data Evolution: From Flat Files to SQLite
Early versions of SchedPlus stored tasks in a simple tasks.json file. It worked, but as the project grew, rewriting the entire file for every update became slow and risky.
To make the system reliable at scale, we moved to a dedicated SQLite database (data/tasks.db).
🔄 Automatic Migration
If you’re upgrading from an older version:
- SchedPlus checks for a legacy
tasks.json. - If no database exists yet, it imports your old tasks into SQLite.
- The JSON file is renamed to
.bakso your data stays safe and won’t be reprocessed again.
Engineering Limitations & Development Goals
SchedPlus is still early in its journey, and we’re open about what’s missing and what’s coming next.
Current Limitations
- Tasks are tied to single date/time values (no recurring logic yet).
- Database operations are synchronous, which can block heavier UI interactions.
Upcoming Improvements
- Recurring tasks (daily, weekly, custom loops).
- Conflict detection when two tasks overlap.
- Background worker threads for smoother PyQt performance.
- More workflow‑specific UIs as the engine continues to grow.