Update README: tech stack, features checklist, project structure, env vars
This commit is contained in:
@@ -7,6 +7,10 @@ Built for fun, maintained with pride, named with intent.
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Clone
|
||||
git clone ssh://git@git.dustin.coffee:2222/hobokenchicken/dumpsterChat.git
|
||||
cd dumpsterChat
|
||||
|
||||
# Copy and edit environment variables
|
||||
cp .env.example .env
|
||||
$EDITOR .env
|
||||
@@ -26,31 +30,83 @@ npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
|
||||
| Layer | Technology |
|
||||
|-------|-----------|
|
||||
| Backend | Go, Chi router, pgx, gorilla/websocket |
|
||||
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, Zustand |
|
||||
| Database | PostgreSQL 16 |
|
||||
| Cache | Valkey (Redis-compatible) |
|
||||
| File storage | MinIO (S3-compatible) |
|
||||
| Voice/video | LiveKit |
|
||||
| TURN | coturn |
|
||||
| Reverse proxy | Caddy |
|
||||
| Auth | Argon2id + WebAuthn passkeys (Phase 3) |
|
||||
|
||||
## Features
|
||||
|
||||
- [x] Registration + login (Argon2id)
|
||||
- [x] Server + channel CRUD
|
||||
- [x] Messaging with WebSocket real-time delivery
|
||||
- [x] Cursor-based message pagination
|
||||
- [x] User profiles (display name, bio, accent color, status, avatar/Gravatar)
|
||||
- [x] File uploads (MinIO)
|
||||
- [x] Giphy GIF search + trending
|
||||
- [x] Terminal/Gruvbox dark aesthetic
|
||||
- [ ] Voice/video rooms (LiveKit, Phase 2)
|
||||
- [ ] Roles + permissions (Phase 3)
|
||||
- [ ] PWA push notifications (Phase 3)
|
||||
- [ ] WebAuthn passkeys (Phase 3)
|
||||
- [ ] TUI client (Phase 5)
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
dumpster/
|
||||
dumpsterChat/
|
||||
├── cmd/
|
||||
│ ├── server/ # Main API + WebSocket gateway
|
||||
│ ├── tui/ # Terminal client (Phase 5)
|
||||
│ └── migrate/ # Database migrations CLI
|
||||
│ ├── migrate/ # Database migration CLI
|
||||
│ └── tui/ # Terminal client (Phase 5)
|
||||
├── internal/
|
||||
│ ├── auth/ # Auth logic
|
||||
│ ├── auth/ # Registration, login, sessions, profiles
|
||||
│ ├── channel/ # Channel CRUD handlers
|
||||
│ ├── config/ # Environment-based config
|
||||
│ ├── db/ # PostgreSQL connection + schema migrations
|
||||
│ ├── gateway/ # WebSocket hub + client fanout
|
||||
│ ├── giphy/ # Giphy API client (search + trending)
|
||||
│ ├── message/ # Message CRUD + WS broadcast
|
||||
│ ├── middleware/ # Session auth middleware
|
||||
│ ├── server/ # Server CRUD + membership
|
||||
│ ├── channel/ # Channel CRUD
|
||||
│ ├── message/ # Message CRUD
|
||||
│ ├── voice/ # LiveKit integration
|
||||
│ ├── role/ # Roles + permissions
|
||||
│ ├── gateway/ # WebSocket gateway
|
||||
│ ├── upload/ # File upload (minio)
|
||||
│ └── middleware/ # Auth, rate limiting, CORS
|
||||
├── migrations/ # SQL migrations
|
||||
│ └── upload/ # MinIO file upload + serve
|
||||
├── web/ # React frontend (PWA)
|
||||
├── docker/ # Docker Compose + Caddyfile
|
||||
├── scripts/ # Helper scripts
|
||||
└── docs/ # Documentation
|
||||
│ ├── src/
|
||||
│ │ ├── components/ # Layout, ChatArea, LoginForm, UserSettings, GiphyPicker, etc.
|
||||
│ │ ├── stores/ # Zustand (auth, server, channel, message, ws)
|
||||
│ │ └── lib/ # API client, WebSocket client
|
||||
│ └── tailwind.config.js
|
||||
├── docker/ # Docker Compose, Dockerfile, Caddyfile, LiveKit config
|
||||
├── Makefile # Build targets
|
||||
└── .env.example # Environment template
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
See `.env.example` for the full list. Key variables:
|
||||
|
||||
| Variable | Description | Required |
|
||||
|----------|------------|----------|
|
||||
| `DUMPSTER_HOST` | Server bind address | No (default: localhost) |
|
||||
| `DUMPSTER_PORT` | Server port | No (default: 8080) |
|
||||
| `DUMPSTER_SECRET` | Session signing secret | Yes |
|
||||
| `POSTGRES_*` | Database connection | Yes |
|
||||
| `GIPHY_API_KEY` | Giphy API key for GIF search | No |
|
||||
| `MINIO_*` | File upload storage | No |
|
||||
|
||||
## Wiki
|
||||
|
||||
Full documentation: [dumpsterChat wiki](ssh://git@git.dustin.coffee:2222/hobokenchicken/dumpsterChat.wiki.git)
|
||||
|
||||
## License
|
||||
|
||||
AGPLv3
|
||||
|
||||
Reference in New Issue
Block a user