alexei.dolgolyov b9f3a2ca0b feat(auth): Session model + remember-me
Replace the single `user.refreshToken` column with a proper Session
table so users can have multiple concurrent sessions (phone, laptop,
etc.), each with their own refresh token, expiry, label, and
remember-me flag.

- Add Session model (id, userId, tokenHash, label, userAgent,
  ipAddress, rememberMe, lastUsedAt, expiresAt).
- Drop `User.refreshToken` and `User.refreshTokenExpiresAt`.
- authService: new createSession/validateSession/rotateSession/
  revokeSession/listUserSessions helpers; remove refresh-token-on-user
  functions.
- sessionCookies helper now issues a session_id cookie alongside
  access_token and refresh_token; rotateSessionCookies keeps the same
  session id on refresh.
- Login form adds a "Keep me signed in for 30 days" checkbox;
  TTL is 7d by default, 30d with remember-me.
- User-Agent parsed into a friendly label ("Chrome on Windows") for
  the upcoming sessions page.
- hooks.server.ts, refresh endpoint, logout, register, oauth callback,
  and onboarding all switched to the new session API.
2026-04-16 03:41:52 +03:00
2026-04-10 19:39:27 +03:00
2026-04-10 19:39:27 +03:00
2026-04-10 19:39:27 +03:00

Web App Launcher

A self-hosted dashboard for organizing, monitoring, and launching web applications. Built with SvelteKit, Prisma (SQLite), and Tailwind CSS.

Features

  • App registry — add apps with icons, tags, and categories; automatic healthcheck monitoring with sparkline history
  • Boards & widgets — customizable dashboards with drag-and-drop, resizable widget columns, and inline WYSIWYG editing
  • Service integrations — connect to media services, Planka, and more to display live data in widgets
  • Authentication — local accounts + OAuth/Authentik; per-board access control
  • Localization — English and Russian
  • PWA — installable, multi-tab sync, auto-discovery bookmarklet
  • SQLite backup/restore — full database backup from the admin panel

Quick Start

# Clone and run with Docker Compose
git clone https://git.dolgolyov-family.by/alexei.dolgolyov/web-app-launcher.git
cd web-app-launcher
docker compose up -d

The app is available at http://localhost:3000. On first launch, create an admin account at the setup page.

Configuration

Environment variables (set in docker-compose.yml or .env):

Variable Default Description
APP_PORT 3000 Port to expose
JWT_SECRET Secret for JWT signing (change in production!)
GUEST_MODE true Allow unauthenticated access
HEALTHCHECK_CRON */5 * * * * App healthcheck interval
HEALTHCHECK_TIMEOUT_MS 5000 Healthcheck request timeout
OAUTH_CLIENT_ID OAuth provider client ID
OAUTH_CLIENT_SECRET OAuth provider client secret
OAUTH_DISCOVERY_URL OpenID Connect discovery URL

Development

npm install
npx prisma generate
npm run dev

License

MIT

S
Description
No description provided
Readme 2.9 MiB
0.0.1 Latest
2026-04-10 21:23:00 +03:00
Languages
TypeScript 49.3%
Svelte 42%
HTML 7.1%
CSS 1.2%
JavaScript 0.2%
Other 0.2%