Files
luis f57a6c4ef6
Build and Deploy / build-deploy (push) Successful in 45s
Add demo
2026-07-11 15:50:12 +01:00

53 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Todo3
![Screenshot](screenshot.png)
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 |