Skip to content
peppe1337Public

About

Static directory starter for Nuxt 4 — no database, no backend, no third-party requests at runtime

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

Listory

A static directory starter for Nuxt 4. No database, no CMS account, no server, no signup — entries are files in the repository, and the whole site builds to plain HTML you can host anywhere for free.

Status: v0.1.0, early. It builds and it works, and it is small. Please read What it does not do before investing time — that section is longer than the feature list, on purpose.


Why this exists

Most directory starters assume you want a platform: visitors sign up, submit their own lis$ings, pay for featured spots, and you moderate from an admin panel. That needs a database, an auth provider, a payment webhook and a running server. If that is the directory you are building, this is the wrong repository — see the links at the end of the next section.

This one assumes the opposite: one person curates the list. You add an entry, you commit, it deploys. That removes the backend, and with it the hosting bill, the accounts, and every third-party request at runtime.


What it does

  • Entries as data. One data/entries.json. Add an object, rebuild, done.

  • Generated pages. Index, one detail page per entry, one page per category — all pre-rendered to static HTML at build time.

  • Client-side search and filtering. Full-text filter plus category filter, no search service.

  • SEO plumbing, which is most of what a directory is actually for:

    • per-page <title> and meta description derived from the entry data
    • canonical URLs
    • sitemap.xml and robots.txt generated at build time
    • JSON-LD structured data — ItemList on the index, SoftwareApplication on detail pages
  • No third-party requests at runtime. No trackers, no analytics, no CDN, no externally loaded web fonts. The generated HTML references your own assets and the outbound links in your own entries — nothing else. Verify it yourself rather than believing me:

    npm run generate
    grep -roE 'https?://[a-z0-9.-]+' .output/public --include='*.html' | sed 's/.*http/http/' | sort -u

    That is a factual property of the build output, not a legal claim. Which obligations apply to your site depends on what you add and where you host it.

  • Plain CSS. No UI framework, no licence to buy, nothing to keep in sync.

What it does not do

This is the honest half. Because there is no server, none of the following is possible, and no configuration will change that:

  • No submission form. Visitors cannot add entries. Entries arrive as a commit or a pull request — which works if your audience are developers, and not at all if they are not.
  • No user accounts. No login, no "edit my listing", no password reset.
  • No payments. Paid listings, featured spots and sponsored placements all need a server to receive the payment webhook. A static site never learns that anyone paid.
  • No moderation workflow. No pending/approved states, no admin panel. Your admin panel is your text editor.
  • No AI autofill at request time. An API key must never reach the browser.
  • No uploads, comments, ratings or view counters.

If you need any of those, the honest recommendation is to start from a full-featured open-source project instead — for example MkThingsHQ/mkdirs (Apache-2.0, Next.js, includes submissions, auth, Stripe and moderation) or PBHAHAHA/Nuxt_Mkdirs (MIT, Nuxt 4). They do those things. This does not.


Getting started

npm install
npm run dev        # http://localhost:3000
npm run generate   # static build into .output/public/

Deploy .output/public/ to any static host.

Set your own domain so canonical URLs and the sitemap are correct:

NUXT_PUBLIC_SITE_URL=https://your-directory.example npm run generate

Adding an entry

Append to data/entries.json:

{
  "slug": "my-tool",
  "name": "My Tool",
  "description": "One or two sentences. Also used as the meta description.",
  "url": "https://example.org",
  "category": "Developer Tools",
  "tags": ["tag-a", "tag-b"],
  "license": "MIT"
}

Rebuild. The detail page, the category page, the sitemap entry and the structured data all follow from that object.

The bundled example

The example directory lists real open-source self-hosted projects with their actual URLs and licences. Nothing in it is invented, and no project listed has endorsed this repository. Replace data/entries.json with your own data.


Roadmap

v0.1.0 is deliberately small. The following is planned and therefore not present today:

  • (planned) a local build script that fills an entry from a URL
  • (planned) pagination for large directories
  • (planned) tag pages alongside category pages
  • (planned) an RSS feed

None of the above exists yet. If one of them matters to you, an issue is the fastest way to move it up the list.

Feedback

There is no mailing list and no contact form. Open an issue — that is the only channel. Starring the repository is a useful signal to me about whether this is worth continuing.

Licence

MIT ℔ see LICENSE.

Legal

Operator of the demo site: Christopher Kraft, Albert-Schweitzer-Straße 1, 51429 Bergisch Gladbach, Germany, chris@kr

About

Static directory starter for Nuxt 4 — no database, no backend, no third-party requests at runtime

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages