feat: minimal AIO hub with chakra grid + bottom dock

The all-in-one app at app.${domain} is a minimal hub: only the base
module (auth, profile, relays, PWA, image upload) plus a chakra-
themed entry point linking out to the seven standalone module PWAs
(market, sortir, wallet, chat, forum, tasks, castle), with an
eighth tile reserved for a forthcoming restaurant module.

UI:
- 2-column grid of 8 module tiles with Lucide icons, occupying the
  full viewport between the title and the bottom dock. Status hints
  (alpha/beta/coming soon) shown beneath each label.
- Faint chakra-mandala column rendered behind the tiles (peeks
  through their translucent backgrounds), plus a subtle vertical
  hue gradient (red at the bottom → violet at the top) — the chakras
  inform the visual frame without forcing a 1:1 module mapping.
- Bottom dock with system-level controls: Profile (Sheet hosting
  the existing ProfileSettings.vue), Theme (light/dark/system),
  Language (uses available locales), and a Currency placeholder.
- Each tile is a link to VITE_HUB_<NAME>_URL with the user's
  lnbits_access_token appended as ?token= so the destination logs
  in via the existing acceptTokenFromUrl() relay.

Wiring:
- src/App.vue: stripped to the same minimal shell as the standalone
  apps (no AppLayout/AppSidebar — the hub is the navigation).
- src/app.ts: only base module is registered. Hub is the / route.
- src/app.config.ts: only base module config remains.
- public/chakras/*.svg: 7 chakra mandala SVGs copied from the legacy
  frontend (Atitlan.io).
- nginx.conf.example: rewritten with one server block per subdomain
  pointing at its own dist-<name>/ output.

Closes #26.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-05-02 09:04:14 +02:00
commit 9a3e3ae0ed
12 changed files with 1024 additions and 332 deletions

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="26.373173mm"
height="26.373281mm"
viewBox="0 0 26.373173 26.373281"
version="1.1"
id="svg1911"
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
sodipodi:docname="swadhisthana.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1913"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="10.35098"
inkscape:cx="50.671531"
inkscape:cy="50.333398"
inkscape:window-width="2004"
inkscape:window-height="1979"
inkscape:window-x="8"
inkscape:window-y="64"
inkscape:window-maximized="0"
inkscape:current-layer="layer1" />
<defs
id="defs1908" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-50.435614,-75.884446)">
<path
d="m 70.583566,88.910556 c 0,3.844713 -3.11644,6.961576 -6.961365,6.961576 -3.844925,0 -6.961364,-3.116863 -6.961364,-6.961576 0,-3.844573 3.116439,-6.961012 6.961364,-6.961012 3.844925,0 6.961365,3.116439 6.961365,6.961012 z"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1022" />
<path
d="m 72.432474,89.07107 c 0,4.865864 -3.944409,8.810237 -8.810273,8.810237 -4.865864,0 -8.810273,-3.944373 -8.810273,-8.810237 0,-4.865512 3.944409,-8.810273 8.810273,-8.810273 4.865864,0 8.810273,3.944761 8.810273,8.810273 z"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1024" />
<path
d="m 59.139454,81.494108 h -0.0081 c 7.05e-4,-2.867731 2.268714,-3.404306 3.001433,-3.800122 0.733073,-0.395464 1.489428,-1.310923 1.489428,-1.310923 0,0 0.756003,0.915459 1.489428,1.310923 0.73272,0.395816 3.000728,0.932391 3.001434,3.800122 h -0.0081"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1026" />
<path
d="m 68.104949,96.648102 h 0.0081 c -7.06e-4,2.867695 -2.268714,3.404308 -3.001434,3.800338 -0.733425,0.39549 -1.489428,1.31067 -1.489428,1.31067 0,0 -0.756003,-0.91518 -1.489428,-1.31067 -0.732719,-0.39603 -3.000728,-0.932643 -3.001433,-3.800338 h 0.0081"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1028" />
<path
d="m 68.126115,81.506808 -0.0039,-0.0074 c 2.517422,-1.373011 4.075289,0.360892 4.773789,0.814564 0.698147,0.454378 1.863725,0.67945 1.863725,0.67945 0,0 -0.440972,1.102078 -0.436739,1.935339 0.0032,0.832908 0.61842,3.080808 -1.89865,4.455231 l -0.0039,-0.0074"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1030" />
<path
d="m 59.118287,96.635402 0.0039,0.0074 c -2.517423,1.373081 -4.07529,-0.360892 -4.77379,-0.814529 -0.698147,-0.454343 -1.863725,-0.67938 -1.863725,-0.67938 0,0 0.440973,-1.102148 0.436739,-1.93548 -0.0032,-0.832873 -0.618419,-3.080879 1.898298,-4.455301 l 0.0042,0.0071"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1032" />
<path
d="m 59.118287,81.506808 0.0039,-0.0074 c -2.517423,-1.373011 -4.07529,0.360892 -4.77379,0.814564 -0.698147,0.454378 -1.863725,0.67945 -1.863725,0.67945 0,0 0.440973,1.102078 0.436739,1.935339 -0.0032,0.832908 -0.618419,3.080808 1.898298,4.455231 l 0.0042,-0.0074"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1034" />
<path
d="m 68.126115,96.635402 -0.0039,0.0074 c 2.517422,1.373081 4.075289,-0.360892 4.773789,-0.814529 0.698147,-0.454343 1.863725,-0.67938 1.863725,-0.67938 0,0 -0.440972,-1.102148 -0.436739,-1.93548 0.0032,-0.832873 0.61842,-3.080879 -1.89865,-4.455301 l -0.0039,0.0071"
style="fill:none;stroke:#f5911e;stroke-width:0.740833;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:0.2"
id="path1036" />
<path
d="m 63.728387,91.072378 c -0.76835,0.270934 -1.62948,-0.164041 -2.18828,-0.663575 -1.247423,-1.115836 0.346427,-2.020358 1.401586,-2.081742 0.816328,-0.04727 1.561042,0.443089 2.067983,1.045281 0.0071,0.185914 0.01729,0.372181 0.02646,0.5588 -0.454025,0.388056 -0.667103,0.915458 -1.307748,1.141236 m 2.884664,-4.812594 c -1.988255,-0.02399 -4.014611,0.01834 -5.997928,0.170744 -0.275166,0.02117 -0.270228,0.396875 0,0.424392 1.464028,0.152752 2.96792,0.199319 4.455231,0.160161 -0.05609,0.494594 -0.07514,0.990247 -0.0762,1.485547 -0.698147,-0.703086 -1.687689,-1.094317 -2.71145,-0.858308 -1.203325,0.277283 -2.325864,1.122891 -1.883481,2.473325 0.382411,1.165578 1.811867,1.806575 2.941109,1.827389 0.561975,0.01094 1.309864,-0.299861 1.770944,-0.779639 0.05786,0.712258 0.166159,1.424728 0.464256,2.064561 0.0575,0.123861 0.258233,0.08929 0.287161,-0.03736 0.219428,-0.975219 0.06632,-2.001449 0.03422,-2.995577 -0.03351,-1.070328 -0.01129,-2.145595 -0.101601,-3.212748 0.272698,-0.0127 0.547512,-0.02081 0.817739,-0.03916 0.436034,-0.02928 0.444853,-0.677686 0,-0.68333"
style="fill:#f7931e;fill-opacity:0.2;fill-rule:nonzero;stroke:#f5911e;stroke-width:0.0352778;stroke-opacity:0.2"
id="path1038" />
<path
d="m 65.495099,84.837031 c -0.70732,0 -0.70732,1.096786 0,1.096786 0.707319,0 0.707319,-1.096786 0,-1.096786"
style="fill:#f7931e;fill-opacity:0.2;fill-rule:nonzero;stroke:#f5911e;stroke-width:0.0352778;stroke-opacity:0.2"
id="path1040" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB