Skip to content

[FEAT] Organization and Application configs#47

Merged
bbengfort merged 9 commits intomainfrom
chrisokuda/sc-36997/org_app_configs_and_email_fix
Feb 10, 2026
Merged

[FEAT] Organization and Application configs#47
bbengfort merged 9 commits intomainfrom
chrisokuda/sc-36997/org_app_configs_and_email_fix

Conversation

@chris-okuda
Copy link
Contributor

@chris-okuda chris-okuda commented Feb 6, 2026

Scope of changes

Add an AppConfig and OrgCofig to 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

  • new feature
  • bug fix
  • documentation
  • testing
  • technical debt
  • other (describe)

Acceptance criteria

Screenshots of emails showing that the content was replaced properly when testing in local development:

Welcome Email:
image

Reset Password Email:
image

Definition of Done

  • I have manually tested the change running it locally (having rebuilt all containers) or via unit tests
  • I have added unit and/or integration tests that cover my changes
  • I have added new test fixtures as needed to support added tests
  • I have updated the dependencies list if necessary (including updating yarn.lock and/or go.sum)
  • Check this box if a reviewer can merge this pull request after approval (leave it unchecked if you want to do it yourself)
  • I have notified the reviewer via Shortcut or Slack that this is ready for review
  • Documented service configuration changes or created related devops stories

Reviewer(s) checklist

  • Any new user-facing content that has been added for this PR has been QA'ed to ensure correct grammar, spelling, and understandability.
  • Are there any TODOs in this PR that should be turned into stories?

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 AppConfig and OrgConfig to 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-Host logic). User sync webhooks are simplified from a list of endpoints to a single AppConfig.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.

@chris-okuda chris-okuda self-assigned this Feb 6, 2026
@chris-okuda chris-okuda force-pushed the chrisokuda/sc-36997/org_app_configs_and_email_fix branch from 9a21963 to 362ea12 Compare February 6, 2026 07:41
@chris-okuda chris-okuda marked this pull request as ready for review February 7, 2026 00:04
@chris-okuda chris-okuda requested a review from bbengfort February 7, 2026 00:04
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor Author

@chris-okuda chris-okuda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

notes for reviewer

Copy link
Contributor

@bbengfort bbengfort left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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."`

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change made in #48

@bbengfort bbengfort merged commit 53f1c4a into main Feb 10, 2026
8 checks passed
@bbengfort bbengfort deleted the chrisokuda/sc-36997/org_app_configs_and_email_fix branch February 10, 2026 12:43
@bbengfort bbengfort mentioned this pull request Feb 10, 2026
10 tasks
bbengfort added a commit that referenced this pull request Feb 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants