Tymeslot ships with a built-in admin UI atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Tymeslot/tymeslot/llms.txt
Use this file to discover all available pages before exploring further.
/admin. From it, an admin can toggle a small set of runtime settings — such as whether new users can register or whether password login is available — without redeploying or restarting the server. This guide explains how admin status works, what you can control from the UI, and how to promote or demote admins in every supported deployment environment.
How admin status works
Admin access in Tymeslot follows a few important rules:- The first user to register on a fresh install is automatically promoted to admin in the same database transaction as the account insert. This only fires when the
userstable is completely empty. - Once any user exists, the auto-promotion gate closes permanently. All subsequent admins must be promoted explicitly.
- Demoting all admins does not reopen the gate — you must run the promote task or update the database directly to recover access.
- On SaaS deployments, the admin UI is disabled at the routing layer and the mix task and release helper refuse to run.
What you can change from /admin
The admin UI lets you change the following runtime settings without a redeploy:
| Setting | What it controls |
|---|---|
registration_enabled | Whether new user signups are open. When disabled, the registration form is hidden for all auth methods. |
password_auth_enabled | Whether the email/password login form is shown. OAuth providers continue to work even when this is disabled. |
Three-layer precedence
Each setting is resolved in the following order of priority:- DB override — the value you set from the admin UI (highest priority).
- Application config / environment variable — what
config.exsorruntime.exssees at boot. - Built-in default — the fallback value when neither of the above is set.
Promoting and demoting admins
There is one canonical interface for promoting and demoting admins, exposed two ways: amix task for development installs, and a release RPC call for all packaged production environments (Docker, Cloudron, Railway, and so on). The user account must already exist before you run either command — these commands do not create accounts.
- Development
- Docker
- Cloudron
- Railway
If you cloned the repo and run via The mix task delegates to
mix phx.server, use the mix tasks directly:Tymeslot.Release.promote_admin/1, so the behaviour is identical to the production path.Listing current admins
To see which accounts currently hold admin status, run thelist_admins helper from inside your running container or environment. Using Docker as an example:
list_admins() call works identically across Cloudron, Railway, and any environment that runs the packaged release.
Last-resort recovery
Recover admin access via direct SQL
Recover admin access via direct SQL
If you have lost access to the mix task and release CLI — for example, because every admin password is forgotten and no admins remain — you can promote an account directly via SQL:To execute the query, connect to your PostgreSQL instance directly. On Docker:On Cloudron: