75 lines
2.7 KiB
Markdown
75 lines
2.7 KiB
Markdown
# Steady
|
|
|
|
Steady is an ADHD-friendly task manager built with Flask. It provides a modular
|
|
application foundation, secure authentication, task and subtask management, a
|
|
seven-item Today view, status filters, priorities, progress indicators, and a
|
|
single-task Focus Mode with countdowns, time blocks, context cues, positive
|
|
completion feedback, forgiving streaks, bulk text capture, and portable JSON
|
|
backups with reversible completed-task clearing. Per-user settings control
|
|
theme, reading style, completion sound, and future reminder frequency.
|
|
|
|
## Local setup
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
python -m pip install -r requirements.txt
|
|
flask --app app run --debug
|
|
```
|
|
|
|
The development server is available at `http://127.0.0.1:5000`. Copy
|
|
`.env.example` to `.env` or export its values in your shell. Replace the sample
|
|
`SECRET_KEY` before using the app beyond local development.
|
|
|
|
## Database migrations
|
|
|
|
Apply the committed migrations after installing dependencies:
|
|
|
|
```bash
|
|
flask --app app db upgrade
|
|
```
|
|
|
|
When a model changes, generate a migration with
|
|
`flask --app app db migrate -m "Describe the schema change"`, review the
|
|
generated operations, and commit them so every environment applies the same
|
|
schema.
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
python -m pytest
|
|
```
|
|
|
|
Tests use an isolated in-memory SQLite database and never write to the local
|
|
development database.
|
|
|
|
## Data and backups
|
|
|
|
After signing in, open `/tasks/transfer` to:
|
|
|
|
- import up to 200 UTF-8 Markdown or plain-text task lines;
|
|
- download a versioned JSON backup without credentials or account identifiers;
|
|
- merge or replace tasks from a validated Steady backup; and
|
|
- clear completed tasks with an immediate user-scoped undo action.
|
|
|
|
JSON restore validates the complete file before changing tasks. Keep downloaded
|
|
backups private because task descriptions may contain personal information.
|
|
|
|
## Personalization
|
|
|
|
Open `/settings/` after signing in to choose Light, Dark, or system-controlled
|
|
color mode; enable a dyslexia-friendly local reading style; turn completion
|
|
sound on or off; and save a future reminder-frequency preference. The browser
|
|
reminder control checks capability only. It does not request notification
|
|
permission, register a service worker, or schedule reminders.
|
|
|
|
## Roles and admin placeholder
|
|
|
|
Steady recognizes `user`, `admin`, `viewer`, and `coach` roles. Viewers can read
|
|
and export their own tasks but cannot mutate task data; the other three roles
|
|
retain writes to their own tasks. Ownership checks apply independently of role.
|
|
|
|
The admin feature is absent by default. Setting `FEATURE_ADMIN=true` before the
|
|
application starts registers `/admin/`, which remains restricted to the `admin`
|
|
role. It is a data-free placeholder only: user management, role assignment, and
|
|
analytics are intentionally not implemented.
|