
About DevList.app
DevList.app is a hand-curated directory of software engineering resources. It runs on the Suprnova directory starter, a free, MIT-licensed directory application built on the Suprnova Rust framework, with Vue pages rendered on the server. The starter brings what every directory needs: owner submissions, moderation, search, categories, articles, SEO controls and free or paid publication. DevList.app adds its own features on top.
Here is how to build your own directory from the starter, from an empty folder to a site you can put online.
1. Install the tools
- Rust 1.94 or newer builds the server and the console commands.
- Bun installs and builds the frontend.
- Node 24 runs the page renderer and generates your key.
- A C toolchain, pkg-config and the OpenSSL headers compile the native
libraries. On Debian or Ubuntu:
sudo apt install build-essential pkg-config libssl-dev. - Git fetches the code.
2. Get the code
3. Configure it
The second command writes a random APP_KEY into .env. The key protects
sessions and saved payment settings: keep it safe, and never change it on a
live site.
Open .env and give your directory a name with APP_NAME and a one-sentence
SITE_DESCRIPTION, which search results and social previews show. Leave
APP_URL at http://localhost:8765 for now. The database is SQLite in
database.db, so there is no database server to run.
4. Build it
The first build takes a few minutes while Cargo compiles the dependencies.
You get two programs: directory, the web server, and console, for one-off
commands. migrate creates the tables; run it again after an update and it
applies only what is new.
5. Run it
The site runs as three processes. Start each in its own terminal, from the project folder:
&&
The first is Vite, which serves the frontend while you work on it. The second renders the public pages on the server, so visitors and search engines get the full page before any script runs. The third is the application. Open localhost:8765: the directory is there, empty.
6. Catch the email
Creating an account sends a verification link, and .env sends mail to a
local catcher on port 1025. Run one, for example Mailpit:
Its inbox is at localhost:8025.
7. Fill it and take charge
This creates the starter's categories. To try a full directory first,
directory:demo adds demo listings and articles; keep those in a
demonstration copy, not in the directory you will publish.
Register at /register, open the verification link from the mail catcher,
and find your account ID on Your account. Then make yourself the
administrator, with your own ID:
Administration now appears in the menu. A new directory has no
publishing plan yet, so create one: open Publishing plans, choose New
plan, give it the identifier free and a name, pick the billing type
Free with an amount of 0, tick Offer this plan to owners and choose
Create plan. Then submit a listing from Your listings, approve it in
Listing reviews, choose the free plan, and it is public.
8. Make it yours
SITE_THEME picks a color preset (zinc, blue, indigo, violet,
emerald, teal, rose or orange); leave it blank and SITE_ACCENT sets
your own accent color. SITE_LOGO_URL points at your logo. The pages are Vue
components in frontend/src/pages, so everything else is yours to change.
9. Put it online
In production, set APP_ENV=production, APP_DEBUG=false, your real
APP_URL, SESSION_SECURE=true and SESSION_COOKIE_PREFIX=__Host-; keep
the database and DIRECTORY_MEDIA_ROOT outside the release folder; and send
mail through a real SMTP relay with your own sender. Build the release,
run migrate once, then keep the application and the page renderer running
under a supervisor such as systemd, behind a reverse proxy that serves HTTPS.
Back up the database, the media folder and the key together.
DevList.app runs exactly this, packed into one container image with its database on a persistent volume.
Questions about DevList.app go to our support tracker.