[DW-13|Initial project setup] #6

Merged
ldesmit merged 28 commits from development into main 2026-09-22 23:40:47 +02:00
Owner

Updated prod deployment workflow to correctly address the registry

Updated prod deployment workflow to correctly address the registry
- Added database model store implementation
- Json store no longer saves state
- Base singleton and array stores have state and handle CRUD operations, only requesting specialized store functionality when necessary.
- Added database storage adapters for the hero and project models
- Created a dockerfile used to build an image
- Modified how project release dates are shown on the portfolio page

* - Removed uploaded images in the public/images folder from being tracked by github.
- Updated gitignore to ignore uploaded images.

* Add GitHub Actions workflow for running tests

* Update run_tests.yml

Added verbose flag to the test command

* Update GitHub Actions workflow for Go tests

Updated Go version and added steps for installing dependencies and building the project.

* Update run_tests.yml

Added step to setup Node
Install dependencies step now installs required node packages
Added step to generate templ files

* Update run_tests.yml

Added command in Install dependencies step to install the templ cli application

* Removed unnecessary Go command

* Updated versions of templ and go

* Updated go.sum and .gitignore

* Removed .air.debug.db.toml from being tracked
Updated gitignore
Db model store is now used by default, no longer dependent on a tag

* - Renamed the checkout step
- Removed verbose flag from test step

* - Updated Dockerfile to properly build the image.
- Renamed and updated run_tests.yml workflow, tests now only run on pull requests for main and dev.
- Unified the run_debug_x.sh shell scripts into a single script.

* Removed updating the active docker stack from the dev deployment workflow. Currently there is no way for me to notify the development server running the stack that there is a new version.
Added tag image step.
- forgot to remove the --build-arg argument from the Build image step.
- Removed desmit-website binary from root folder.
- Added experimental update container stack update
- Modified home.templ to
- Added sleep commands to the Update container stack step.
- Converted the commands into a command string to be executed after connecting through ssh.
- Removed single line from home.templ to make sure all the deployment steps work correctly.
* Add a full admin authentication flow with registration, login sessions, IP whitelist access checks, and TOTP-based MFA enrollment/login. 
* Refactor the admin routing around the new auth middleware, split admin and portfolio stores, and expand the shared store layer to support direct lookup, cached stores, string IDs, and SQL-backed models.
* The register test now creates its own totp secret file and reads it later.
totp secret file reading no longer uses hardcoded path, but instead uses either an environment variable or default path.
* Moved DirectRequestIP function to the helper package
* Added incident logging to RequireAdminAccess middleware
Changed the way IP whitelisting works, instead of checking a single IP from the request, we check all available IPs. If any of them are not whitelisted the request is considered invalid.
Add support for typescript to the frontend.
Add React admin navigation and frontend tests
Reworked the admin sidebar to render a nested React navigation tree.
Updated admin routes/HTMX responses for portfolio pages, protected admin static assets, and added favicon/static route tests.
Added Vitest, jsdom, and Testing Library coverage for the admin navigation, and wired the frontend test run into CI.
Updated tailwind css generation path in docker, since we have a new folder structure
Added admin js bundle build to the dockerfile
Added regression tests for mime type errors seen in dev enivironment due to incorrect setup
Improved versioned path functionality, files are now resolved to the real filesystem locations.
Assets in `/public/portfolio/*` should be adressed using the virtual `/public/*` path which was not the case after my last change. (Note to selve, check vibecoded results more carefully!)
Adds an admin IP whitelist management feature, including a new admin page, React table UI, API endpoints for create/update/delete, IP/CIDR validation, and navigation wiring. It also updates auth middleware to support CIDR-based whitelist checks and refreshable cached store reads.

Supporting changes include shared HTMX-aware admin page rendering, updated store All(..., refresh) signatures, a CIDR whitelist test, tracked Air dev/debug configs, and the new ipaddr.js frontend dependency.


Removed air configuration files from gitignore. Should, in the near future, have its hard paths removed so that it works for other machines as well.
- Fixed ip whitelist table column width for mobile screens.
- Updated .air.debug.toml, removed hardcoded paths to applications and set a different db password argument
Added experience timeline to the portfolio homepage
Added experience page to the admin panel
Added experience editor
Refactored project editor, separated generic parts into separate components and layouts
Unified edit and add project pages into a single page
Renamed pages packages to admin_pages and portfolio_pages
Added dropdown select component (react + templ)
Added IP whitelist type, used to differentiate between trusted proxies and whitelisted clients.
Added tests for the new whitelist checking.

Changed IP whitelist check, trusted proxies are now checked first (if applicable), spoofed IP's should no longer be immediately accepted.
Changed dropdown to allow for strings, rather than always be ID based.

Removed user agent check
Added additional logging for admin IP authorization.
Added additional logging for adding new whitelist IPs.
[DW-24|Blog Posts] (#2)
All checks were successful
deploy-dev / deploy (push) Successful in 22s
bfcd9f57c9
Added blog administration and APIs for creating, editing, publishing, unpublishing, and deleting posts, including tag and series management and database relationship resolvers.
Added public blog pages with Tiptap content rendering, Chroma syntax highlighting, searchable and filterable overviews, shared navigation, and tests.
Modified the editor, tag suggestions, homepage highlights, taxonomy links, stylesheets, and development/build configuration.
Modified admin navigation highlighting, invalid TOTP handling, editable table configuration, PostgreSQL timestamp support, and missing-post responses.
Removed the blog editor layout sketch, redundant editor CSS, and separate .air.toml configuration.

Co-authored-by: Lars de Smit <larsdesmit@outlook.com>
Reviewed-on: #2
[DW-30|Blog text filter doesn't work] (#3)
All checks were successful
deploy-dev / deploy (push) Successful in 13s
101e8846e0
Merge pull request (#3) from DW-30 into development

Reviewed-on: #3
[DW-31|Font of admin navbar is always bold] (#4)
All checks were successful
deploy-dev / deploy (push) Successful in 25s
6508bbd4e0
Removed font medium style from the admin panel nav menu items.

Co-authored-by: Lars de Smit <larsdesmit@outlook.com>
Reviewed-on: #4
[noticket]:
All checks were successful
deploy-dev / deploy (push) Successful in 27s
4a2d781695
Changed super- and title for the blog posts section.
[noticket]
All checks were successful
deploy-dev / deploy (push) Successful in 19s
ci / test (pull_request) Successful in 9s
84f22806a0
Added workflow for deploying to prod
Merge main into development, preserving development contents
All checks were successful
deploy-dev / deploy (push) Successful in 3s
ci / test (pull_request) Successful in 9s
bd596b0d3c
[noticket]
All checks were successful
deploy-dev / deploy (push) Successful in 22s
d031855ff1
Modified prod deployment workflow, should now use correct registry path.
Merge remote-tracking branch 'origin/main' into development
All checks were successful
deploy-dev / deploy (push) Successful in 3s
ci / test (pull_request) Successful in 9s
beca77fa8c
ldesmit referenced this pull request from a commit 2026-09-22 23:40:47 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldesmit/desmit-website!6
No description provided.