# Sanasto Wiki TODO ## Authentication & Authorization - [ ] **Authentication system** - [ ] Sessions controller and views (login/logout) - [ ] Password reset flow - [ ] Rate limiting on login attempts - [ ] Session management (remember me, session timeout) - [ ] **Invitation system** - [ ] Invitations controller and mailer - [ ] Invitation token generation and validation - [ ] Registration via invitation link - [ ] Token expiry (14 days) - [ ] **Authorization & roles** - [ ] Role-based access control middleware - [ ] Contributor permissions enforcement - [ ] Reviewer permissions enforcement - [ ] Admin permissions enforcement ## Core Features ### Search & Browse - [x] **Full-text search** across all languages (FTS5 integration) - [X] **Filter by category** (word, phrase, proper_name, title, reference, other) - [x] **Alphabetical browsing** per selected language - [x] **Live search** (AJAX updates without page reload) ### Entry Management - [ ] **Create entry form** with all language fields - [ ] **Edit entry form** (contributors only) - [ ] **Delete entries** (admin only, with confirmation) - [ ] **Bulk actions** (select multiple, bulk edit/delete) - [ ] **Entry validation** (at least one language required, category required) ### Suggested Meanings - [ ] **Submit alternative translation** form - [ ] **Review queue** for reviewers - [ ] **Approve/reject** workflow - [ ] **Display approved alternatives** on entry view - [ ] **Notifications** when suggestions are reviewed ### Comments & Discussion - [ ] **Add comment** form on entry view - [ ] **Edit/delete own comments** - [ ] **Comment threading** (optional: replies to comments) - [ ] **Comment notifications** for entry contributors ### History & Audit - [ ] **Entry version tracking** (record all changes in `entry_versions`) - [ ] **View edit history** on entry page - [ ] **Diff view** showing what changed - [ ] **Revert to previous version** (admin/reviewer only) ## User Management - [ ] **Admin dashboard** - [ ] Send invitations by email - [ ] Manage users (list, edit roles, deactivate) - [ ] System statistics (users, entries, contributions) - [ ] **User profile page** - [ ] Edit name, email, password - [ ] Set primary language preference - [ ] View contribution history - [ ] Personal statistics ## Import/Export - [x] **XLSX export** of all entries - [ ] **CSV import** for bulk entry creation - [ ] **CSV export** as alternative to XLSX - [ ] **Import validation** (check duplicates, validate data) ## UI/UX Improvements - [ ] **Mobile-responsive design** (translators use phones during services) - [ ] **Typography optimization** (easy to read quickly) - [ ] **Visual distinction** for verified vs unverified entries - [ ] **Keyboard shortcuts** (navigate search results, quick edit) - [ ] **Loading states** and progress indicators - [ ] **Error messages** and validation feedback - [ ] **Toast notifications** for actions (saved, deleted, etc.) ## Performance & Infrastructure - [ ] **Database indexes** review and optimization - [ ] **N+1 query prevention** (check all controller actions) - [ ] **Caching strategy** (page caching, fragment caching) - [ ] **Background jobs** setup (Solid Queue for emails) - [ ] **Database backup** strategy (Litestream configuration) ## Testing - [ ] **Controller tests** for all actions - [ ] **System tests** for critical user flows - [ ] Public browsing and search - [ ] Contributor creates/edits entry - [ ] Reviewer workflow - [ ] Admin user management - [ ] **Integration tests** for authentication flows - [ ] **Performance tests** for search queries ## Deployment - [ ] **Kamal configuration** - [ ] **Production environment** setup - [ ] **SSL certificate** configuration - [ ] **Monitoring** (error tracking, performance monitoring) - [ ] **Backup automation** (Litestream to S3 or similar) ## Future Considerations - [ ] **API endpoints** (REST API for mobile app) - [ ] **PDF/print export** for offline use - [ ] **Audio pronunciation** recordings - [ ] **Mobile app** (native or PWA) - [ ] **Offline mode** with sync - [ ] **Additional languages** (requires schema migration) --- ## Completed - [x] **Search input loses focus on filter change** - [x] **Mismatched enum syntax** in models - [x] **Replace hardcoded LANGUAGE_COLUMNS** with dynamic query - [x] **Improve fixture quality** (resolved foreign key violations) - [x] **XLSX download** button for entries - [x] **FTS5 integration** (migration added) - [x] **Database schema** implementation (all models and migrations) - [x] **Supported languages** table with seed data - [x] **Filters do not update with new search results**