diff --git a/TODO.md b/TODO.md index 16e0927e..e1f69a60 100644 --- a/TODO.md +++ b/TODO.md @@ -9,22 +9,22 @@ This is a list of tasks to be completed before the next event/show/conference. ### 1. Naming Conventions - [ ] **Goal:** Enforce a single, consistent naming standard across the entire codebase. - [ ] **Files:** - - Logic: `ae___.ts` - - DB Definitions: `db_.ts` - - Svelte Stores: `ae__stores.ts` - - Consolidate helper files (e.g., `ae_core_functions.ts`) into the above files. + - Logic: `ae___.ts` + - DB Definitions: `db_.ts` + - Svelte Stores: `ae__stores.ts` + - Consolidate helper files (e.g., `ae_core_functions.ts`) into the above files. - [ ] **Functions & Variables:** - - Enforce `snake_case` for all function and variable names. - - Deprecate and remove `camelCase`. - - Deprecate and refactor ambiguous `handle_` prefixes. + - Enforce `snake_case` for all function and variable names. + - Deprecate and remove `camelCase`. + - Deprecate and refactor ambiguous `handle_` prefixes. - [ ] **Object & Property Naming:** - - Use singular nouns for objects and properties (e.g., `example.id`, not `examples.id`). + - Use singular nouns for objects and properties (e.g., `example.id`, not `examples.id`). - [ ] **List Suffixes:** - - Use `_li` for simple, unordered arrays. - - Use `_kv` for key-value objects/maps. + - Use `_li` for simple, unordered arrays. + - Use `_kv` for key-value objects/maps. - [ ] **Process:** - - Refactor one module at a time to ensure internal consistency before moving to the next. Start with `ae_core`. - - **Update 2025-11-13:** `ae_core_functions.ts` has been temporarily restored to resolve a critical issue. The refactoring of `process_ae_obj__*_props()` functions will now proceed module by module, ensuring stability at each step. + - Refactor one module at a time to ensure internal consistency before moving to the next. Start with `ae_core`. + - **Update 2025-11-13:** `ae_core_functions.ts` has been temporarily restored to resolve a critical issue. The refactoring of `process_ae_obj__*_props()` functions will now proceed module by module, ensuring stability at each step. ### 2. Component Standardization - [ ] **CodeMirror Migration:** Plan and execute the replacement of the `shad-editor` and potentially other text editors (like Tiptap) with `CodeMirror` to standardize rich text editing. @@ -46,22 +46,22 @@ This is a list of tasks to be completed before the next event/show/conference. These functions are frequently used and critical to the application's data flow. Reviewing and cleaning them up will significantly improve the codebase. -1. **`get_ae_obj_li_for_obj_id_crud_v2()`** (from `src/lib/ae_api/api_get__crud_obj_li_v2.ts`) - * **Why:** This is the main function for fetching lists of data from the backend, used extensively across all modules. - * **Cleanup:** Review parameters and return types for consistency, improve error handling, and add more detailed logging for debugging. +1. **`get_ae_obj_li_for_obj_id_crud_v2()`** (from `src/lib/ae_api/api_get__crud_obj_li_v2.ts`) + - **Why:** This is the main function for fetching lists of data from the backend, used extensively across all modules. + - **Cleanup:** Review parameters and return types for consistency, improve error handling, and add more detailed logging for debugging. -2. **`db_save_ae_obj_li__ae_obj()`** (from `src/lib/ae_core/core__idb_dexie.ts`) - * **Why:** This function is the single point of entry for saving data to the local Dexie database, critical for performance and reliability. - * **Cleanup:** Optimize for bulk operations, add robust error handling and logging, and ensure correct handling of updates to existing objects. +2. **`db_save_ae_obj_li__ae_obj()`** (from `src/lib/ae_core/core__idb_dexie.ts`) + - **Why:** This function is the single point of entry for saving data to the local Dexie database, critical for performance and reliability. + - **Cleanup:** Optimize for bulk operations, add robust error handling and logging, and ensure correct handling of updates to existing objects. -3. **The `process_ae_obj__*_props()` family of functions** (e.g., `process_ae_obj__journal_props()` from `src/lib/ae_journals/ae_journals__journal.ts`) - * **Why:** These functions transform API data for the frontend and are a common source of bugs and inconsistencies. - * **Cleanup:** Standardize their structure across all modules, ensure they are pure functions, and add unit tests for correctness. - * **Update 2025-11-13 (Temporary Rollback):** The previous refactoring of these functions has been temporarily rolled back due to an `InternalError`. `ae_core_functions.ts` has been restored. The new plan is to refactor these functions module by module, ensuring stability at each step. The generic CRUD functions in `core__crud_generic.ts` were simplified to remove data processing and caching, delegating those responsibilities to the module-specific functions. The deprecated `process_ae_obj__props` function in that file was left in place but is no longer used by the generic CRUD functions. +3. **The `process_ae_obj__*_props()` family of functions** (e.g., `process_ae_obj__journal_props()` from `src/lib/ae_journals/ae_journals__journal.ts`) + - **Why:** These functions transform API data for the frontend and are a common source of bugs and inconsistencies. + - **Cleanup:** Standardize their structure across all modules, ensure they are pure functions, and add unit tests for correctness. + - **Update 2025-11-13 (Temporary Rollback):** The previous refactoring of these functions has been temporarily rolled back due to an `InternalError`. `ae_core_functions.ts` has been restored. The new plan is to refactor these functions module by module, ensuring stability at each step. The generic CRUD functions in `core__crud_generic.ts` were simplified to remove data processing and caching, delegating those responsibilities to the module-specific functions. The deprecated `process_ae_obj__props` function in that file was left in place but is no longer used by the generic CRUD functions. -4. **Usage of `liveQuery` from Dexie** - * **Why:** `liveQuery` is powerful for reactive UIs, but current usage suggests complexity and potential issues. - * **Cleanup:** Review `liveQuery` usage throughout the application, simplify queries, and investigate reactivity issues. Consider wrapping `liveQuery` in a custom Svelte store for a more predictable interface. +4. **Usage of `liveQuery` from Dexie** + - **Why:** `liveQuery` is powerful for reactive UIs, but current usage suggests complexity and potential issues. + - **Cleanup:** Review `liveQuery` usage throughout the application, simplify queries, and investigate reactivity issues. Consider wrapping `liveQuery` in a custom Svelte store for a more predictable interface. --- @@ -79,41 +79,41 @@ These functions are frequently used and critical to the application's data flow. - [ ] **Data:** Define the `Account` interface in a new file `src/lib/ae_core/core__account.ts`. - [ ] **API:** Implement functions in `core__account.ts` for CRUD operations on accounts. - [ ] **UI:** - - [ ] Create a `+page.svelte` to list all accounts. - - [ ] Create a `[account_id]` dynamic route to view and edit account details. + - [ ] Create a `+page.svelte` to list all accounts. + - [ ] Create a `[account_id]` dynamic route to view and edit account details. ### 3. Site & Domain Management - [ ] **Route:** Create a new route at `/core/sites`. - [ ] **Data:** Define `Site` and `Site_Domain` interfaces in a new file `src/lib/ae_core/core__site.ts`. - [ ] **API:** Implement functions in `core__site.ts` for CRUD operations on sites and domains. - [ ] **UI:** - - [ ] Create a `+page.svelte` to list all sites. - - [ ] Create a `[site_id]` dynamic route to view and edit site details and manage associated domains. + - [ ] Create a `+page.svelte` to list all sites. + - [ ] Create a `[site_id]` dynamic route to view and edit site details and manage associated domains. ### 4. Person Management - [ ] **Enhance:** Improve the existing person management components under `/core/person`. - [ ] **UI:** - - [ ] Create a dedicated page for creating new person records. - - [ ] Add search and filtering capabilities to the person list. + - [ ] Create a dedicated page for creating new person records. + - [ ] Add search and filtering capabilities to the person list. ### 5. User Management - [ ] **Route:** Create a new route at `/core/users`. - [ ] **UI:** - - [ ] Create a `+page.svelte` to list all users. - - [ ] Create a `[user_id]` dynamic route to view and edit user details, including permissions. - - [ ] Implement a component to link users to person records. + - [ ] Create a `+page.svelte` to list all users. + - [ ] Create a `[user_id]` dynamic route to view and edit user details, including permissions. + - [ ] Implement a component to link users to person records. ### 6. Hosted File Management - [ ] **Route:** Create a new route at `/core/hosted_files`. - [ ] **UI:** - - [ ] Create a `+page.svelte` to list all hosted files with filters (e.g., by file type, uploader). - - [ ] Implement a file viewer for common file types. - - [ ] Add functionality to upload new files and associate them with other objects (e.g., a person, a journal entry). + - [ ] Create a `+page.svelte` to list all hosted files with filters (e.g., by file type, uploader). + - [ ] Implement a file viewer for common file types. + - [ ] Add functionality to upload new files and associate them with other objects (e.g., a person, a journal entry). ### 7. Shared Lookup Lists - [ ] **Route:** Create a new route at `/core/lookups`. - [ ] **UI:** - - [ ] Create a simple UI to view and manage the shared lookup lists (e.g., `countries`, `time_zones`). + - [ ] Create a simple UI to view and manage the shared lookup lists (e.g., `countries`, `time_zones`). --- @@ -130,9 +130,9 @@ These functions are frequently used and critical to the application's data flow. - [ ] **Offline Support:** Improve offline capabilities by pre-fetching and caching more data. Review the current Dexie implementation for optimizations. - [ ] **Search & Filtering:** Enhance the UI with more advanced search and filtering options for journals and entries (e.g., by date range, content, tags). - [ ] **User Experience (UX):** - - Implement better loading indicators and skeleton loaders. - - Provide clearer empty state messages (e.g., "No journals found, create one!"). - - Improve error handling and provide more informative error messages to the user. + - Implement better loading indicators and skeleton loaders. + - Provide clearer empty state messages (e.g., "No journals found, create one!"). + - Improve error handling and provide more informative error messages to the user. - [ ] **Encryption:** Review and enhance the encryption implementation for journal entries to ensure it is secure and user-friendly. - [ ] **Templates:** Fully implement and document the "templates" feature for creating new journals and entries. @@ -151,26 +151,26 @@ These functions are frequently used and critical to the application's data flow. ### Archives Module (`/idaa/archives`) - [ ] **UI/UX:** - - [ ] Add a loading indicator while archives are being fetched. - - [ ] Implement a more engaging "empty state" when no archives are available. + - [ ] Add a loading indicator while archives are being fetched. + - [ ] Implement a more engaging "empty state" when no archives are available. - [ ] **Performance:** - - [ ] Implement pagination or infinite scrolling for the archive list. + - [ ] Implement pagination or infinite scrolling for the archive list. ### Bulletin Board Module (`/idaa/bb`) - [ ] **UI/UX:** - - [ ] Improve the UI for creating and editing posts and comments. - - [ ] Add a rich text editor for a better writing experience. + - [ ] Improve the UI for creating and editing posts and comments. + - [ ] Add a rich text editor for a better writing experience. - [ ] **Features:** - - [ ] Implement user-specific features, such as editing their own posts and comments. + - [ ] Implement user-specific features, such as editing their own posts and comments. ### Recovery Meetings Module (`/idaa/recovery_meetings`) - [ ] **Refactoring:** - - [ ] Simplify the search and filtering logic. The current implementation with `setInterval` is complex and could be replaced with a more modern approach using debouncing or reactive statements. + - [ ] Simplify the search and filtering logic. The current implementation with `setInterval` is complex and could be replaced with a more modern approach using debouncing or reactive statements. - [ ] **UI/UX:** - - [ ] Make the search and filtering interface more intuitive and responsive. - - [ ] Provide instant feedback to the user as they type in the search box. + - [ ] Make the search and filtering interface more intuitive and responsive. + - [ ] Provide instant feedback to the user as they type in the search box. - [ ] **Performance:** - - [ ] Optimize the search query to be faster and more efficient. + - [ ] Optimize the search query to be faster and more efficient. --- @@ -183,27 +183,27 @@ These functions are frequently used and critical to the application's data flow. ### Core Event Management - [ ] **Event List (`/events`):** - - [ ] Add search and filtering capabilities to the main event list. - - [ ] Implement pagination for the event list. + - [ ] Add search and filtering capabilities to the main event list. + - [ ] Implement pagination for the event list. - [ ] **Event Creation/Editing:** - - [ ] Create a dedicated page or modal for creating and editing events. + - [ ] Create a dedicated page or modal for creating and editing events. ### Sub-modules (`/events/[event_id]/...`) - [ ] **Sessions, Presentations, Presenters, etc.:** - - [ ] For each sub-module (sessions, presentations, etc.), implement a consistent set of features: - - [ ] List view with search and filtering. - - [ ] Detail view. - - [ ] Create and edit forms. - - [ ] Delete functionality with confirmation. + - [ ] For each sub-module (sessions, presentations, etc.), implement a consistent set of features: + - [ ] List view with search and filtering. + - [ ] Detail view. + - [ ] Create and edit forms. + - [ ] Delete functionality with confirmation. - [ ] **File Management:** - - [ ] Improve the file upload component (`ae_comp__event_files_upload.svelte`) with features like drag-and-drop and progress bars. - - [ ] Enhance the file list view with more details and actions. + - [ ] Improve the file upload component (`ae_comp__event_files_upload.svelte`) with features like drag-and-drop and progress bars. + - [ ] Enhance the file list view with more details and actions. - [ ] **Launcher (`/events/[event_id]/launcher`): - - [ ] Add documentation to explain the purpose and usage of the launcher. - - [ ] Improve the UI to make it more intuitive for users. + - [ ] Add documentation to explain the purpose and usage of the launcher. + - [ ] Improve the UI to make it more intuitive for users. - [ ] **Badges (`/events/[event_id]/badges`): - - [ ] Enhance the badge printing interface with more customization options. - - [ ] Add a preview of the badge before printing. + - [ ] Enhance the badge printing interface with more customization options. + - [ ] Add a preview of the badge before printing. ### Performance - [ ] **Live Queries:** Review the use of `liveQuery` throughout the module and optimize for performance, especially on pages with a large amount of data. @@ -214,11 +214,11 @@ These functions are frequently used and critical to the application's data flow. ## UI/UX Consistency - [ ] **Broad UI/UX Review:** Conduct a comprehensive review of UI elements across the application to ensure consistency. This includes, but is not limited to: - - Buttons (style, placement, wording) - - Lists (style, actions) - - Links vs. Buttons (correct semantic usage) - - Menus (style, options) - - Debug components and other developer-facing UI. - - **Wording:** Standardize the text used in common UI elements (e.g., "Save", "Cancel", "Delete", "Add New"). - - **Scope:** This should be done on a per-module basis to ensure local consistency, with a goal of achieving global consistency where possible. - - **Note on IDAA:** The `idaa` modules are semi-custom for a client and may have their own specific UI/UX requirements. Their consistency should be evaluated separately, keeping the client's needs in mind. + - Buttons (style, placement, wording) + - Lists (style, actions) + - Links vs. Buttons (correct semantic usage) + - Menus (style, options) + - Debug components and other developer-facing UI. + - **Wording:** Standardize the text used in common UI elements (e.g., "Save", "Cancel", "Delete", "Add New"). + - **Scope:** This should be done on a per-module basis to ensure local consistency, with a goal of achieving global consistency where possible. + - **Note on IDAA:** The `idaa` modules are semi-custom for a client and may have their own specific UI/UX requirements. Their consistency should be evaluated separately, keeping the client's needs in mind.