future enhancements - nself-org/nchat GitHub Wiki

Future Enhancements and TODOs

This document catalogs all planned enhancements and TODO items across the nself-chat codebase.

Status: Extracted on 2026-02-03 for v0.9.1 cleanup


API Endpoints (97 items)

  • Add admin authentication check
  • Add channel-based access control
  • Add refresh token to blacklist if using token blacklisting
  • Check authentication and authorization
  • Check if email or username already exists
  • Check if user exists
  • Check if user is admin
  • Create user in database via Hasura GraphQL mutation
  • Delete file from storage
  • Delete poll from database
  • Delete vote and update poll in database
  • Fetch actual compliance data from database
  • Fetch existing poll from database
  • Fetch poll from database
  • Fetch polls from database
  • Fetch previous vote if exists
  • Fetch real data from database
  • Fetch user's vote
  • Fetch webhook configuration from database
  • Get from session
  • Get user ID from session/auth
  • Get user from session/auth
  • Get workspace from database
  • Handle related data (messages, channels, etc.)
  • Hash password if provided
  • If email or username is being changed, check for conflicts
  • Implement actual invitation logic with Hasura/Nhost
  • Implement archival logic
  • Implement archiving via GraphQL mutation
  • Implement bulk deletion
  • Implement cache clearing logic
  • Implement deletion logic
  • Implement deletion via GraphQL mutation
  • Implement flagging via GraphQL mutation
  • Implement optimization logic
  • Implement role assignment via GraphQL mutation
  • Implement suspension via GraphQL mutation
  • Implement transfer via GraphQL mutation
  • In production, this would publish to Redis pub/sub
  • In production, this would query Redis for active typing indicators
  • In production, this would:
  • Insert events into database
  • Integrate with Socket.io or GraphQL subscriptions
  • Invalidate all existing sessions for this user
  • Load configured secret from environment/database
  • Log audit event
  • Process Discord webhook and post to channel
  • Process Telegram update and forward to appropriate channel
  • Queue background job to compile the data export
  • Replace with actual database query using Hasura GraphQL
  • Save to database
  • Save updated poll to database
  • Save vote and updated poll to database
  • Send magic link email
  • Send realtime notifications to invited users
  • Send to monitoring service
  • Send verification email if email auth is enabled
  • Send verification email if required
  • Soft delete or hard delete based on config
  • Update poll in database
  • Update quota
  • Update user in database via Hasura GraphQL mutation
  • Validate session and get user ID
  • Validate webhook token and find target channel
  • Verify password before disabling 2FA
  • Verify password before regenerating codes

Settings and Profile Features (11 items)

  • Call GraphQL mutation to clear history
  • Implement 2FA toggle
  • Implement OAuth connection
  • Implement account deletion
  • Implement account disconnection
  • Implement avatar removal
  • Implement avatar upload
  • Implement email change
  • Implement password change
  • Save to backend
  • Save to backend via GraphQL mutation

Components (42 items)

  • Call API to create group DM
  • Call API to create or get existing DM
  • Call API to delete group
  • Call API to leave group
  • Call API to remove member
  • Call API to unpin
  • Call API to update
  • Call API to update role
  • Call GraphQL mutation
  • Get from auth context
  • Implement API calls to fetch compliance data
  • Implement actual 2FA disable
  • Implement actual 2FA verification
  • Implement actual account deletion
  • Implement actual data deletion API call
  • Implement actual data export API call
  • Implement actual device removal
  • Implement actual download
  • Implement actual job execution
  • Implement actual password change API call
  • Implement actual push toggle
  • Implement actual revoke all sessions
  • Implement actual session revocation
  • Implement actual unblock API call
  • Implement add option functionality
  • Implement remind me functionality
  • Load from API
  • Navigate to or create DM with user
  • Save settings to backend
  • These tests fail due to Radix Select portal rendering in JSDOM
  • Update setting

Hooks and State Management (35 items)

  • Add 'manage_stickers' permission to PERMISSIONS
  • Call GraphQL mutation
  • Call GraphQL mutation directly
  • Fetch from server via GraphQL
  • Generate QR code data
  • Get from E2EE manager
  • Handle file uploads when storage is implemented
  • Implement GraphQL mutation
  • Implement GraphQL mutation to update privacy settings
  • Implement GraphQL query
  • Implement account deletion
  • Implement data export
  • In production:
  • Open edit history modal
  • Open forward modal with multiple messages
  • Open reactions modal
  • Sync with backend
  • Upload to storage service first
  • fetch from user service
  • implement read state

Services and Libraries (67 items)

  • Calculate from database
  • Collect real stats from transports
  • Delete from database
  • Fetch from database
  • Get from context
  • Implement API call to mark as read
  • Implement API call to send message
  • Implement API call to send token to server
  • Implement GraphQL mutation
  • Implement actual API call
  • Implement actual channel creation via GraphQL
  • Implement actual cleanup logic
  • Implement actual message creation via GraphQL
  • Implement actual queue stats from database
  • Implement actual user creation via GraphQL
  • Implement channel member addition via GraphQL
  • Implement file download and upload
  • Implement image moderation using AWS Rekognition or Google Vision
  • Implement navigation
  • Implement persistent storage
  • Implement reaction creation via GraphQL
  • Implement semantic similarity search
  • Implement sender key distribution for groups
  • Implement server-side fetching with GraphQL
  • Implement signaling via Socket.io
  • Implement trust verification
  • In production, fetch from server via GraphQL
  • Integrate with Sentry, Datadog, or other error tracking service
  • Load and reschedule any pending reminders from storage
  • Load from database when available
  • Load signed prekey and one-time prekeys
  • Query database for actual stats
  • Query database for actual usage
  • Query database for detailed breakdown
  • Replace with actual API call
  • Retrieve trusted identity key
  • Save to database
  • Send actual notification (email, webhook, etc.)
  • Send email notification about payment failure
  • Send email notification about trial ending
  • Send metrics to API
  • Send notifications
  • Set up scheduled task for daily standup
  • Store in PostgreSQL using Hasura or direct connection
  • Store message type in DB
  • Update in database

Other Areas (remaining items)

  • Implement actual seeding logic
  • Implement call feature
  • Implement calling feature
  • Load from backend via GraphQL
  • Navigate to or open DM
  • Navigate to or open DM with user
  • Open file preview or download
  • Open invite modal
  • Open report modal
  • Properly integrate with useCallInvitation hook */}
  • Save to backend via GraphQL