57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# Todo App with GO and HTMX
|
|
|
|
Goal: make a todo app with minimal reliance on other libraries and frameworks.
|
|
|
|
I'll assume that it is a single user app so I do not have to worry about concurrent access, high throughput,
|
|
etc..
|
|
|
|
## Plan day 1
|
|
|
|
- [x] create Go webserver
|
|
- [x] create landing page
|
|
- [x] import HTMX code
|
|
- [x] display todo list
|
|
- [x] add tailwind CSS
|
|
- [x] show todo list
|
|
- [x] let todos be marked completed
|
|
- [x] remove todos
|
|
- [x] add new todo with form
|
|
- [x] persist todos in redis
|
|
- [x] spruce up
|
|
|
|
|
|
## Plan day 2
|
|
|
|
make it use only battery included features
|
|
|
|
i.e. replace redis with an event driven approach
|
|
|
|
- [x] modularize app
|
|
- [x] replace redis with json stream
|
|
- [x] use hashmap for fast individual access
|
|
- [x] cache data to avoid reading each time
|
|
- [x] create event store
|
|
- [x] make events
|
|
- [x] implement event store
|
|
|
|
## Usage tips
|
|
|
|
### Running the app locally
|
|
|
|
Install *air* from [cosmtrek/air github repo](https://github.com/cosmtrek/air) with `go install github.com/cosmtrek/air@latest` or use the provided install bash scripts. This tool will watch for changes in the project folder and rebuild and restart the app during development (at least most of the time)
|
|
|
|
then in the root folder
|
|
|
|
air
|
|
|
|
and check for errors. Normally the site will now answer on [port 8080.](http://localhost:8080)
|
|
|
|
### Updating CSS with tailwind
|
|
|
|
Just add tailwind tags to the *class* attributes per documentation
|
|
|
|
then in the root folder:
|
|
|
|
npx tailwindcss -i ./src/input.css -o ./static/output.css --watch
|
|
|
|
Same deal, it will monitor changes in the templates and regenerate the output.css on the fly.
|