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
This commit is contained in:
@@ -1,17 +1,67 @@
|
||||
# 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.
|
||||
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.
|
||||
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 primarily a web application but includes push notification support for end users to notify them about upcoming/overdue tasks as well as task completion.
|
||||
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.
|
||||
|
||||
## Frontend
|
||||
## Stack
|
||||
|
||||
The Sis UI a single-page application written in Javascript using https://mithril.js.org/ and uses the "Neo Brutalism" CSS framework - https://unpkg.com/neobrutalismcss@latest
|
||||
- **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
|
||||
|
||||
Sis uses Typescript for front-end code
|
||||
## Architecture
|
||||
|
||||
## Backend
|
||||
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.
|
||||
|
||||
The Sis backend is written in Haskell using Orb for the HTTP framework - https://github.com/flipstone/orb
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user