Files
sis/FEATURES.org
jbrechtel d4f839c491 feat: add SQLite database support
- Add sqlite-simple dependency
- Create Sis.Database module with openDatabase (creates parent dir, enables WAL + FK)
- Add --db-path CLI option (default data/sis.db)
- Format all Haskell sources with fourmolu
- Fix hlint suggestions in Sis.Server
2026-07-15 15:57:44 -04:00

1.8 KiB

TODO SQLite database support

Let's add database support using sqlite-simple . On startup we should create a SQLite database if none exists. Right now we have no tables, but we'll add one in the next task.

TODO User signup and login

User signup should be basic sign-up. Ask the user their full name, email and password. We'll send them a verification email to confirm their email address and at that point ask for their password. We should use standard encryption approaches for storing their hashed password with the https://hackage.haskell.org/package/password library.

We should support allowing users to log in and show them a basic welcome page with "Welcome <full name> - <household>" and nothing else once they sign in.

Otherwise, logged out users should be shown a sign-in form with a link to a separate sign-up form.

Logged in users should see a log out button, too.

We should create a rudimentary session infrastructure. Ensure we use http-only cookies for our session token.

Households

When a user signs up, as part of sign-up we should ask them for the name of their Household. All users will belong a single Household and a Household may have more than one user.

The Household will ultimately be where tasks/chores are stored.

TODO User invite

An existing user should be able to invite a new user by email to their household.

When the invited user signs up we should not ask them for a Household name but instead make them a member of the Household they were invited to.

TODO Basic chores

We should create a new table to store chores in the database. Each chore belongs to a household, has a name and an optional assigned-to user.

We should allow users to create a new chore and view their existing chores.

When creating a chore we should ask users for the chore name and an optional user to assign to that chore.

TODO Chore schedules

TBD