First admin and operator tasks
There is no admin panel and no default login. How the first account works, how to retire the demo account, workspace roles, and operator tasks in SQL.
5 min readUpdated Oct 17, 2026Applies to Subsweep 0.1.0
On this page
Subsweep ships with no default credentials, no setup wizard and no platform admin panel. Every person who signs up gets their own workspace and is its Owner. Running the service (plans, trials, removing accounts) is done through Stripe and the database, as described below.
The first account
- Deploy and check
/api/health(Installation). - Open
/signupand create an account with your own email and a password of at least 10 characters. Ticking I manage subscriptions for more than one client only routes you through the accountant onboarding; accountant mode itself comes with a paid Accountant plan (see Teams and accountants). - With an email provider configured, open the verification email before signing in. Without one, production refuses email sign-up: configure email first, sign up with Google, or set
ALLOW_UNVERIFIED_SIGNUP=true(Configuration). Development signs you in straight away. - Onboarding asks for company size, spend, country, timezone and digest timing. Your workspace starts on a 14-day Pro trial.
That account is an ordinary Owner of its own workspace. It has no extra powers over other people's workspaces.
Note
There is no "forgot password" flow and no change-password screen in 0.1.0. A user who forgets their password signs in with a magic link from the sign-in page, which needs outbound email; production refuses magic links without it.
The demo account
The sign-in page can show a one-click Northwind Studio demo. In production it is off unless DEMO_LOGIN_ENABLED=true; in development it is on unless DEMO_LOGIN_ENABLED=false.
| Detail | Value |
|---|---|
priya@northwind.studio |
|
| Password | northwind-demo, shown on the sign-in page and in the source |
| Workspace | Northwind Studio, a Pro trial with sample subscriptions, flags, savings, two team members and one pending invite |
| Reset | Reseeded when the workspace is empty, more than 24 hours old, or /api/demo/login?reset=1 is called |
Never sent to @northwind.studio addresses |
While it is on, it is a normal, writable account that anyone can use. That is what you want for a public showroom like subsweep.app, and not what you want on a customer-facing install.
While it is off, the button is hidden, /api/demo/login returns 404, and signing in as priya@northwind.studio with the published password is refused with "The demo shop is switched off."
If the demo was ever on for a real install, the account and its workspace are still in the database. Remove them before launch, either under Settings → Data → Delete my account and all data while signed in to the demo, or in SQL:
DELETE FROM organizations WHERE name = 'Northwind Studio';
DELETE FROM "user" WHERE email LIKE '%@northwind.studio';Roles inside a workspace
Each workspace has Owners, Editors and Viewers. Owners invite people from Team; see Teams and accountants.
| Action | Owner | Editor | Viewer |
|---|---|---|---|
| See every screen, the list, calendar and savings | Yes | Yes | Yes |
| Export CSV, create or revoke a share link | Yes | Yes | Yes |
| Add, edit, tag, dismiss, merge, delete and cancel subscriptions | Yes | Yes | No |
| Connect, scan, upload and disconnect sources | Yes | Yes | No |
| Change notification settings, attach files, confirm charges | Yes | Yes | No |
| Invite and remove members | Yes | No | No |
| Change billing, open the customer portal | Yes | No | No |
| Delete the account and all data | Yes | No | No |
The last remaining Owner cannot be removed.
Note
Some checks are looser than the table suggests in 0.1.0. The Organization settings form is disabled for Viewers in the interface, but the server does not check the role when it saves. The Slack, QuickBooks and Xero connect links do not check the role either.
Operator tasks
There is no screen for these. Run them in psql (or your provider's SQL console) against the production database, and back up first.
List workspaces
SELECT name, slug, plan, trial_ends_at, stripe_customer_id, created_at
FROM organizations
ORDER BY created_at DESC;plan is free, pro, accountant or accountant_client. A pro workspace whose trial_ends_at has passed and that has no stripe_customer_id is treated as Free.
Give a workspace Pro by hand
For a friend, a pilot customer or a manual invoice:
UPDATE organizations
SET plan = 'pro', trial_ends_at = NULL
WHERE slug = 'acme';With no trial end date, the workspace stays on Pro until you change it. A later Stripe webhook for that workspace overwrites the plan, so do not do this for workspaces that pay through Stripe.
Turn on accountant mode by hand
Accountant mode normally comes from a paid Accountant checkout in Stripe, which marks the workspace's Owners as accountants. Without Stripe, set both the plan and the flag:
UPDATE organizations
SET plan = 'accountant', trial_ends_at = NULL
WHERE slug = 'acme';
UPDATE "user"
SET is_accountant = true
WHERE email = 'owner@acme.com';The Clients screen appears on the next page load. Client workspaces have paid features only while this workspace stays on accountant.
Extend a trial
UPDATE organizations
SET plan = 'pro', trial_ends_at = now() + interval '14 days'
WHERE slug = 'acme';Remove an account
Ask the Owner to use Settings → Data → Delete my account and all data, which deletes the active workspace and their user. To do it yourself, mirror what that button does:
DELETE FROM organizations WHERE slug = 'acme';
DELETE FROM "user" WHERE email = 'owner@acme.com';Deleting a workspace does not cancel its Stripe subscription. Cancel it in Stripe first.
Close sign-ups
There is no switch for this in 0.1.0. Anyone who can reach /signup, request a magic link for a new address, or use Google sign-in (when it is configured) gets an account and a Pro trial. A production install without outbound email refuses email sign-up and magic links, but Google sign-in still creates accounts, so that is not a way to close sign-ups. If you need a closed install, restrict access at your reverse proxy or change the sign-up page in the source.