docs: add readme

This commit is contained in:
Alexander Daichendt 2025-02-13 14:42:34 +01:00
parent 744854fe0d
commit b4d693c3a8
2 changed files with 111 additions and 2 deletions

102
README.md Normal file
View file

@ -0,0 +1,102 @@
# Simple Chat
A real-time chat application built with React, TypeScript, and Bun, featuring WebSocket communication for instant messaging.
## Features
- Real-time messaging using WebSockets
- Multiple chat rooms support
- User presence indicators (join/leave system messages)
- Message editing and deletion
- Participant list
- Accessibility-focused UI
## Technology Stack
### Frontend
- React
- TypeScript
- TailwindCSS
- React Router
- Vitest for testing
### Backend
- Bun
- WebSocket Server
- TypeScript
## Getting Started
### Prerequisites
- Node.js (v22 or later)
- Bun runtime
- pnpm package manager
### Installation
1. Clone the repository:
```bash
git clone https://git.shiverpeak.xyz/alex/simple-chat
cd simple-chat
```
2. Install dependencies:
```bash
# Install client dependencies
cd client
pnpm install
# Install server dependencies
cd ../server
bun install
```
3. Start the development servers:
```bash
# Start the backend server
cd server
pnpm run dev
# In a new terminal, start the frontend
cd client
bun run dev
```
4. Open http://localhost:5173 in your browser
## Usage
1. Create a new room or join an existing one using a room ID
2. Enter your name to join the chat
3. Start chatting!
## Testing
Run the test suite:
```bash
cd client
pnpm test
```
## Limitations and Future Improvements
- Users can join the chat with the same name
- Server does not verify if a client action is valid, i.e. a user can delete another user's message if you send the right request
- Messages are not persisted, so they are lost when the server restarts and also its not possible to send new users a history
- no user authentication
- Client Websockets should be more robust, i.e. reconnecting
- Client state does not persist on refresh
- Client messages are rendered all at once, a virtual list would be better after a certain amount of messages
- Test coverage very limited: only a single component is tested
- Keyboard navigation and focus management could be improved
- Entire deployment process is missing, i.e. Dockerfiles, CI/CD, reverse proxy
- No Metrics, Traces or Logs
## License
This project is licensed under the MIT License

View file

@ -1,7 +1,14 @@
{ {
"name": "server", "name": "simple-chat-server",
"module": "index.ts", "private": true,
"version": "1.0.0",
"type": "module", "type": "module",
"author": {
"email": "git@daichendt.one",
"name": "Alexander Daichendt",
"url": "https://daichendt.one"
},
"packageManager": "bun@1.2.1",
"scripts": { "scripts": {
"dev": "bun --hot src/index.ts" "dev": "bun --hot src/index.ts"
}, },