WWebBuddyMarketplace
Install and run

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

  1. Deploy and check /api/health (Installation).
  2. Open /signup and 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).
  3. 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.
  4. 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
Email 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
Email 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:

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

SQL
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:

SQL
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:

SQL
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

SQL
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:

SQL
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.