- vite.config.di2.ts + client-di2/tsconfig.json: алиас @skin → client/src/themes (tokens, skins, generated-skins.css — единый источник токенов) - client-di2/src/themes/Di2ThemeProvider.tsx: порт логики ThemeProvider основного клиента (localStorage['skin'] → скин организации → 'iistwin'; runtime CSS кастомных скинов через generateSkinCss; data-skin/data-theme/class light|dark на <html>; контекст с toggleTheme). Ключи 'skin'/'theme' общие с iistwin — выбор синхронизируется между приложениями - main.tsx: обёртка <Di2ThemeProvider> вокруг App - tailwind.config.ts DI2: цвета hsl(var(--x) / <alpha-value>) → var(--x), радиусы → var(--radius) с каскадом calc, добавлены warning/success/info - client-di2/src/index.css: собственные HSL-тройки заменены fallback-блоками основного клиента (до гидратации), первой строкой @import общего generated-skins.css; DI2-only переменные (--card-border, --popover-border, *-border, --button-outline, --badge-outline) переопределены через color-mix от семантических токенов; удалены --opaque-button-border-intensity и hsl(from ...) relative-color вычисления; жёсткие --font-sans: Open Sans убраны (шрифты эмитит generateSkinCss из токенов скина) - client-di2/index.html: lang=ru, viewport без maximum-scale + interactive-widget=resizes-content, мега-link Google Fonts (23 семейства) заменён на Inter + DM Mono как в основном клиенте - Alpha-модификаторы семантических цветов (166 мест: bg-muted/50, border-primary/30 и т.п.) заменены на arbitrary values color-mix(in oklab, var(--x) NN%, transparent) — Tailwind v3 молча не генерирует /NN для var()-цветов; палитровые цвета (green-500/10 и т.п.) не тронуты
iistwin
A multitenant corporate iistwin platform with a React frontend and an Express backend. It provides organizations with independent management of users, projects, and tasks on shared infrastructure, featuring data isolation, real-time communication, and customizable workflow automation.
Quickstart
cp .env.example .env # fill in DATABASE_URL, JWT_SECRET, SESSION_SECRET
npm install && npm run db:push && npm run dev
The app will be available at http://localhost:5000.
Key Features
- Custom forms with configurable statuses, transitions, and conditional approvals
- Hierarchical subtasks with unlimited nesting
- Real-time chat with
@mentionsand Server-Sent Events - Inline-editable data tables with Excel import/export
- JavaScript-powered custom tabs and layout components
- Event-driven notification system (in-app, email, push)
- Multi-tenant billing management
- Progressive Web App (PWA) support
Getting Started
Prerequisites
- Node.js 20+
- PostgreSQL 15+ (or use the built-in Docker Postgres profile — see below)
Local development (without Docker)
-
Copy the environment template and fill in the required values:
cp .env.example .env -
Install dependencies:
npm install -
Push the database schema:
npm run db:push -
Start the development server:
npm run devThe app will be available at
http://localhost:5000.
Running with Docker
For Docker-based setup (including a built-in managed Postgres option), see DOCKER.md.
It covers:
- Mode 1 — connecting to an external database (e.g. Neon Cloud)
- Mode 2 — letting Docker spin up a local Postgres 16 container alongside the app
Environment Variables
See .env.example for all required environment variables. At minimum you will need:
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
JWT_SECRET |
Secret used to sign access tokens |
SESSION_SECRET |
Secret used for session cookies |
VAPID_PUBLIC_KEY |
Web Push VAPID public key |
VAPID_PRIVATE_KEY |
Web Push VAPID private key |
Super Admin
A system-level super admin panel is available at /superadmin. The first super admin account can be created via POST /api/superadmin/seed (optionally protected by the SUPERADMIN_SEED_TOKEN environment variable).