changes
This commit is contained in:
52
.goosehints
Normal file
52
.goosehints
Normal file
@@ -0,0 +1,52 @@
|
||||
# Instructions
|
||||
Here are special rules you must follow:
|
||||
1. All forms should use regular form url encoding.
|
||||
2. All routes should return html.
|
||||
3. Use htmx for all dynamic content, when possible.
|
||||
4. Use alpinejs for other dynamic content. For example, hiding or showing an element.
|
||||
5. Prefer using daisyui over raw tailwind where possible.
|
||||
6. Prefer using alpinejs over raw javascript. Raw javascript should almost never be needed.
|
||||
7. Always print unhandled exceptions to the console.
|
||||
8. Follow best practices for jinja template partials. That is, separate out components where appropriate.
|
||||
9. Ask the user when there is something unclear.
|
||||
10. I always run the server locally on port 5000, so you can use curl to test. No need to start it yourself.
|
||||
11. Design docs go into docs/design/*.md. These docs are always kept up to date.
|
||||
12. Before completing work, ensure that no design docs are left out of sync
|
||||
13. Plans go into docs/plans/*.md. These may not be kept in sync, as they are just for brainstorming.
|
||||
14. ****IMPORTANT**** Database migrations are automatically created via `flask db migrate -m 'message'`. **NEVER** create migrations by hand. You should never have to read the contents of migrations/
|
||||
15. In the technical documentation, code should be used sparingly. Also, when needed, focus on the APIs, and only use snippets.
|
||||
16. When you might need to reference htmx, you can fetch this url for all of the instructions: https://htmx.org/docs/
|
||||
|
||||
|
||||
# Conventions
|
||||
1. modals are rendered server-side, by targeting #modal-holder, and using an hx-trigger response attribute for open-modal.
|
||||
2. modals are closed by adding the close-modal hx-trigger response attribute.
|
||||
3. modals can be closed by triggering a close-modal event anywhere in the dom.
|
||||
4. validation is done server-side. On modals, an error should cause the button to shake, and the invalid fields to be highlighted in red using normal daisyui paradigms. When relevant, there should be a notification banner inside the dialog-box to show the details of the error.
|
||||
5. When validation is done outside of a modal, it should cause a notification banner with the details.
|
||||
6. Testing is done with pytest.
|
||||
7. Testing is done with beautifulsoup4
|
||||
8. Only use comments where necessary. Prefer self-documenting code. For example:
|
||||
```
|
||||
is_adult = age >= 18
|
||||
```
|
||||
is preferred, and this is less preferred:
|
||||
```
|
||||
# check if the user is an adult
|
||||
x = age >= 18
|
||||
```
|
||||
|
||||
9. Buttons should be disabled, and a spinner should replace the icon content when loading. Only the button that was clicked should be disabled though. Typically this is done something like this:
|
||||
```
|
||||
<div data-loading-states>
|
||||
<button class="..." hx-get="..." data-loading-disable>
|
||||
<i class="fas fa-cog mr-2" data-loading-class="!hidden"></i>
|
||||
<span data-loading-class="!hidden">Click Me!</span>
|
||||
<span class="loading loading-spinner loading-xs hidden" data-loading-class-remove="hidden"></span> </button>
|
||||
</div>
|
||||
```
|
||||
This will scope the disable to just the button, and disabled the button from being clicked. When in a modal, the whole modal should be disabled.
|
||||
|
||||
### context7 documentation library ids:
|
||||
* HTMX: /bigskysoftware/htmx
|
||||
* HTMX extensions: /bigskysoftware/htmx-extensions
|
||||
Reference in New Issue
Block a user