Files
JiriUhlir 7b045a9f20 Nahrazeni sablony kompletnim webem a klientskym portalem
Web a portal Automia v jednom containeru. Express obsluhuje API
i zbuildovanou React aplikaci z dist/public.

Obsah:
- verejny web: homepage, sluzby, o nas, kontakt, 404
- prihlaseni pres JWT, demo ucty
- portal: prehled s grafem, tickety, incidenty, automatizace, konektory
- builder automatizaci: strom akci, vetveni podminkou
- katalog 25 konektoru v 8 kategoriich
- webhook s registrovanou adresou, token generuje server
- zivy dashboard pres SSE vcetne simulace provozu
- Swagger UI na /docs a OpenAPI na /openapi.json

Soulad s AGENTS.md:
- ROOT_PATH z prostredi, prefix proxy nikde nehardcodovan
- mount na koren i na prefix, funguje s handle_path i bez nej
- base tag a window.__BASE_PATH__ vkladane do index.html za behu
- OpenAPI servers obsahuje prefix, Try it out vola spravnou adresu
- povinne /health a /docs, port 3000, naslouchani na 0.0.0.0
- secrets jen z environment variables, nikdy v logu

Dokumentace ve slozce documentation/.
2026-07-31 17:00:37 +02:00

39 lines
1.2 KiB
TypeScript

import tailwindcss from '@tailwindcss/vite';
import react from '@vitejs/plugin-react';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { defineConfig } from 'vite';
const here = path.dirname(fileURLToPath(import.meta.url));
export default defineConfig({
root: path.resolve(here, 'web'),
/**
* Relativni base. Aplikace bezi za reverse proxy na /apps/<app-id>, ktery
* neni znamy pri buildu. Server proto do index.html vklada <base href>
* podle ROOT_PATH a relativni odkazy se podle nej slozi spravne.
*/
base: './',
plugins: [react(), tailwindcss()],
resolve: {
// Musi zustat v souladu s "paths" ve web/tsconfig.json
alias: {
'@': path.resolve(here, 'web/src'),
},
},
server: {
port: 5173,
proxy: {
// Lokalni vyvoj: web na 5173 vola API na 3000, bez reseni CORS.
'/api': { target: 'http://localhost:3000', changeOrigin: true },
'/webhook': { target: 'http://localhost:3000', changeOrigin: true },
},
},
build: {
// Server tuhle slozku obsluhuje jako statiku, viz src/index.ts.
outDir: path.resolve(here, 'dist/public'),
emptyOutDir: true,
sourcemap: true,
},
});