link·menu·system

Link Menu System · self-hosted link portal

Your team's start page,
never a dead end.

A responsive grid of the links your organization actually uses — set as everyone's browser start page. Edit it in place, no CMS. And a tiny canary router makes sure a laptop off the office network never lands on “page not found.”

  • No database
  • No framework
  • No build step
  • Flat-file JSON
  • MIT licensed

how it works

Two small pages. One reliable start page.

Link Menu System is two cooperating PHP pages over flat-file JSON — no database, no framework, no build step. One is the portal your team sees; the other is a router that decides which portal they can actually reach.

01

The portal

A categorized grid of link panels, server-rendered from config.json. Set it as the new-tab / start page and every device opens to the same curated launchpad.

02

The canary router

The page you actually set as the start URL. It silently sends in-house devices to the internal portal and off-network devices to a public fallback — so a start page is never a 404.

03

Just files

All state is JSON on disk. Drop the folder on any PHP host, no dependencies to install. Portable, auditable, trivial to back up.

inline admin

Edit the page on the page.

Log in and the portal itself becomes the editor — there's no separate CMS to learn. Everything saves straight back to the JSON.

Edit in place

Double-click a link, heading, banner, or setting to edit it. Add links and panels inline.

Drag to reorder

Rearrange links within a panel and panels within the grid by dragging. Layout saves silently.

Hide, don't delete

Stage planned changes with a per-panel hide toggle; hidden panels vanish for users, stay visible to you.

Fluid grid

Fills the window and steps down a column at a time as it narrows. Set max columns and width to taste.

🔒

One admin account

First-run setup creates a single bcrypt-hashed admin. Sessions gate every edit endpoint.

🎨

Themeable

Optional themes/{name}.css and a card-effect toggle. Seeded with a sensible default.

the canary router · live demo

The off-network 404, solved.

Staff devices are set to open the internal portal as their start page. Take the laptop home and that internal address is unreachable — “page not found” on every new tab. The router fixes it by probing for a canary: a tiny image that exists only on the internal server. Try both outcomes below.

canary loads

You're in-house

The image came back, so the internal server is reachable. Redirect straight to the internal portal.

canary fails · 3s timeout

You're off-network

The image errored or never arrived. Fall back to the public URL — a status page, intranet login, or anything you choose. Never a dead page.

Demoing the internal network — now run the router and watch where it sends you:

Live demo: the router Live demo: the portal

The network buttons just set which canary state the router probes — they don't navigate. “Live demo: the router” then visits the router in that state (opens a new tab); the portal link works either way.

download

Grab it and self-host.

Unpack on any PHP-capable web host. Configuration is generated on first run and edited in place; the bundle ships code and assets only.

git clone https://github.com/grimblefritz/link-menu-system.git