53 lines
2.9 KiB
Markdown
53 lines
2.9 KiB
Markdown
# Todo3
|
||
|
||

|
||
|
||
Visually, this is an attempt at replicating lovely TUI aesthetics on the web. It isn't actually rendered in text, but everything is based around the `ch` unit.
|
||
|
||
Functionally, it's a real-time collaborative todo list, exclusively via WebSockets with optimistic updates. No REST here, not even for authentication. Whether or not this is a good idea remains to be seen.
|
||
|
||
Numerically, it's `todo3`. Do not ask about `todo1` and `todo2`.
|
||
|
||
## Tech Stack
|
||
|
||
- **Frontend**: React, Vite
|
||
- **Backend**: Elysia, Bun, SQLite
|
||
- **Real-time**: WebSockets
|
||
|
||
## Development
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
# fill in your values
|
||
```
|
||
|
||
### With Docker (recommended)
|
||
|
||
```bash
|
||
bun install
|
||
docker compose -f docker-compose.dev.yml up
|
||
```
|
||
|
||
Frontend: http://localhost:5173
|
||
Backend: http://localhost:3000
|
||
|
||
## Production
|
||
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
|
||
## Environment Variables
|
||
|
||
| Variable | Description |
|
||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `PUBLIC_WS_URL` | WebSocket URL for frontend |
|
||
| `PUBLIC_BOX_DRAWING_CHARS` | The 8 characters for box drawing. The default value `─│┌┐└┘├┤` results in boxes that are a bit too nice, you can also try `–\|++++++` for a simpler style |
|
||
| `HOST` | Allowed host for Vite |
|
||
| `FE_PORT` | Frontend port (external) |
|
||
| `BE_PORT` | Backend port (external) |
|
||
| `JWT_SECRET` | Secret for JWT signing |
|
||
| `SIGNUP_SECRET` | Required for user registration |
|
||
| `ADMIN_EMAIL` | Contact email for signup errors |
|
||
| `DB_PATH` | Path to SQLite database |
|