Batch 1 of the locale expansion: Greek, Croatian, Serbian, Lithuanian, Estonian, Latvian, Slovenian, Maltese and Irish across the dashboard catalog, docs mirrors, CLI catalog, README, locale index and the site. 42 → 51 locales. Also fixes the ICU literal escape the translation backend dropped around angle placeholders, four translations that invented or renamed a placeholder, the language bars that linked to mirrors that do not exist, and the migration count drift (171 → 172). ⚠️ base-red inherited: #12732 — the four unit shards and Fast Quality Gates fail identically on unrelated PRs cut from the same base.
24 KiB
Contributing to OmniRoute (Malti)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 mr · 🇲🇾 ms · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Grazzi tal-interess tiegħek li tikkontribwixxi! Din il-gwida tkopri dak kollu li għandek bżonn biex tibda.
Għall-fluss tax-xogħol uffiċjali għal kull bidla, ibda bil- Proċess Ideali għall-Kontribuzzjonijiet. Dan jorbot il-bidliet fil-fornituri, fir-routing, fl-UI/UX, fl-i18n, fis-CLI, fid-database, u fil-bini/implimentazzjoni mal-kuntratti tagħhom, mat-testijiet immirati, mal-kopertura tas-CI, u mal-passi ta' rikonċiljazzjoni.
Konfigurazzjoni tal-Iżvilupp
Prerekwiżiti
- Node.js
>=22.22.3 <23, jew>=24.0.0 <27(rakkomandat: 24 LTS) - npm 10+
Utenti ta' npm v11+ (Node 24+): Wara
npm install, ivverifika li l-moduli nattivi ġew installati:node -e "require('better-sqlite3')". Jekk ifalli b'MODULE_NOT_FOUND, ħaddemnpm approve-scripts better-sqlite3 && npm install. Ara Soluzzjoni tal-Problemi.
- Git
Ikklona u Installa
git clone https://github.com/diegosouzapw/OmniRoute.git
cd OmniRoute
npm install
Varjabbli tal-Ambjent
# Oħloq il-.env tiegħek mill-mudell
cp .env.example .env
# Iġġenera s-sigrieti meħtieġa
echo "JWT_SECRET=$(openssl rand -base64 48)" >> .env
echo "API_KEY_SECRET=$(openssl rand -hex 32)" >> .env
Varjabbli ewlenin għall-iżvilupp:
| Varjabbli | Valur Predefinit tal-Iżvilupp | Deskrizzjoni |
|---|---|---|
PORT |
20128 |
Port tas-server |
NEXT_PUBLIC_BASE_URL |
http://localhost:20128 |
URL bażi għall-frontend |
JWT_SECRET |
(iġġenerah hawn fuq) | Sigriet għall-iffirmar tal-JWT |
INITIAL_PASSWORD |
CHANGEME |
Password tal-ewwel login |
APP_LOG_LEVEL |
info |
Livell ta' dettall tal-logs |
Settings tad-Dashboard
Id-dashboard jipprovdi swiċċijiet tal-UI għal funzjonalitajiet li jistgħu jiġu kkonfigurati wkoll permezz tal-varjabbli tal-ambjent:
| Post tas-Setting | Swiċċ | Deskrizzjoni |
|---|---|---|
| Settings → Avvanzati | Modalità ta' Debugging | Ippermetti logs ta' debugging għat-talbiet (UI) |
| Settings → Ġenerali | Viżibbiltà tal-Istrixxa tal-Ġenb | Uri/aħbi t-taqsimiet tal-istrixxa tal-ġenb |
Dawn is-settings jinħażnu fid-database u jibqgħu fis-seħħ wara li s-sistema terġa' tinbeda, filwaqt li jegħlbu l-valuri predefiniti tal-varjabbli tal-ambjent meta jkunu ssettjati.
Tħaddim Lokalment
# Modalità tal-iżvilupp (aġġornament awtomatiku)
npm run dev
# Bini għall-produzzjoni
npm run build # next build → .build/next/ imbagħad assembleStandalone → dist/
npm run start
# Kompilazzjoni rapida tal-backend/API biss għall-bidliet tal-kontributuri
npm run build:contributor
# Bini tar-rilaxx (bini mill-ġdid nadif + indikatur HEAD — meħtieġ għall-implimentazzjoni)
npm run build:release # rm -rf .build dist && build + jikteb dist/BUILD_SHA
# Konfigurazzjoni komuni tal-port
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
Il-bini għall-kontributuri jwettaq validazzjoni permezz tal-kompilazzjoni biss: ma jiġborx id-distribuzzjoni standalone u lanqas ma jibni r-riżorsi fakultattivi għall-ippakkjar nattiv. Uża l-bini regolari għall-produzzjoni meta jkollok bżonn tivvalida l-pakkett lest għad-distribuzzjoni.
Struttura tal-Output tal-Bini
| Direttorju | Kontenut | Traċċat |
|---|---|---|
src/ |
Kodiċi sors tal-applikazzjoni (TypeScript / TSX) | Iva |
.build/ |
Fajls intermedji — output ta' next build (injorat minn git, distDir = .build/next) |
Le |
dist/ |
Pakkett lest għad-distribuzzjoni — miġbur minn assembleStandalone (injorat minn git) |
Le |
Il-pipeline tal-bini jitwettaq f'pass wieħed:
npm run build
└─ next build → .build/next/standalone (output ta' Next.js)
└─ assembleStandalone() (jikkopja l-fajls standalone + static + public + ir-riżorsi nattivi)
└─ output: dist/ (server.js, .next/static/, public/, node_modules/)
npm run build:release barra minn hekk inaddaf iż-żewġ direttorji l-ewwel u jikteb
dist/BUILD_SHA (= git rev-parse --short HEAD) bħala indikatur tal-integrità tal-implimentazzjoni.
npm run build:contributor juża l-profil tal-bini għall-backend biss. Dan jissostitwixxi temporanjament
il-fajls tal-UI tad-dashboard bi stubs matul il-bini, iżomm il-handlers tar-rotot tal-API, u jirrestawra l-fajls oriġinali
wara l-bini. Uża npm run build għal bidliet li jaffettwaw l-UI tad-dashboard jew għal
validazzjoni sħiħa tar-rilaxx; il-profil għall-kontributuri mhuwiex sostitut għall-bini tar-rilaxx.
Nota dwar l-implimentazzjoni fuq VPS: id-direttorju remot tal-immaġni
/usr/lib/node_modules/omniroute/app/ma nbidilx. Il-proċeduri tal-implimentazzjoni jużaw rsync għall-kontenut ta'dist/fih. Inbidlet biss il-mogħdija tal-output tal-bini fir-repo (app/→dist/).
URLs predefiniti:
- Dashboard:
http://localhost:20128/dashboard - API:
http://localhost:20128/v1
Flux ta' Git
⚠️ QATT ma tcommetti direttament għal
main. Uża daqsbranches ta' features.Base tal-PR: targetta l-
release/vX.Y.Zattiva (mhuxmain). Aradocs/ops/BRANCHING_MODEL.mdgħall- modell release-per-branch + tag-at-ship.
# Branch mill-punt release attiv (eżempju: release/v3.8.49)
git fetch origin
git checkout -b feat/your-feature-name origin/release/v3.8.49
# ... agħmel bidla ...
git commit -m "feat: deskrivi l-bidla tiegħek"
git push -u origin feat/your-feature-name
# Iftah Pull Request b'base = release/v3.8.49
Konvenzjoni ta' Isem tal-Branch
| Prefix | Skop |
|---|---|
feat/ |
Features ġodda |
fix/ |
Fixes ta' bugs |
refactor/ |
Restrutturazzjoni tal-kod |
docs/ |
Bidliet fid-dokumentazzjoni |
test/ |
Aġġornamenti/fixes tat-testijiet |
chore/ |
Tooling, CI, dipendenzi |
Messaggi ta' Commit
Sewi Conventional Commits:
feat: add circuit breaker for provider calls
fix: resolve JWT secret validation edge case
docs: update SECURITY.md with PII protection
test: add observability unit tests
refactor(db): consolidate rate limit tables
Scopes (v3.8): db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz.
Qed Tista' Tqies Testijiet
# Kollha t-testijiet (unit + vitest + ecosystem + e2e)
npm run test:all
# Singlu file ta' test (Node.js native test runner — l-aqwa testijiet jutu l-waħda)
node --import tsx/esm --test tests/unit/your-file.test.ts
# Biex testijiet unit impattati biss mill-bidla tiegħek (istess TIA selector bħala l-CI gate, #8084)
npm run test:scoped # bidliet fil-commit l-aħħar (jew working tree)
npm run test:scoped:staged # bidliet staged biss — jaqbad sew b'pre-commit run
npm run test:scoped:full # rebildja l-import-graph map l-ewwel (wara li tżid/temmuv file)
# Exit 1 + "run the full suite" jibni file hub (tsconfig, package.json, …) jew
# sorgenti unmapped bedlet — is-selektor jiffaġġa safe, ma jmissx silently.
# Vitest (MCP server, autoCombo, cache)
npm run test:vitest
# Testijiet E2E (meħtieġ Playwright)
npm run test:e2e
# Protocol clients E2E (MCP transports, A2A)
npm run test:protocols:e2e
# Testijiet ta' kompatibilità tal-ecosystem
npm run test:ecosystem
# Coverage gate: 60% statements/lines/functions/branches
npm run test:coverage
npm run coverage:report
# Lint + format check
npm run lint
npm run check
# Gated real-upstream combo smoke (meħtieġ VPS access + real provider credits)
# Jipprovokaw PROVIDERS REALE — jiswa ftit. QATT ma jirri fil-CI. Jiskipa clean mingħajr il-gate.
# Meħtieġ: ssh root@192.168.0.15 access (sources a read-only DB snapshot mill-VPS).
RUN_COMBO_LIVE=1 npm run test:combo:live
# Phase-3 VPS live smoke — plain Node ESM scripts, jipprovokaw live .15 server direttament.
# Meħtieġ: ssh root@192.168.0.15 access (combos created/torn down via SSH sqlite).
# Jipprovokaw PROVIDERS REALE (kost żgħira). Jikkreaw/jiddilettu biss __live_test__* combos. QATT ma jirri fil-CI.
# REQUIRE_API_KEY=false fuq .15 għax ebda API key meħtieġa, imma jirispetta COMBO_LIVE_BASE_URL / COMBO_LIVE_API_KEY jekk msetjup.
npm run test:combo:live:vps # 7 HTTP scenarios (priority/round-robin/weighted/cost/fusion/auto + health)
npm run test:combo:live:vps:failover # żieda real cross-provider failover scenario (8 total)
Noti dwar Coverage:
npm run test:coveragejikkalcola source coverage għall-main unit test suite, jieħu barratests/**, u jinkludiopen-sse/**- Pull requests għandhom jibqgħu l-coverage gate b'60%+' statements/lines/functions/branches
- Jekk PR tibdel production code f'
src/',open-sse/',electron/', jewbin/', għandha tżid jew tagħmel update għat-testijiet awtomatiċi fil-istess PR npm run coverage:reporttipprinta d-dettaljat file-by-file report mill-aħħar coverage runnpm run test:coverage:legacytħalli l-metric l-qadima għal komparazzjoni storika- Ara
docs/ops/COVERAGE_PLAN.mdgħall-roadmap ta' phased coverage improvement
Rekwiziti tal-Pull Request
Qabel ma tiftaħ PR, uża l- Contribution Golden Path biex tirri l-focused loop għal x'bedlet. L-unit suite sħiħa (4 CI shards), Vitest, il-60%+ coverage gate, u il-production build huma responsabbiltà tal-CI — jirruhom lokalment ma jżidu xejn signal li l-PR checks ma jkollokx, u fuq makkini żgħar jistgħu jissaturaw l-host (#8084):
- Irri l-test files li jkopru l-bidla tiegħek:
node --import tsx/esm --test tests/unit/<file>.test.ts - Irri
npm run lint - Inkludi jew agġorna testijiet awtomatiċi fil-istess PR meta production code jibbedel
- Inkludi l-test files bedlet jew mżidda fid-deskrizzjoni tal-PR meta production code bedlet
- Chekka r-riżultat ta' SonarQube fuq il-PR meta l-proġett secrets huma konfigurati fil-CI
Status attwali tat-testijiet: 122 unit test files li jkopru:
- Provider translators u format conversion
- Rate limiting, circuit breaker, u resilience
- Semantic cache, idempotency, progress tracking
- Database operations u schema (21 DB modules)
- OAuth flows u authentication
- API endpoint validation (Zod v4)
- MCP server tools u scope enforcement
- Memory u Skills systems
Stil tal-Kodiċi
- ESLint — Ħaddem
npm run lintqabel ma tagħmel kummitment - Prettier — Formatjar awtomatiku permezz ta'
lint-stagedfil-kummitment (spazji doppji, punti virgoli, virgoletti doppji, wisa' ta' 100 karattru, virgoli wara l-kkejk ta' l-es5) - TypeScript — Kull kodiċi ta'
src/juża.ts/.tsx;open-sse/juża.ts/.js; iddokumenta permezz ta' TSDoc (@param,@returns,@throws) - Ebda
eval()— L-ESLint jinfurzano-eval,no-implied-eval,no-new-func - Validazzjoni Zod — Uża schemas ta' Zod v4 għal validazzjoni ta' dħul API kollha
- Isem: Fajls = camelCase/kebab-case, komponenti = PascalCase, kostanti = UPPER_SNAKE
Tħaddim ta' żbalji / blokki catch vojta
Qatt tħalli catch mingħajr spjegazzjoni. Klassifikah f'wieħed miż-żewġ kategoriji (joperazzjonalizza l-istrett regola "qatt xwwak b'ssokkżiżzjoni silenzjuża f'xorriet SSE"):
-
Intenzjonali (it-tindif/telemetria ta' l-aħjar effort tagħna stess) — falliment hawnhekk huwa mistenni u ħażin; żid kumment ta' spjegazzjoni ta' linja waħda, bla logging (logging fuq kull talba huwa l-istorbju li dan il-konvenzjonal jippoġġa):
} catch {} // il-qbid ta' kontrollur diġà magħluq wara l-klijent jingħaqad huwa mistenni -
Għandu jiġi logjat (kodiċi estern/mgħoti mill-issejħa, jew il-xwwak ibiddel il-kontroll) — iżżomm il-catch (qatt tħallih jikser is-stream) iżda leġġi
console.debug/warnkontestwali sabiex il-falliment jista' jiġi skopert.} catch (e) { console.debug("[STREAM] onFailure callback error:", e); }
Ara open-sse/utils/stream.ts u open-sse/utils/streamHandler.ts għal eżempji applikati.
Struttura tal-Proġett
src/ # TypeScript (.ts / .tsx)
├── app/ # Next.js 16 App Router
│ ├── (dashboard)/ # Paġni tal-dashboard (23 sezzjonijiet)
│ ├── api/', # Rotot API (51 direttorju)
│ └── login/ # Paġni tal-awtentikazzjoni (.tsx)
├── domain/ # Magna tal-politika (policyEngine, comboResolver, costRules, eċċ.)
├── lib/ # Logika tan-negozju ta' l-qalba (.ts)
│ ├── a2a/ # Server tal-protokoll A2A v0.3
│ ├── acp/ # Reġistru tal-Komunikazzjoni tal-Aġent
│ ├── compliance/ # Magna tal-politika tal-konformità
│ ├── db/ # Moduli tal-q域 SQLite + 130 migrazzjonijiet
│ ├── memory/ # Memorja twila tal-konversazzjoni
│ ├── oauth/ # Fornituri, servizzi, u għodod tal-OAuth
│ ├── skills/ # Frizat tar-ħiliet estiżibbli
│ ├── usage/ # Tħassir tal-użu u kalkolu tal-ispiża
│ └── localDb.ts # Saff ta' re-export biss — qatt iżid logika hawn
├── middleware/ # Middleware tal-bżonnijiet (promptInjectionGuard)
├── mitm/ # Proxy MITM (ċertifikat, DNS, rotta tal-miri)
├── shared/
│ ├── components/ # Komponenti React (.tsx)
│ ├── constants/ # Definizzjonijiet tal-fornitur (329), ambiti MCP, 19 strateġiji tal-rotta
│ ├── utils/ # Serparator tal-midja, sanitizer, għodod tal-awtentikazzjoni
│ └── validation/ # Schemas tal-Zod v4
└── sse/ # Provvista tal-rotta SSE
open-sse/ # Spazju ta' @omniroute/open-sse
├── executors/ # 89 modulu ta' implimentazzjoni tal-eżekutur
├── handlers/ # 11 trattaturi tal-bżonnijiet (chat, risposti, embendings, immaġini, eċċ.)
├── mcp-server/ # Server MCP (110 għodod uniċi, 3 trasporti, 33 ambiti)
├── services/ # 178 servizz ta' l-ewwel livell (combo, autoCombo, rateLimitManager, eċċ.)
├── translator/ # Tradutturi tal-format (OpenAI ↔ Claude ↔ Gemini ↔ Risposti ↔ Ollama)
├── transformer/ # Traduttur tar-Risposti API
└── utils/ # 22 modulu tal-għodod (stream, TLS, proxy, logging)
electron/ # App desktop tal-Electron (pjanforma multipla)
tests/
├── unit/ # Test runner Node.js (1,574 fajls tal-test)
├── integration/ # Testijiet tal-integrazzjoni
├── e2e/ # Testijiet Playwright
├── security/ # Testijiet ta' sigurtà
├── translator/ # Testijiet speċifiċi għat-traduttur
└── load/ # Testijiet tal-piż
docs/
├── adr/ # Rekords tad-deċiżjonijiet tal-arkitettura
├── architecture/ # Arkitettura tal-isistema u reżiljenza
├── comparison/ # OmniRoute vs alternattivi
├── compression/ # Gwidi u regoli tal-kompressjoni
├── dev/ # Gwidi tal-iżvilupp
├── diagrams/ # Dijagrammi tal-arkitettura
├── frameworks/ # MCP, A2A, OpenCode, Memorja, Ħiliet
├── guides/ # Gwida tal-utent, Docker, tħejjija, tifwir
├── i18n/ # Traduzzjonijiet internazzjonali tal-README
├── marketing/ # Materiali tal-kummerċjalizzazzjoni
├── ops/ # Tħaddim, proxy, koperanza, rilizzi
├── providers/ # Dokumenti speċifiċi tal-fornitur
├── reference/ # Referenza API, varjambli tal-ambjent, għodod CLI, oqsas ħelsien
├── releases/ # Noti tar-rilizzi
├── routing/ # Magna tal-combo awtomatika, riproduzzjoni tar-raguni
├── screenshots/ # Skrinshots tal-dashboard
├── security/ # Barriers, konformità, stealth, tokens
└── specs/ # Speċifikazzjonijiet tal-disinn
Ġdid tal-Foritur
Pass 1: Irreġistra costanti tal-Foritur
Żid f'src/shared/constants/providers.ts — validazzjoni Zod waqt it-tniġħis tal-modulu.
Pass 2: Żid eżekutur (jekk hemm bżonn loġika custom)
Oħloq eżekutur f'open-sse/executors/your-provider.ts li jestendi l-eżekutur bażi.
Pass 3: Żid traduttur (jekk mhux il-format ta' OpenAI)
Oħloq tradutturi għat-talb/tweġiba f'open-sse/translator/.
Pass 4: Żid kfigurazzjoni OAuth (jekk bbażat fuq OAuth)
Żid kredenzjali OAuth f'src/lib/oauth/constants/oauth.ts u s-servizz f'src/lib/oauth/services/.
Jekk il-foritur upstream jidistribwixxi OAuth pubbliku client_id/secret jew Firebase Web API key fil-bundle pubbliku tiegħu / CLI tal-brawżer, tagħmilx backup bħala literal string. Uża resolvePublicCred() minn open-sse/utils/publicCreds.ts u żid entry masquerata f'EMBEDDED_DEFAULTS. Il-workflow obbligatorju kollu huwa dokumentat f'docs/security/PUBLIC_CREDS.md.
Fis-servizzi l-oħra, il-messaġġi ta' żball li jilħqu l-klijent iridu jgħaddu minn buildErrorBody() / sanitizeErrorMessage() minn open-sse/utils/error.ts — qatt tpoġġi err.stack jew err.message rwiexi f'korp tal-Response. Ara docs/security/ERROR_SANITIZATION.md.
Pass 5: Irreġistra mudelli
Żid definizzjonijiet tal-mudell f'open-sse/config/providerRegistry.ts.
Pass 6: Żid testijiet
Ikteb testijiet unitarji f'tests/unit/ li jkopru mill-inqas:
- Reġistrazzjoni tal-foritur
- Traduzzjoni tal-biex/tweġiba
- Trattament ta' żbalji
Kaxxa tal-Għarfien tal-Pull Request
- Testijiet għaddew (
npm test) - Linting għaddew (
npm run lint) - Build rnexxielu (
npm run build) - It-Tipijiet TypeScript ġew miżjuda għal funzjonijiet u interfaces ġodda pubbliċi
- M'hemm xejn skrin fiżjati ta' sigrieti jew valuri fallback
- Kredenzjali upstream pubbliċi ġew imbodding permezz ta'
resolvePublicCred()(aradocs/security/PUBLIC_CREDS.md), qatt bħala literals - Ir-risponsi ta' żball jgħaddu minn
buildErrorBody()/sanitizeErrorMessage()— l-ebda trace rwiexi fil-korp tal-Response (aradocs/security/ERROR_SANITIZATION.md) - Il-kmandi shell (
exec/spawn) jgħaddu valuri runtime permezz ta'env, mhux permezz ta' interpolarzjoni tal-stringa - Kull input ġie validat permezz ta' skemi Zod
- Fragament tal-CHANGELOG ġie miżjud taħt
changelog.d/{features|fixes|maintenance}/<PR>-<slug>.mdgħal bidliet li jaffettwaw l-utenti (arachangelog.d/README.md) — tagħmilx direttament editjarCHANGELOG.md; il-fragments jiġbru fis-sak ħin tat-tħarir u qatt ma jikkuntrastaw bejn il-PRs - Dukumentazzjoni aġġornata (jekk applicable)
- L-ebda ġdida CodeQL / Secret-Scanning alerts miftuħa, jew kollha riżolvuti b'ġustifikazzjoni teknika li tirreferi għad-dokument rilevanti ta'
docs/security/ - Rotot li jħaddmu proċessi iben (
/api/mcp/,/api/cli-tools/runtime/) huma klassifikati bħalaisLocalOnlyPath()f'src/server/authz/routeGuard.ts— ara Rekwiżiti Ħorox #15 - M'hemm l-ebda
Co-Authored-Bytrailers fil-messaġġi tal-kommit — il-kommits iridu jidhru biss taħt l-identità Git tal-sid tal-repositorju (Rekwiżit Ħarxa #16)
Rilaxjar
Ir-rilaxxijiet huma mġedda permezz tal-workflow /generate-release. Meta tintefa' Release ġdida fuq GitHub, il-pakkett jitwaħħal awtomatikament fil-ħanut npm permezz ta' GitHub Actions.
Għad-displokki VPS, uża npm run build:release (mhux npm run build) — dan jagħmel tiswif ġdid nadif, jiġbor il-bundle fid-direttorju dist/, u jikteb is-sentinel dist/BUILD_SHA. Imbagħad uża l-ħiliet /deploy-vps-*-cc li jużaw rsync biex iġibu dist/ fil-direttorju app/ ir-rimot.
Kif Tista' Tinkiseb Għajnuna
- Arkitettura: Ara
docs/architecture/ARCHITECTURE.md - Referenza API: Ara
docs/reference/API_REFERENCE.md - Dokumentazzjoni tas-Sigurtà:
docs/security/CLI_TOKEN.md,docs/security/ROUTE_GUARD_TIERS.md,docs/security/ERROR_SANITIZATION.md,docs/security/PUBLIC_CREDS.md - Dokumentazzjoni tal-Operazzjonijiet:
docs/ops/SQLITE_RUNTIME.md - Għaddas ta' Problemi: github.com/diegosouzapw/OmniRoute/issues
- ADRs: Ara
docs/adr/għar-rekords tad-deċiżjonijiet tal-arkitettura