Skip to content

kdiffin/swagtask

Repository files navigation

this project started off as a fork of primeagens frontend masters hour long htmx+go lecture, its basically nothing like that rn though

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

gippity made the bottom part

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages