1d5ecd0829
- 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
68 lines
2.4 KiB
Markdown
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
|
|
```
|