|
| 1 | +## Changelist |
| 2 | + |
| 3 | +- Created Express backend with Socket.IO support |
| 4 | +- Implemented real-time messaging between connected users |
| 5 | +- Added chat history for newly connected users |
| 6 | +- Added username persistence using localStorage |
| 7 | +- Added online user counter |
| 8 | +- Added join announcements with a 10-minute repeat window |
| 9 | +- Added message timestamps |
| 10 | +- Added Enter-to-send functionality, with Shift+Enter for a new line |
| 11 | +- Added auto-scroll to latest message |
| 12 | +- Added own-message highlighting to distinguish sent from received |
| 13 | +- Styled chat interface with responsive CSS |
| 14 | +- Configured CORS and Express middleware |
| 15 | +- Added a /health endpoint for deployment health checks |
| 16 | +- Rendered messages with textContent to prevent script injection |
| 17 | +- Validated and trimmed usernames on the server |
| 18 | +- Capped chat history at 200 messages and message length at 500 characters |
| 19 | +- Re-sent the username on every reconnect so messages keep the correct author |
| 20 | +- Cleared the message list before replaying history to prevent duplicates |
| 21 | +- Loaded the Socket.IO client from a pinned CDN version matching the server |
| 22 | +- Moved the backend URL into config.js so the frontend can be hosted separately |
| 23 | +- Added a build step to override the backend URL from an environment variable |
| 24 | +- Added .gitignore and removed node_modules from version control |
| 25 | +- Added netlify.toml and render.yaml to configure both deployments |
| 26 | +- Deployed the backend on Render and the frontend on Netlify |
| 27 | + |
| 28 | +## Known limitations |
| 29 | + |
| 30 | +- Messages are stored in memory, so the history resets when the backend restarts |
| 31 | +- The backend sleeps after 15 minutes idle on the free tier, so the first load can take around 50 seconds |
0 commit comments