Chat App — Change Log¶
This log tracks software changes for this area.
Current status¶
| Item | Status | Notes |
|---|---|---|
| Active development | Open | Backend refactored and documented; frontend integration pending |
| Next release target | TBA | Will align with first frontend integration milestone |
| Known risk | Medium | Realtime + REST consistency and frontend alignment still in progress |
Recent changes (newest first)¶
| Date | Type | Summary | Impact | Reference |
|---|---|---|---|---|
| 2026-04-16 | Refactor | Split serializers into domain files (attachments, conversations, messages, participants) | Medium | serializers/ |
| 2026-04-16 | Refactor | Introduced service layer split (messages, attachments, participants, read_state, notifications) | High | services/ |
| 2026-04-16 | Refactor | Refactored API views into modular structure under views/ | Medium | views/ |
| 2026-04-16 | Refactor | Cleaned websocket consumer and aligned with service layer | Medium | consumers.py |
| 2026-04-16 | Feature | Added attachment upload-first flow with linking via websocket | High | attachments_api |
| 2026-04-16 | Feature | Implemented participant-based access control across REST and WS | High | participants_api |
| 2026-04-16 | Feature | Added message edit and soft-delete endpoints | Medium | message_actions_api |
| 2026-04-16 | Feature | Implemented read tracking via Participant.last_read_at | Medium | read_api |
| 2026-04-16 | Feature | Added websocket typing indicators | Low | consumers.py |
| 2026-04-16 | Feature | Added orphan attachment cleanup task | Low | tasks.py |
| 2026-04-16 | Refactor | Introduced full documentation set (models, serializers, services, views, consumers, index) | Medium | docs/ |
Open items and status¶
| ID | Title | Status | Priority | Owner | Target | Reference |
|---|---|---|---|---|---|---|
| CHAT-001 | Frontend integration (web) | Open | P1 | Unassigned | TBA | |
| CHAT-002 | Frontend integration (mobile) | Open | P1 | Unassigned | TBA | |
| CHAT-003 | Align websocket payload with REST serializers | Open | P1 | Unassigned | TBA | |
| CHAT-004 | Add realtime events for edit/delete | Open | P2 | Unassigned | TBA | |
| CHAT-005 | Add unread count endpoint optimization | Open | P2 | Unassigned | TBA | |
| CHAT-006 | Add conversation-level permissions abstraction | Open | P2 | Unassigned | TBA | |
| CHAT-007 | Replace query-token WS auth with header-based or secure upgrade | Open | P1 | Unassigned | TBA | |
| CHAT-008 | Add pagination for conversations list | Open | P3 | Unassigned | TBA |
Known bugs¶
| ID | Symptom | Severity | Status | Workaround | Reference |
|---|---|---|---|---|---|
| BUG-CHAT-001 | Websocket message payload differs from REST serializer shape | Medium | Open | Normalize in frontend adapter | |
| BUG-CHAT-002 | Typing events not throttled (can spam channel layer) | Low | Open | Add client-side debounce | |
| BUG-CHAT-003 | Attachment upload allows unused files until cleanup runs | Low | Open | Cleanup task mitigates |
Breaking changes and migrations¶
| Date | Change | Action required | Reference |
|---|---|---|---|
| 2026-04-16 | Serializer structure refactored into multiple modules | Update imports if directly referencing serializers | serializers/ |
| 2026-04-16 | Views moved into views/ module structure | Update URL imports if customized | views/ |
| 2026-04-16 | Service layer introduced for message and participant logic | Ensure new logic uses services instead of direct model access | services/ |
Notes¶
Backend status¶
The chat backend is now:
- structurally clean
- fully test-covered
- modularized into serializers, services, and views
- websocket-enabled
However, it is not yet fully integrated into frontend clients.
Main gap: frontend integration¶
Key missing pieces:
- unified message shape between REST and websocket
- frontend websocket lifecycle handling
- UI for attachments + upload-first flow
- read-state syncing
- participant management UI
Architectural direction¶
The refactor establishes a strong foundation:
- services own business logic
- views handle transport (REST)
- consumers handle realtime transport
- serializers define payload contracts
This makes the app ready for:
- frontend integration
- future scaling
- feature expansion (read receipts, reactions, etc.)
Next recommended steps¶
- Normalize websocket message payload to match MessageSerializer
- Build minimal frontend chat UI (web first)
- Add realtime updates for edit/delete
- Improve unread count performance
- Harden websocket authentication
Summary¶
The chat app has transitioned from:
- working but unstructured backend
to:
- clean, modular, documented system
It is now ready for the next phase:
- frontend integration and realtime UX completion