dev panel for mickey services
this repo is being archived as a new dashboard will be put in place and this shit didnt even reach prod lmfao. but, i hope someone can find some use out of it, which is why its being archived, not deleted
bun install
bun run devserver outputs:
dashboard running on port 3000
admin token: mickey-admin-abc123def456
login endpoint: POST /auth/login
admin login: POST /auth/admin-login
before admin can login, add your ascii armoured gpg public key to data/admin.asc:
gpg --export --armor "your-key-id" > data/admin.ascthe file is gitignored so it won't be committed.
each user gets a unique access path when they log in:
{first8CharsOfPubKey}{base36Timestamp}{sha256HashFirst12Chars}
example: miibjqnb2x1abc123def456
- admin creates a user session token via admin panel
- user calls
POST /auth/loginwith userId, sessionToken, and publicKey (ascii armoured gpg format) - server encrypts a challenge code with the user's public key and returns
loginIdandencrypted - user decrypts the challenge with their private key (use kleopatra or save the message to a file and decrypt)
- user calls
POST /auth/verify-loginwith loginId and decryptedCode - server verifies and returns unique
accessPathandtoken(valid 1 hour) - user prefixes all api calls with
/{accessPath}/... - include
x-session-tokenheader with token value
- access sessions expire after 1 hour
- expired sessions cleaned automatically every 5 minutes
- sensitive actions require pgp challenge if last challenge was over 15 minutes ago
admin- full access, user management, settingsmanager- tracking, audit, project assignmentdev- pipeline view, notes, pluginsclient- send messages/projects only
no authentication required.
| method | path | description |
|---|---|---|
| POST | /auth/login |
start login with userId, sessionToken, publicKey |
| POST | /auth/admin-login |
start admin login with adminToken (uses data/admin.asc) |
| POST | /auth/verify-login |
complete login with loginId, decryptedCode |
| POST | /auth/logout |
end session |
| POST | /auth/verify-challenge |
verify pgp challenge for reauth |
all routes prefixed with /{accessPath}.
| method | path | roles | description |
|---|---|---|---|
| GET | / |
all | list loaded plugins |
| method | path | roles | description |
|---|---|---|---|
| POST | /pipeline/send |
client | send message or project |
| GET | /pipeline/messages |
dev, manager | get all messages |
| GET | /pipeline/projects |
dev, manager | get all projects |
| POST | /pipeline/projects/:id/assign |
manager | assign project to dev |
| method | path | roles | description |
|---|---|---|---|
| GET | /plugins |
all | list installed plugins |
| POST | /plugins/register-key |
dev, manager | register public key |
| POST | /plugins/challenge |
dev, manager | get encrypted challenge |
| POST | /plugins/install |
dev, manager | install plugin after verification |
| method | path | roles | description |
|---|---|---|---|
| GET | /manager/track |
manager, admin | view action log |
| GET | /manager/track/summary |
manager, admin | action summary stats |
| GET | /manager/plugins/audit |
manager, admin | plugin install audit |
| DELETE | /manager/track/clear |
manager, admin | clear action log (requires reauth) |
| method | path | roles | description |
|---|---|---|---|
| GET | /admin/sessions |
admin | list all user sessions |
| POST | /admin/sessions |
admin | create new user session |
| DELETE | /admin/sessions/:token |
admin | revoke user session |
| GET | /admin/settings |
admin | get dashboard settings |
| PUT | /admin/settings |
admin | update dashboard settings |
plugins add their own routes under /{accessPath}/{pluginPathName}.
built-in plugin for dev notes with reminders.
| method | path | description |
|---|---|---|
| GET | /notes |
get user notes |
| POST | /notes |
create note with optional reminder |
| PUT | /notes/:id |
update note |
| DELETE | /notes/:id |
delete note |
| GET | /notes/reminders |
get pending reminders |
plugins are defined in plugins/*.yaml:
name: my-plugin
path_name: myplugin
github_repo: https://github.com/org/repo
install_file: install.sh
user_id: user123install requires public key challenge verification - the dashboard encrypts a code with your registered public key, you decrypt it and submit to confirm identity.
admin can configure via settings panel:
- default session expiry (days)
- max plugins per user
- allow client messages