Skip to content

kdiffin/fem-htmx-proj

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chat gippity made the readme im doing this to learn htmx and golang i hate react now im a htmx-grug-pilled dev, f the virtual dom v0 made like 50% of my frontends styles btw


TODOS:

  • finish the main page and abstract the update logic of the tags

  • split the task updating and tag creation/relation endpoints

  • make ui composable

  • implement the get task by tags page

  • implement manage tags page

    • implement CRUD on tags, make it a card based ui for CRUDing tags
  • make the dropdowns for adding relations only show items which havent been added already as tags

  • add many to many relationship thing and show tasks related to tag in the card

  • implement tags page tag relation to task

  • make the footer work

  • IMPLEMENT ACTUAL FILTERING ON TASKS PAGE

    • implement searching by name
    • implement filtering by tag
    • implement filtering by completed (cba)
  • read the other md files rq

  • refactor v1.5

    • add net/http and remove echo
    • add decent logging on errors
    • move handler logic outside of the router
    • add sqlc
    • complete the rest of the app, get it back to how it was
  • implement actual database migrations

  • add the actual http/1.1 response and request in the logging middleware so i know http strings are being sent and recieved over http

  • host with https on local network

  • add barebones auth using cookies

  • then jwt

    • finish the migration business
    • implement the readme on how to add session auth
    • add sql to the sessions instead of storing them in memory
    • make an indicator showing if the user is logged in or not
    • finish fetching the tags and shit
    • change the hx-redirects to just forms with actions
    • block csrf, add session expirations, add jwt
  • refactor v2 (vaults)

    • notes

    • note to self: every tag action based on its vault should be validated with the user id

    • large scale objectives

    • alt text

    • objectives

    • replace auto incrementing ids with uuids (no random id guess attack vector)

    • make it work with the uuids and vault ids now

      • change all of the queries to use vault ids
      • add default vault id to users, add vault type
      • make the sign up create a default vault
    • add author info to tags and tasks, fix the n+1s with joins, fix updatednow

      • tags
      • tasks
      • fix the n+1 problem with author info
    • fix the workflow

      • make all queries work with roles and vaults
      • change constraints of uniqueness to include vaults
    • add redirect to tasks/vault filter on tag id click

    • golang standards project layout conform to this structure example

    • ALWAYS Update the updated_now fields so its actually true

    • order everything by created_at

    • add ROLE CHECKING to the tag CUD operations as per example

    • !!! add a vault middleware which gives the vault depending on if the route is the shared one or the default one, cuz rn its only default

    • add vaults page

      • fix bug where you cant see the people connected to the vaults
      • fix bug where i can see other peoples tasks at /tasks
      • fix bug where i can edit other peoples vaults without being owner
      • add removing collaborators if ur owner
      • stop 1 user from having multiple entries of a role (I already implemented that security measure, I guess im not that dumb after all.)
      • fix that one stupid bug where an owner can remove themselves as a collaborator
  • Best practices refactor

    • I'm gonna do this boring shit later, going a bit forward so i can do websockets

    • fix users being able to see other peoples individual tags without auth

    • test for security issues

    • Error handling, SQL, better authz

      • ADD ACTUAL RBAC AND RLS INSTEAD OF THIS BS EXISTS SHIT!
      • take a look at whole codebase sql and search for security issues before proceeding
      • add some serverside error handling that gives back descriptive errors instead of sql (its secured rn but make it responsive to the user)
      • add alphabetical sorting to everything after created_at so its uniform!
    • add decent error logging

    • add sql query logging

    • fix that one dumb down migration at 8

    • fix add tag in tasks page

    • move onto phase with collaborative vaults with websockets

  • Make the multi user part work (vault implementation)

    • finish vault introduction page

    • add "upload profile picture" to sign up

    • learn about websocket pub/sub architecture

    • make the debug page show which clients are connected (names)

    • make the pub/sub channel(vault) based

    • authorize the websocket connections

    • create my own http verb system in websockets

      • make task stuff work
      • make the tag stuff work !!!
        • refactor how adding tags works (single tag)
          • change the query to be like the tasks one where it returns and redo the handler then
      • think and fix what to do with paths
    • make real time mouse sharing

    • think about what to do with the ws having to reconnect on every url change

      - [x] hx boost ftw
      - [x] make the page like a SPA so u dont have to reconnect to the ws when switching from tasks to tags page
      
    • refactor all the services and websockets logic

      • test (manually)
    • architecture better

    • add error showing to RBAC issues

      • just implement utils.showerror but for websockets

maybe later if i revisit

  • do a good frontend with templ

  • add a home page with "current active users"

  • add JSON endpoint for mobile app, openapi specs

    • add some documentation to the json returning api
  • add notification system via sse

    • users can request others access to vaults
    • x user edited this, etc
  • add some tests bruh


Aight 😤 let’s cook something that's:

  • 🔥 fun to build
  • 🧠 hits core web fundamentals (routing, templates, components, state)
  • 💡 has room to grow into full-stack if you want later
  • 🛠️ perfect for your Go + HTMX + Tailwind stack

🎯 Project Idea: Task Vault

A keyboard-driven task manager with nested tasks, tagging, filters, and HTMX-powered inline editing.

🧩 Features (V1)

  • 📝 Add / Edit / Delete tasksw
  • 🏷️ Tag tasks with colors (e.g., #school, #project, #bug)
  • ✅ Mark tasks complete
  • 🔍 HTMX-powered search and tag filter
  • 💥 All inline — no page reloads

📐 Pages

URL Purpose
/ Dashboard w/ all tasks
/tasks/:id Focus view on one task
/tags/:tag Filtered view by tag
/about (optional) About page

🧠 What You’ll Practice

  • Go HTML templates w/ layout + components ✅
  • HTMX for real-time interactivity ✅
  • Tailwind for styling ✅
  • URL routing + query handling in Go ✅
  • Basic CRUD over a slice/map (or SQLite later) ✅
  • Optional: persistence w/ a local file or sqlite 🔥
  • Optional: keyboard shortcuts (js + htmx) 🔥

🔄 Future You Could Add

  • ⏱️ Due dates + calendar view
  • 🔁 Recurring tasks
  • 📦 Export to Markdown / JSON
  • 🔒 Auth if you make it multi-user later

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 97.3%
  • CSS 1.8%
  • Other 0.9%