Files
sanasto-wiki/docs/TODO.md
2026-01-23 00:17:43 +01:00

4.5 KiB

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

  • Full-text search across all languages (FTS5 integration)
  • Filter by category (word, phrase, proper_name, title, reference, other)
  • Alphabetical browsing per language with tabs
  • 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

  • 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

  • Search input loses focus on filter change
  • Mismatched enum syntax in models
  • Replace hardcoded LANGUAGE_COLUMNS with dynamic query
  • Improve fixture quality (resolved foreign key violations)
  • XLSX download button for entries
  • FTS5 integration (migration added)
  • Database schema implementation (all models and migrations)
  • Supported languages table with seed data