A secure, private, self-hosted navigation page system designed for personal use.
A full-stack navigation/portal page that supports login, navigation management, and card editing. It uses a single Node.js process to serve both the frontend build (dist/) and the API (/api).
- Secure authentication: JWT-based auth with access token and refresh token (HttpOnly cookie).
- Private access: only users with the access key can enter.
- Categorized navigation: organize links by categories.
- Search: real-time filtering of navigation links.
- Auto metadata: auto fetch title/description/favicon when editing a URL.
- JSON storage: flat-file storage without an external database.
| Login | Home |
|---|---|
![]() |
![]() |
| Manage navigation | Edit card |
|---|---|
![]() |
![]() |
- Frontend: React + Vite + Tailwind CSS
- Backend: Node.js + Express
- Auth: JWT access/refresh tokens
- Storage: JSON files in
api/data/
npm installCreate your .env:
cp .env.example .envSet your access key in .env:
ACCESS_KEY
Run in dev mode (frontend + API):
npm run devnpm install
npm run build
npm startDefault port is PORT in .env (default: 3000).
- Access key in
.env:ACCESS_KEY
- Data files:
api/data/users.jsonapi/data/navigations.json
GET /api/health→{"success":true,"message":"ok"}


