Files
jbrechtel 1d5ecd0829 chore: cleanup TypeScript, update docs, scripts, Dockerfile
- Delete all frontend TypeScript source (src/, index.html, package.json, etc.)
- Move static assets to frontend/static/ (style.css, manifest.json)
- Update scripts/build and scripts/test (no npm steps)
- Update Dockerfile (no frontend build step)
- Update README.md and AGENTS.md for Hyperbole stack
2026-07-16 06:51:11 -04:00

68 lines
2.4 KiB
Markdown

# Sis
Sis (short for Sisyphus) is a todo tracker meant primarily for households,
families or other groups of people with shared repeated responsibilities like
chores.
The goal of Sis is to make it easy for users to keep track of which tasks need
to be completed and when while allowing any user to complete a given task and
provide visibility to other users that a task has been completed.
Sis is a web application written entirely in Haskell using
[Hyperbole](https://github.com/seanhess/hyperbole), a serverside web framework
inspired by HTMX, Elm, and Phoenix LiveView. There is zero application
JavaScript in the source code.
## Stack
- **Framework:** [Hyperbole](https://github.com/seanhess/hyperbole) — Haskell serverside web framework
- **CSS:** [Neo Brutalism](https://unpkg.com/neobrutalismcss@latest) CDN
- **Database:** SQLite via sqlite-simple with effectful effect system
- **Build:** Stack with GHC 9.10
## Architecture
Sis is a single Haskell application. All HTML is rendered serverside via
Hyperbole's Page/HyperView system. User interactions are sent over WebSocket
with VirtualDOM-based page updates.
```
sis/
├── app/Main.hs # Hyperbole app entry, Warp setup, route dispatch
├── src/
├─├── Sis.hs # Top-level re-exports
│ ├── Sis/Route.hs # Route ADT
│ ├── Sis/Types.hs # Core domain types
│ ├── Sis/Database.hs # effectful DB effect + SQLite handler
│ ├── Sis/Auth.hs # Password hashing
│ ├── Sis/Page/ # One module per page
│ │ ├── Login.hs
│ │ ├── Signup.hs
│ │ ├── Dashboard.hs
│ │ ├── Chores.hs
│ │ ├── Household.hs
│ │ └── Activity.hs
│ ├── Sis/View/ # Reusable view components
│ │ └── Layout.hs
│ └── Sis/Style.hs # Neo Brutalism class helpers
├── frontend/static/ # Static CSS + PWA manifest
├── test/Spec.hs # Hspec test suite
├── scripts/ # build, test, run
├── package.yaml # Haskell deps (hpack source of truth)
├── stack.yaml # Stack resolver config
└── Dockerfile # Production image
```
## Development
```bash
# Build
./scripts/build
# Test
./scripts/test
# Run (starts on port 8080)
./scripts/run
```