Skip to content

Tech Stack

Server

TechnologyVersionPurpose
PHP8.1Backend API, page rendering
PostgreSQL15Primary database
Apache2.4Web server with mod_php
Nginx1.18Reverse proxy, SSL termination
Node.js20.xBuild tools, VitePress docs
Stockfish15Chess engine

Frontend

TechnologyPurpose
Vanilla JSDesktop UI, window manager, all apps
CSS3Custom properties, glassmorphism, animations
marked.jsMarkdown rendering (v15.0.7)
chess.jsChess logic (v1.4.0)

No Frontend Framework

Niuton intentionally uses vanilla JavaScript without frameworks like React or Vue on the server side. This keeps the system lightweight, fast, and dependency-free. Each app is a self-contained PHP/HTML/JS file loaded in an iframe.

Local Client

TechnologyVersionPurpose
Tauri2.0Native desktop wrapper
React18Client UI framework
TypeScript5.xType-safe client code
RustLatestTauri backend, file sync

Infrastructure

ComponentTechnology
VirtualizationProxmox VE (LXC containers)
SSLLet's Encrypt (certbot)
DNSWildcard CNAME via DynDNS
AI ProvidersAnthropic, OpenAI, Google, LM Studio

CSS Component Library (Design System)

Niuton includes niuton-app.css, a built-in CSS component library used by all 23 apps for consistent styling. This ensures a unified, desktop-OS-level look and feel across the entire platform.

css
/* Available components */
.n-app          /* App container */
.n-toolbar      /* Top toolbar */
.n-sidebar      /* Side navigation */
.n-content      /* Main content area */
.n-btn          /* Buttons (glassmorphism base style) */
.n-btn-primary  /* Primary action button */
.n-btn-danger   /* Destructive action button */
.n-btn-success  /* Positive action button */
.n-btn-sm       /* Small button variant */
.n-btn-lg       /* Large button variant */
.n-btn-icon     /* Icon-only button */
.n-card         /* Card containers */
.n-input        /* Form inputs */
.n-list         /* List views */
.n-modal        /* Modal dialogs */
.n-badge        /* Status badges */
.n-tabs         /* Tab navigation */

Unified Button System

All apps use the n-btn class family instead of custom button styles. The base n-btn provides a glassmorphism/ghost appearance with hover and active states:

html
<button class="n-btn">Default</button>
<button class="n-btn n-btn-primary">Primary</button>
<button class="n-btn n-btn-danger">Delete</button>
<button class="n-btn n-btn-success">Confirm</button>
<button class="n-btn n-btn-sm">Small</button>
<button class="n-btn n-btn-icon"><svg>...</svg></button>

SVG Icon System

All UI icons use inline Feather-style SVGs for consistency. No emojis are used in buttons or UI elements:

html
<!-- Standard inline SVG icon format -->
<svg width="16" height="16" viewBox="0 0 24 24"
     fill="none" stroke="currentColor"
     stroke-width="2" stroke-linecap="round"
     stroke-linejoin="round">
  <path d="..."/>
</svg>

Icon sizing is handled automatically by the button class:

Button SizeIcon Size
.n-btn / .n-btn-icon16x16px
.n-btn-sm14x14px
.n-btn-lg18x18px

Responsive Breakpoints

BreakpointTargetBehavior
1024pxTabletReduced spacing
768pxSmall tabletSidebar collapses to overlay
480pxMobileStacked layout, touch targets

The responsive framework includes helper classes like .n-hide-mobile, .n-show-mobile, .n-stack-mobile, and .n-full-mobile.

AI-Powered Cloud Desktop OS