Changeset 6351545 in Klonkt for src/views/pages


Ignore:
Timestamp:
06/14/2026 08:18:50 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
07775b7
Parents:
9e27d64
Message:

tenancy: runtime Solo/Hub mode + mode-aware /admin (Phase 1)

Admin can switch live between modes in Admin -> Settings:

  • solo: exactly one site (the primary/owner site), no /sites routing, leaner /admin.
  • hub: main site + /sites/:slug routing (company; /gebruikers + assignment flow = Phase 2).

Switching is non-destructive (hides only, deletes nothing).

  • app_settings (key/value singleton) + SettingsService (cached getTenancy/setTenancy).
  • resolveSite: solo pins to the primary site + disables /sites/:slug + host mapping.
  • /admin/settings (god-only) toggle; /admin dashboard rewritten, mode-aware.

Tested on the demo: solo/hub dashboard tiles, /sites routing per mode, toggle back/forth.

Co-Authored-By: Claude <noreply@…>

Location:
src/views/pages
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/admin.ejs

    r9e27d64 r6351545  
    11<div class="container admin-page">
    2   <h1>Admin</h1>
    3   <p class="admin-tagline">God-level overview. <em>(Stub — full dashboard later.)</em></p>
     2  <h1>Beheer</h1>
     3  <% if (tenancy === 'hub') { %>
     4    <p class="admin-tagline">Hub-modus — bedrijfssite met gebruikers, elk hun eigen PrutFolio.</p>
     5  <% } else { %>
     6    <p class="admin-tagline">Solo-modus — jouw site.</p>
     7  <% } %>
    48
    59  <nav class="admin-quick-links" aria-label="Beheer-snelkoppelingen">
    6     <a href="/admin/sites" class="btn">🌐 Sites</a>
    7     <a href="/admin/users" class="btn">👥 Users</a>
    8     <a href="/admin/audio" class="btn">🎵 Audio tracks</a>
    9     <a href="/admin/playlists" class="btn">📃 Playlists</a>
    10     <a href="/admin/comments" class="btn">💬 Comments</a>
     10    <% if (tenancy === 'hub') { %>
     11      <a href="/admin/sites" class="btn">🌐 Sites</a>
     12      <a href="/admin/users" class="btn">👥 Gebruikers</a>
     13      <a href="/admin/audio" class="btn">🎵 Audio</a>
     14      <a href="/admin/playlists" class="btn">📃 Playlists</a>
     15      <a href="/admin/comments" class="btn">💬 Reacties</a>
     16      <a href="/admin/settings" class="btn">⚙️ Instellingen</a>
     17    <% } else { %>
     18      <a href="/posts/new" class="btn">✍️ Nieuwe post</a>
     19      <a href="/admin/audio" class="btn">🎵 Audio</a>
     20      <a href="/admin/comments" class="btn">💬 Reacties</a>
     21      <% if (primarySite) { %>
     22        <a href="/admin/sites/<%= primarySite.slug %>/edit" class="btn">🎨 Uiterlijk</a>
     23      <% } %>
     24      <a href="/account" class="btn">👤 Account</a>
     25      <a href="/admin/settings" class="btn">⚙️ Instellingen</a>
     26    <% } %>
    1127  </nav>
    1228
    1329  <div class="admin-stats">
    14     <div class="stat-card">
    15       <div class="stat-num"><%= stats.users %></div>
    16       <div class="stat-label">Users</div>
    17     </div>
    18     <div class="stat-card">
    19       <div class="stat-num"><%= stats.sites %></div>
    20       <div class="stat-label">Sites</div>
    21     </div>
    22     <div class="stat-card">
    23       <div class="stat-num"><%= stats.posts %></div>
    24       <div class="stat-label">Posts</div>
    25     </div>
    26     <div class="stat-card">
    27       <div class="stat-num"><%= stats.published %></div>
    28       <div class="stat-label">Published</div>
    29     </div>
     30    <% if (tenancy === 'hub') { %>
     31      <div class="stat-card"><div class="stat-num"><%= stats.users %></div><div class="stat-label">Gebruikers</div></div>
     32      <div class="stat-card"><div class="stat-num"><%= stats.sites %></div><div class="stat-label">Sites</div></div>
     33    <% } %>
     34    <div class="stat-card"><div class="stat-num"><%= stats.posts %></div><div class="stat-label">Posts</div></div>
     35    <div class="stat-card"><div class="stat-num"><%= stats.published %></div><div class="stat-label">Gepubliceerd</div></div>
    3036  </div>
    3137
     
    6874  <% } %>
    6975
    70   <p class="admin-todo">
    71     <strong>Coming later:</strong> create/delete sites, manage users, theme picker, audio toggles, Prutter settings.
    72   </p>
    7376</div>
    7477
Note: See TracChangeset for help on using the changeset viewer.