Sample app tour
A screen-by-screen tour of the sample admin app that ships with SQLly Embedded: status and licensing, profiles and connections, labels, users, and launching SQLly.
The package includes a small admin app (sample-app/, Node.js 20+, no dependencies) that exercises everything SQLly Embedded can do. It plays the part of your app: an admin side for profiles, labels and users, and a user side that signs people in and opens SQLly. Every screen below is a thin layer over one or two management API calls, which are named under each screenshot so you can see what your own app would call.
These screenshots come from a real bridge linked to a trial license, with a SQL Server Northwind database behind it.
Admin sign-in
Status and licensing
Status is GET /manage/status rendered as a page. A bridge started without a key or license file is unlicensed: you can already build and test profiles, but SQLly won't launch until the install is linked.
Connect to sqlly.app asks sqlly.app for a link code (POST /api/embedded/links) and shows it. Open sqlly.app to approve takes the license owner to sqlly.app, where they confirm the same code and pick a license:
Seconds later the admin app collects the install's key, hands it to the bridge with PUT /manage/license, and Status shows the license:
Profiles
A profile is the set of connections a group of users sees. The list shows each profile's connections and who is assigned to it, with Launch to open SQLly as yourself with that profile.
Editing a connection
The connection editor offers every field the credential format supports for the chosen engine. The engine list and each engine's sign-in types come from GET /manage/engines. Test checks whatever is on the form, saved or not, and shows the engine's own answer inline:
Labels
Clients, projects and environments colour and group connections in SQLly, and carry safety rules. The sample app keeps one shared set and sends it with every profile, so renaming a label updates every connection that uses it.
Users and seats
The sample app's users are its own accounts, each assigned one profile. In your app, users and their access are whatever you already have. The page also shows who holds a seat right now (GET /manage/seats), with Release seat (DELETE /manage/seats/{user}).
What your users see
Users sign in at the app's root, not under /admin:
While SQLly is open, Status shows the seat in use:
Reading the code
| File | What to take from it |
|---|---|
lib/bridge.js | A complete management API client: every call, error handling, timeouts. Copy it or port it. |
lib/credentials.js | Turns form fields and shared labels into a sqlly-credentials document. |
lib/sqllyapp.js | The sqlly.app side of linking: create a link, poll for the key. |
server.js | Routing. GET /app/ is the launch route; /admin/* is the admin side; /admin/link* is linking. |
views/pages.js | The HTML, including injectLaunch, which sets the two globals before boot.js. |
test/ | node --test suites that run the app against a fake bridge. A good model for testing your own integration. |
Ready to replace it? Build your own app walks through each of these jobs in your own stack.