Commit Graph
78 Commits
Author SHA1 Message Date
NeilClack 03ecfbd635 feat: add dark/light mode toggle
- Add blocking inline script in app.html that reads localStorage
  'theme' and applies .dark class before render (no flash)
- Invert gray scale in .dark via CSS custom properties so all
  grayscale colors reverse automatically (light becomes dark)
- Add @custom-variant dark to enable dark: utility classes
- Add border-button toggle ("Dark"/"Light") in TopBar far right
- Persist preference in localStorage
2026-07-07 09:54:32 -05:00
NeilClack 5a13f2516c style: strip to grayscale wireframe
- Remap all non-gray colors (blue, green, red, purple, slate) to gray
  equivalents via Tailwind v4 @theme overrides in layout.css
- Zero out all border-radius values (square everything)
- Zero out all shadow values (no depth)
- Disable all transitions and animations globally
- Change theme-color meta tag from purple (#7B2D8E) to gray (#6b7280)
- Clean up undefined 'underlined' class and typo bg-grey-200
2026-07-07 09:50:57 -05:00
NeilClack 24f3a9f465 Add AI skills 2026-07-07 09:41:07 -05:00
NeilClack 6ff8e878a4 test: add unit tests for all auth backend logic
- Register: edge cases for non-Error throws, error message assertions,
  and verify signUpEmail was called with correct payload
- Forgot-password: empty/missing email, Error/non-Error throws
- Reset-password: load (missing/expired/valid token) and action (short
  password, mismatch, throw, success redirect)
- Account setup: load (unauthorized, returns user), action (redirect,
  falsy create, throws, isRedirect passthrough)
- Email-verification: correct URL construction, sendMail delegation,
  throw propagation
- Hooks: sets/omits locals, passes building/auth to svelteKitHandler
- Fix Svelte 5  warning on setup page by using  with
  one-time guard instead of top-level prop read
2026-07-07 09:22:56 -05:00
NeilClack 1e391c9252 redirect setup page to /dashboard instead of /account 2026-07-07 09:18:45 -05:00
NeilClack d160186925 feat: pre-fill first/last name on setup page from user's registered name 2026-07-07 09:16:54 -05:00
NeilClack 5f1edc3174 fix: prevent redirect loop on /account/setup for users without profile
- Skip profile redirect when already on /account/setup so users
  who just signed up/logged in land on the page without looping
- Add test for the skip-redirect case
2026-07-07 09:14:14 -05:00
NeilClack 209fd8456d auth: show email verified banner on login page after verification
- Append ?verified=true to callbackURL in verification link
- Login page reads query param and shows green success banner
  when user lands after email verification
2026-07-07 09:10:11 -05:00
NeilClack fc2790f6fa fix: handle duplicate email sign-up and null user in protected layout
- Register action now returns success instead of redirecting to /account/setup
  so users without a session (duplicate email with requireEmailVerification)
  see a 'check your email' message instead of crashing
- Protected layout guards against null/undefined locals.user before querying
  Prisma (was passing id: undefined)
- Updated register page to show success banner with verification instructions
- Updated test to match new action response
2026-07-07 09:05:29 -05:00
NeilClack 667ae4e05e auth: build verification link from BASE_URL env var
- Build the verification URL as /api/auth/verify-email?token=xxx&callbackURL=/login
- Pass token from Better Auth callback instead of its built-in url
- Add callbackURL=/login so user lands on login after verifying
2026-07-07 08:59:25 -05:00
NeilClack ba83c48b9e auth: extract reusable sendVerificationEmail utility, enable sendOnSignUp
- Create src/lib/server/email-verification.ts with exported utility function
- Use it in auth.ts sendVerificationEmail callback
- Enable sendOnSignUp so verification email is sent on registration
2026-07-07 08:54:47 -05:00
NeilClack a72b65be95 audit: harden better-auth config, fix types, cleanup
- Fix email verification link using Better Auth's url parameter (was hardcoded to google.com)
- Make App.Locals session/user types nullable to match reality
- Add explicit rate limiting config (60s window, 100 max)
- Add trusted origins for localhost:5173 and production domain
- Add Forgot Password? and Register links to login page
- Remove unused dead code from auth-client.ts
- Remove outdated known-bug note from AGENTS.md (register redirect is fixed)
2026-07-07 08:51:24 -05:00
NeilClack 4d4b2a1497 fix auth: register redirect, password reset flow, GHL contact ID, session handling
- Fix register redirect bug where successful signup returned 400 instead
  of redirecting to /account/setup (use isRedirect() to re-throw redirects)
- Add error display to register page and fix Svelte 5 syntax (on:click)
- Add await to Google sign-in on login page and register page
- Fix logout to await signOut and redirect to /
- Implement full password reset flow:
  - Add sendResetPassword callback to auth.ts config
  - Create forgot-password page with email submission
  - Create reset-password page with one-time token validation
  - Guard reset page: redirect to / if no valid token in URL
- Add ghlContactId field to Profile model for future Go High Level integration
- Add Prisma migration for ghl_contact_id column
- Update register test to expect redirect instead of broken 400
2026-07-07 08:30:27 -05:00
NeilClack f566866a23 remove cert file 2026-07-06 21:51:59 -05:00
NeilClack 92c5ef91c8 Update environment variables 2026-07-06 21:04:11 -05:00
NeilClack a42c32f014 Add email via Resend 2026-07-06 21:01:41 -05:00
NeilClack 96eafafbf6 Rename certificate to be more clear 2026-07-03 07:29:43 -05:00
NeilClack c9a6c791e9 run npm audit 2026-07-03 07:28:53 -05:00
NeilClack cec1b161a2 remove unused workflow 2026-07-03 07:28:46 -05:00
NeilClack c3454d1152 Add frequencies api route 2026-05-30 14:02:46 -05:00
NeilClack 218a3a3cb0 add categories admin page 2026-05-04 09:40:34 -05:00
NeilClack 1615f07974 Mock payment API 2026-05-03 21:01:08 -05:00
NeilClack 3d1d713308 Restructure route organization 2026-05-03 20:59:43 -05:00
NeilClack e563a66dc7 Add API routes 2026-03-25 17:26:09 -05:00
NeilClack 7d211ba6d8 Fix null price value 2026-03-18 12:10:16 -05:00
Neil Clack 3d2d848df6 Merge pull request 'Release 1.0.1' (#5) from dev into main
Reviewed-on: https://git.rhemawavetech.com/NeilClack/Portal.RhemaWaveTech.com/pulls/5
2026-03-18 16:47:29 +00:00
NeilClack 61fe470451 Add default price for all price fields 2026-03-18 11:31:06 -05:00
NeilClack b30281c19c Rearrange New Proclamation Form 2026-03-18 11:27:57 -05:00
NeilClack b39b7008de Move TipTap to Bottom of AdminForm 2026-03-18 11:15:08 -05:00
NeilClack 56c688f674 Add proclamations api endpoint 2026-03-18 01:09:21 -05:00
NeilClack 791114d2aa Remove unique index on Proclamation content 2026-03-17 16:55:02 -05:00
NeilClack 4f7622ab42 Update proclamation category naming constraints. 2026-03-16 13:39:53 -05:00
NeilClack 52c740b986 Customize Proclamations Admin page 2026-03-16 13:23:25 -05:00
NeilClack 0fd901b01f Ready for NixOS builds 2026-03-09 21:51:56 -05:00
NeilClack cc51f40591 Build user pages 2026-02-25 13:19:26 -06:00
NeilClack 12190d01dc Remove unused links in sidebar 2026-02-24 12:15:52 -06:00
NeilClack f562e67d89 Add favicon 2026-02-24 12:15:40 -06:00
NeilClack a579186134 Add logo to static assets 2026-02-24 12:08:01 -06:00
NeilClack 9fed7acff5 Force initialization to be lazy, preventing docker build errors 2026-02-24 10:34:44 -06:00
NeilClackandClaude Opus 4.6 10fd06887f Add comprehensive tests for profile-redirect and auth features
19 new tests across 5 test files covering the protected layout redirect,
account page load, registration action (documenting the redirect bug),
and login/register component rendering. Includes shared test utilities.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 08:58:01 -06:00
NeilClack b8d1ba11e7 Update all routes to redirect users to create a profile if one does not exist 2026-02-24 08:17:37 -06:00
NeilClack 3c201f9b66 Add sub-categories to affirmation categories
Add self-referential parent/child relation on AffirmationCategory for
   one-level hierarchy. Update AffirmationForm with two-level category and
   sub-category dropdowns, server actions with find-or-create hierarchy
   logic, AffirmationList with Parent
2026-02-23 10:53:15 -06:00
NeilClack a230a1e36d Build Admin pages 2026-02-23 10:21:42 -06:00
NeilClack bec8f57a93 Fix affirmation list and add frequencies page 2026-02-23 08:47:58 -06:00
NeilClack e390896f44 Add margin below page title 2026-02-23 07:33:55 -06:00
NeilClack 30b02f6343 Update CLAUDE context 2026-02-21 22:28:01 -06:00
NeilClack 1c0c915cd9 Add debug log 2026-02-21 22:17:36 -06:00
NeilClack 94ae2fa5b5 Update Radiant to Rhema 2026-02-21 22:03:32 -06:00
NeilClack 81478ae695 Guard against missing ca certificate during builds 2026-02-20 10:48:50 -06:00
NeilClack 3ea3ccb2ad periodic commit 2026-02-20 10:25:55 -06:00
NeilClack 664b6daa7f Implement License Key API 2026-02-19 13:00:08 -06:00
NeilClack aa51b4a452 Remove workflows, for now 2026-02-19 11:25:44 -06:00
NeilClack 52b6e56c90 Change ssl rejectunauthorized to true 2026-02-19 11:17:32 -06:00
NeilClack 18943e1e13 Remove unused console.log statements 2026-02-19 10:55:31 -06:00
NeilClack 9687d3fe79 Switch to using a pg pool for database connections 2026-02-19 10:55:05 -06:00
NeilClack aa28ab6f22 Add .env.example 2026-02-19 10:14:51 -06:00
NeilClack c34e10159d Add user profiles and account setup page 2026-02-03 10:11:00 -06:00
NeilClack 2df81d20e3 Create the account setup page
This page is not behind (protected) because it must not use the (protected)/layout.
This means that this page also needs to handle it's own authentication, because it should not be open to the public either.
2026-02-02 22:40:11 -06:00
NeilClack 9d75cb07e4 Add the profile to the database. 2026-02-02 22:05:57 -06:00
NeilClack e50b08a0df Add prisma commands to package.json script
Instructions for running these commands are in the README file
2026-01-30 23:45:33 -06:00
NeilClack 6e50941030 Update the action workflow to utilize secrets
Instead of managing a .env file on the server, I have begun the migration to Github secrets.
This is a tes tto see if I can pass in the Google OAuth client secret.
If so, then I can migrate the rest of the environment variables and manage them in one easy place..

I should still keep a record of these somewhere, encrypted, hidden, and safe.
2026-01-30 23:33:36 -06:00
NeilClack 36ee56f96a Auto restart container on shutdown 2026-01-26 11:31:33 -06:00
NeilClack 8e5f39b205 Run container in host network 2026-01-20 18:29:29 -06:00
NeilClack 624f42500f Enfore port and host for possible bug fix 2026-01-20 18:23:22 -06:00
NeilClack 480f5159c3 Add replace to podman command 2026-01-20 18:13:22 -06:00
NeilClack 9acd3b66e3 Add placeholder values for build 2026-01-20 17:10:28 -06:00
NeilClack e95397e173 Add deployment action 2026-01-20 17:07:28 -06:00
NeilClack db9cace1de Add placeholder text to price 2026-01-20 16:52:00 -06:00
NeilClack da205344fe Fix text box to be "full sized" 2026-01-20 16:51:44 -06:00
NeilClack f1d3a62c21 Simplify Docker deployment 2026-01-20 14:35:08 -06:00
NeilClack 1f5ab4abb6 Revert 2026-01-20 12:37:23 -06:00
NeilClack b5f2b15f09 try adapter-pg 2026-01-20 12:27:31 -06:00
NeilClack 5ef46d9478 Changed connection string parsing 2026-01-20 12:04:50 -06:00
NeilClack efb8eab38b Change adapter to node 2026-01-20 08:40:05 -06:00
NeilClack 30e7f8e00a CRUD - Affirmations 2026-01-19 14:59:51 -06:00
NeilClack 0991d1916b Fix styling & alignment issues 2026-01-14 11:20:26 -06:00
NeilClack ef181d42c6 Added Google to Registration page 2026-01-13 18:09:21 -06:00
NeilClack ef855ae9a9 Init Project
This is a pretty far-developed starting point. Authentication has been intialized with Better-Auth, a database has been setup with Prisma, and Google + email logins have been enabled, as well as Google + Email registration.
2026-01-13 16:21:12 -06:00