Железный Егорин — форк Орбиты: тёплый стиль (amber), логин с odyssey WebGL-молнией справа, энергомониторинг+панель

Ребренд Мониторинг Орбита -> Железный Егорин; accent green->amber #F59E0B; LoginScreen правая половина = Lightning (WebGL, hue 35 тёплый) под стеклянной формой; левая панель — тёплый градиент.
Доступ агентам: репо публичный, push german-токеном.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
German
2026-07-07 23:57:16 +03:00
co-authored by Claude Opus 4.8
commit b1c52ab748
114 changed files with 14340 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
// Конфигурация шлюза из окружения. Адаптер активен только если задан его источник;
// иначе раздел работает на демо-данных (fallback). Так шлюз поднимается сразу,
// а реальные источники «зажигаются» по мере готовности их стеков.
const env = process.env;
export const config = {
port: Number(env.PORT || 4100),
jwtSecret: env.JWT_SECRET || 'dev-secret-change-me',
dataDir: env.DATA_DIR || '/data', // персист арендаторов/привязок устройств
traccar: env.TRACCAR_URL
? { url: env.TRACCAR_URL, token: env.TRACCAR_TOKEN || '', user: env.TRACCAR_USER || '', pass: env.TRACCAR_PASS || '' }
: null,
mqtt: env.MQTT_URL
? { url: env.MQTT_URL, username: env.MQTT_USER || undefined, password: env.MQTT_PASS || undefined, prefix: env.MQTT_PREFIX || '/devices' }
: null,
influx: env.INFLUX_URL
? { url: env.INFLUX_URL, token: env.INFLUX_TOKEN || '', org: env.INFLUX_ORG || '', bucket: env.INFLUX_BUCKET || 'energy' }
: null,
// Яндекс ID (OAuth). Активен при YANDEX_CLIENT_ID. Регистрация: oauth.yandex.ru.
yandex: env.YANDEX_CLIENT_ID
? {
clientId: env.YANDEX_CLIENT_ID,
secret: env.YANDEX_CLIENT_SECRET || '',
redirect: env.YANDEX_REDIRECT || 'https://monitor.servaki.online/api/auth/yandex/callback',
admins: (env.YANDEX_ADMINS || '').split(',').map((s) => s.trim().toLowerCase()).filter(Boolean),
}
: null,
};
export const sources = {
traccar: !!config.traccar,
wirenboard: !!config.mqtt,
influx: !!config.influx,
};