85 lines
6.9 KiB
Markdown
85 lines
6.9 KiB
Markdown
# Dashy Project Refactor: Progress Report
|
|
|
|
**Objective:** Transition Dashy from a browser-based SQLite (local storage) application to a Client-Server architecture using a Python FastAPI backend with a persistent database.
|
|
|
|
---
|
|
|
|
## ✅ Completed Tasks
|
|
|
|
### 1. Backend Infrastructure Setup
|
|
- Created `backend/` directory structure.
|
|
- Configured `requirements.txt` with essential libraries (`fastapi`, `sqlalchemy`, `pydantic`, `jose`, etc.).
|
|
- **Fix:** Pinned `bcrypt==4.0.1` to resolve compatibility issues with `passlib`.
|
|
|
|
### 2. Database Modeling
|
|
- **Schema Design:** Translated the original `db.js` schema into SQLAlchemy models in `models.py`.
|
|
- **Relationships:** Established Many-to-Many relationships for Task Tags and One-to-Many for User Tasks and Notes.
|
|
- **Audit Logging:** Implemented a robust Audit Log system to track all user actions.
|
|
|
|
### 3. API Development
|
|
- **Main App (`main.py`):** Set up FastAPI with CORS middleware enabled for frontend communication.
|
|
- **Authentication:** Built JWT-based login flow in `auth.py`.
|
|
- **Endpoints:** Created initial endpoints for:
|
|
- User retrieval
|
|
- Task CRUD (Create, Read, Update)
|
|
- Audit log retrieval/creation
|
|
|
|
### 4. Data Migration & Environment Handling
|
|
- **Seeding:** Created `seed.py` to migrate initial prototype data into the new database.
|
|
- **CIFS/NAS Fix:**
|
|
- Implemented `DASHY_DB_PATH` environment variable support to allow the database file to reside on a local disk while code stays on the NAS.
|
|
- Added a 30-second connection timeout to mitigate network latency.
|
|
|
|
---
|
|
|
|
## 🚧 Current Status
|
|
- **Backend:** Feature-complete for the first phase.
|
|
- **Database:** Schema is stabilized, seeding logic is verified, and database is active.
|
|
- **Frontend:** Integrated with FastAPI backend via `api.js`. Legacy WASM SQLite files archived.
|
|
|
|
---
|
|
|
|
## ⏭️ Upcoming Steps
|
|
|
|
### Phase 2: Frontend Refactor & Workflow Polish (✅ Completed)
|
|
1. **API Integration:** Created `api.js` to handle network requests, swapped `DashyDB` for async API calls in `app.jsx`, and updated Login to use JWT tokens.
|
|
2. **Legacy Cleanup:** Archived `db.js` and `data.jsx` to `Dashy-v1/scraps/` and removed `sql.js` WASM dependency from `Dashy.html`.
|
|
3. **API Base URL Fix:** Updated `api.js` to dynamically use the browser's hostname to resolve "Connection Refused" errors.
|
|
4. **Audit Rendering Crash Fix:** Resolved the `TASK_AUDIT` ReferenceError by passing live API audit logs into the `TaskDetail` modal.
|
|
5. **UI State Refresh Fix:** Modified the `useApiData` hook to fetch subsequent updates silently without unmounting the app (fixing the drag-and-drop refresh bug).
|
|
6. **Task Completion:** Added a "Mark as completed" button, removed closed tasks from the main Overview board, and set up audit logging.
|
|
7. **User Views Update:** Updated `UserScreen` to accurately display open task counts and render a dedicated, faded "Completed" section for closed tasks.
|
|
8. **Task Reopening:** Added a "Reopen task" button to restore accidentally closed tasks back to the queue.
|
|
9. **User Management (Settings):** Built backend API endpoints (`POST`, `PATCH`, `DELETE` for `/users`) and wired up the `WorkspaceTab` allowing Admins to manage the team from the UI.
|
|
10. **Task Editing:** Implemented inline editing for task descriptions using an active text box state with "Save/Cancel" actions.
|
|
11. **UI Cleanup:** Removed hardcoded, prototype placeholder notes from the `TaskDetail` modal to prepare for future dynamic notes integration.
|
|
12. **Soft Deletion & Recovery:** Replaced hard-deletion with "Soft Deletion" by adding a `deleted_at` field to the Task model. Created a new Admin-only "Deleted" tab that allows restoring tasks from the trash via a new `/restore` endpoint.
|
|
13. **Permanent Deletion Wiring Fix:** Resolved a three-layer bug where the delete button was non-functional by adding the missing props and handlers across three files.
|
|
14. **Password Management:** Made the "Change password" flow real with backend password hashing and current-password verification.
|
|
15. **Real Login Authentication:** Fixed a security bug where the login screen accepted any password. implemented proper 401 handling.
|
|
16. **Network Hardening:** Configured the frontend to use a relative `/api` path via an Nginx SSL reverse proxy.
|
|
17. **API Authentication Enforcement:** Applied JWT Bearer token validation to all sensitive routes.
|
|
18. **Persistent Workspace Settings:** Added a `Workspace` database model to persist global dashboard settings like Name and Timezone.
|
|
19. **Dynamic UI Integration:** Completely refactored the navigation and boards to build columns and tabs dynamically from the live database user list.
|
|
20. **Functional Search:** Implemented a real-time task search feature. Clicking the search icon now reveals an inline search bar that filters tasks by title, description, or tags across all views.
|
|
21. **Advanced Audit Filtering:** Upgraded the Audit Log for Admins with a search bar and a granular event type filter. Admins can now filter the history by specific actions (e.g., "deleted tasks", "moved tasks", "user management") and search through summaries in real-time.
|
|
22. **Persistent Task Reordering:** Implemented drag-and-drop reordering within and between columns.
|
|
- **Backend:** Added a `position` (Float) column to the `tasks` table and updated API endpoints to support position updates and sorted fetching.
|
|
- **UI:** Enhanced the Kanban board with a "drop-between-cards" detection logic and a visual blue drop indicator. Positions are persisted to the database instantly on drop.
|
|
23. **Keyboard Shortcuts:** Added global support for keyboard navigation:
|
|
- **`Escape`**: Instantly close any open modal (Task Detail, Add Task, Settings, or Audit Logs).
|
|
- **`n`**: Open the "Add Task" modal from the main dashboard (disabled while typing in inputs).
|
|
24. **Drag-and-Drop Stability:** Fixed a bug where tasks would "disappear" if dropped in an invalid area. Tasks now remain visible at their original position if a drop is cancelled.
|
|
25. **User Deletion Safety:** Implemented a backend check to prevent deleting users who have assigned tasks or notes. Upgraded the frontend `ApiService` to correctly parse and display these descriptive error messages from the backend.
|
|
26. **Enhanced User Management:** Admins can now manage full team profiles (Name, Role, Email, and Phone) during both user creation and inline editing in the Workspace settings.
|
|
27. **Real-time Updates (SSE):** Implemented a global real-time notification system using Server-Sent Events (SSE). Any change made by one user (moving tasks, adding notes, updating profiles) is now instantly broadcast to all other connected clients. Switched from WebSockets to SSE to ensure 100% compatibility with Nginx and reverse proxies without extra configuration.
|
|
|
|
### Phase 3: Advanced Features
|
|
- **iMessage Integration:** Develop the "Molty" bridge for phone-to-task creation.
|
|
- **File Uploads:** Support for attaching photos/documents to tasks.
|
|
|
|
---
|
|
|
|
**Last Updated:** Wednesday, May 13, 2026
|
|
**Status:** Phase 3 in Progress / Real-time Updates Active
|