[FEAT] Organization and Application configs#47
Conversation
9a21963 to
362ea12
Compare
…do the email templates to use app/org configs
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
chris-okuda
left a comment
There was a problem hiding this comment.
notes for reviewer
bbengfort
left a comment
There was a problem hiding this comment.
Thank you for the excellent PR and the thoughtful refactor of the config module. I appreciated the comments in the PR to guide me along as well!
This PR makes a lot of sense to me; I did have some important review comments regarding configuration and how the confire library works. However, I need to merge this in to work on the changes I'm making to the config (e.g. making the config available globally). That means that I will be addressing some of my comments, and others you'll have to create stories for and open a new PR. I did my best to point them out in the comments but I may have missed some, so if you could review my PR before doing it I'd appreciate it!
| type AppConfig struct { | ||
| Name string `split_words:"true" default:"Quarterdeck" desc:"the descriptive name of the application (default: 'Quarterdeck')"` | ||
| LogoURI string `split_words:"true" default:"https://rotational.ai/hs-fs/hubfs/Rotational%20Logo%20Hor%201073x280.png" desc:"the logo for the application (default: a Rotational Labs logo)"` | ||
| BaseURI string `split_words:"true" default:"http://localhost:8888" desc:"base URL for the application (default: 'http://localhost:8888)"` |
There was a problem hiding this comment.
This is generally the same as the audience, in order to reduce our configuration load I suggest that we simply set this to the audience envvar so that it gets used in both places.
| BaseURI string `split_words:"true" default:"http://localhost:8888" desc:"base URL for the application (default: 'http://localhost:8888)"` | |
| BaseURI string `env: "QD_AUTH_AUDIENCE" desc:"base URL for the application to derive URLs for."` |
Scope of changes
Add an
AppConfigandOrgCofigto the config. These will enable better user interaction via emails, such as for new users and when they reset their password using the "forget password" feature. It is an interim step towards enabling multiple Apps and Orgs with Quarterdeck. The defaults will be set for a generic Quarterdeck, and Endeavor-related text will now be set via these configs in the various deployments.Fixes SC-36997 (email text and link matches app)
Fixes SC-36632 (email link bug)
Type of change
Acceptance criteria
Screenshots of emails showing that the content was replaced properly when testing in local development:
Welcome Email:

Reset Password Email:

Definition of Done
Reviewer(s) checklist
Note
Medium Risk
Touches config parsing/validation and user lifecycle side effects (email content/links and outbound webhook calls), so misconfiguration could break password reset/welcome flows or user-sync integrations, but scope is contained to these paths.
Overview
Adds first-class
AppConfigandOrgConfigto drive branding and support metadata (name, logo, base URL, welcome email body, org details), and refactors existing config types (AuthConfig,CSRFConfig,DatabaseConfig,SecurityConfig) into separate files with dedicated tests.Updates welcome/reset-password email builders and templates to use app/org-provided text, subjects, logo, and footer data, and fixes password-reset/welcome links to use the configured app base host (replacing prior
X-Forwarded-Hostlogic). User sync webhooks are simplified from a list of endpoints to a singleAppConfig.WebhookURI, and server sync methods now post/delete only to that one URL.Written by Cursor Bugbot for commit 90e8958. This will update automatically on new commits. Configure here.