GitHub repo

Course Manager is a web application currently in testing mode that allows teachers to develop curricular materials in a systematic and coherent fashion.

The problem this is meant to address is one that I personally experienced as a teacher. I found the current processes of generating and delivering materials to students on a daily basis to be unnecessarily cumbersome and frustrating. To say that I don’t like Canvas is a bit of an understatement. So this began as a personal tool. At first, it was a command-line-interface static site generator. I would manually push the site to Github pages. Eventually I made the interface graphical using Fyne, and then in December 2024 I switched to creating a web application. In April and May I switched the static site generation portion to using Hugo instead of my own generator.

Now the web service hosts users’ static sites directly which negates the step of publishing to a separate platform.

Features:

https://course-manager.app

demo - a few months outdated, need to update

demo - a few months outdated, need to update

Technical Details

Developer Environment Dependencies Go (see go.mod for go dependencies) Docker Marp runs in container Caddy runs in container Sqlc CLI Task CLI Templ CLI Goose (for db migrations) Tailwind Typescript Hugo stuff prettier plugin Production Environment Dependencies Docker Bash Task CLI VS Code extensions used Task Task Tailwind CSS Intellisense Tailwind Docs Tailwind Fold Templ Workflows Run in development (local) task run-dev Builds app binary and mounts as volume, runs all services with docker compose: ...

June 6, 2025

Change Log

Update: starting 9/19 all change-related info will be posted via GitHub instead of here. This change log is mainly to help me keep track of what I’ve done and what I’m planning to do. I’ve considered making the application open-source, which would probably mean putting a change log on GitHub along with the code, but I’m not sure about that. So in the meantime, I’m sharing my progress on this work here. ...

June 6, 2025

Features

Starting 9/19 all features will be added in GitHub instead of here. Private slides See details Add “copy link” to file viewer so you can get static site links from the app side change title page for files especially assessment files if possible favicons for static site and server Add hx-indicator to everything so user gets confirmation that request is pending CourseNode files capabilities: 1/22/25 User can delete node files 1/22/25 User can rename node files 1/22/25 User can move node files 1/22/25 User can duplicate node files Automatic site regeneration for every change (??) ...

June 6, 2025

Issues

Starting 9/19 all issues will be posted using GitHub instead of here. No way to view draft documents (this is currently how I designate private documents, as draft=true will prevent hugo from publishing it in production. Simply need to add a view button which should use the old goldmark service I had built before switching to hugo. (fixed 9/17/25) Rendering bulleted lists in markdown doesn’t show numbers, presumably due to theme defaults. This might be addressed by creating a render hook template of some sort. moved the document to an iframe to protect from outer stylesheets (fixed 9/13/25) In static standalone (markdown) file page, the last breadcrumb doesn’t show properly sometimes. When creating markdown files, there is no input validation for the file name. User is allowed to have spaces in file name which could cause issues. If user enters file name that already exists, there will be an unhandled error. When creating markdown files, there is no default file name. Should default to document1.md, document2.md etc. based on the number of documents already in the directory. In fact, the user should not even need to enter a file name, they should just enter a title, and the file name should be handled automatically. No navigation buttons (e.g. breadcrumbs) in static-site calendar page Need placeholder image for when no user is signed in signin page after redirect following token expiration does not seem to render properly under certain circumstances in particular when I clicked Generate from the home page, the signin component was sent but not as a complete page including layout maybe htmx problem not redirect problem Select lesson to add to date page needs major cosmetic upgrade (functionality is ok) Assessments list page UI needs major upgrade (functionality is ok) (major) if there’s a lesson on 2 dates, bumping that date left or right on the calendar page will bump BOTH instances, not just the one that’s clicked on. ...

June 6, 2025