Same story as the association website migration, different section: the owner-facing portal.
What happened
Owners use the app through a handful of pages: log in, see the dashboard, view documents, make a payment. All of these previously lived in the Python backend.
They're now a set of frontend pages that talk to the backend over a data connection.
The sign-in flow works like this:
- Owner visits the login page
- They enter their email
- The app sends them a magic link — a special link that signs them in automatically when they click it
- The link sets a session and sends them to their dashboard
The payment page connects to Stripe. Instead of the backend redirecting the browser directly, it now sends back a checkout link that the frontend opens.
One extra note: there's a server setting that needs to be updated manually before this works on the live site. The magic links need to point to the new web address, not the old one. That's a configuration change, not code — something to do at next deployment.
Why
Same as PR #33: this is part of the migration moving all the app's pages to the new frontend approach. The owner portal is one of the more important sections since owners are the main users.