From fac1341c1f96a0a6978337b5d50ece448537467c Mon Sep 17 00:00:00 2001 From: Nettika Date: Sun, 25 Jan 2026 14:25:15 -0800 Subject: [PATCH] Initial commit --- agents.md | 5 +++++ rust-toolchain.toml | 2 ++ shell.nix | 11 +++++++++++ todo.md | 12 ++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 agents.md create mode 100644 rust-toolchain.toml create mode 100644 shell.nix create mode 100644 todo.md diff --git a/agents.md b/agents.md new file mode 100644 index 0000000..4cc747d --- /dev/null +++ b/agents.md @@ -0,0 +1,5 @@ +# agents.md + +## Setup commands + +- Start development shell: `nix-shell` diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..292fe49 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "stable" diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..f648702 --- /dev/null +++ b/shell.nix @@ -0,0 +1,11 @@ +{ + pkgs ? import { }, +}: + +pkgs.mkShell { + buildInputs = with pkgs; [ + rustup + cargo + just + ]; +} diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..4b77fe5 --- /dev/null +++ b/todo.md @@ -0,0 +1,12 @@ +# Todo + +[ ] Template a Rouille server that always returns an empty 404. +[ ] Create a database schema. There should just be one table for now: `projects`. The Projects table contains info about each project in the board. The table should have columns for title, created time, last modified time, percentage completed (integer), and a flag for archived. Since this is a single-user server, there doesn't need to be an metadata about whose project it is. +[ ] Create a `Project` struct that corresponds to the schema definition. +[ ] Create a module or struct at your discretion for interfacing with the database. Create functions for the following: create a project, update a project's progress, archive a project, unarchive a project, and list of all projects. +[ ] Create a `main.css` file in src. Use mvp.css as a starting point. +[ ] Create a `project-card.js` file in src that creates a web component for displaying a project. +[ ] Using a Rouille router, create `GET /main.css` and `GET /project-card.js` endpoints that returns the relevant files. Use the include_bytes! macro. +[ ] Create a `GET /projects` endpoint. Using Maud for markup generation, have this endpoint return an HTML page that shows all projects. Each project should be a `project-card` web component. Keep the page simple: no title or any buttons currently. +[ ] Create a `POST /projects` endpoint that accepts URL encoded data and creates a new project. +[ ] Create a `GET /new-project` endpoint that returns a HTML page with a project creation form. Keep it simple. \ No newline at end of file