projects/todo.md

12 lines
1.5 KiB
Markdown
Raw Normal View History

2026-01-25 14:25:15 -08:00
# Todo
2026-01-25 14:28:17 -08:00
[x] Template a Rouille server that always returns an empty 404.
2026-01-25 14:29:45 -08:00
[x] 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.
2026-01-25 14:31:30 -08:00
[x] Create a `Project` struct that corresponds to the schema definition.
2026-01-25 14:32:40 -08:00
[x] 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.
2026-01-25 14:34:49 -08:00
[x] Create a `main.css` file in src. Use mvp.css as a starting point.
2026-01-25 14:35:44 -08:00
[x] Create a `project-card.js` file in src that creates a web component for displaying a project.
2026-01-25 14:25:15 -08:00
[ ] 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.