diff --git a/README.md b/README.md index bb546d2639..294679d1ba 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ # 🚀 OmniRoute — The Free AI Gateway +🌐 **[English](#-omniroute--the-free-ai-gateway)** | **[Português (BR)](#-omniroute--gateway-de-ia-gratuito)** + ### Never stop coding. Smart routing to **FREE & low-cost AI models** with automatic fallback. _Your universal API proxy — one endpoint, 36+ providers, zero downtime._ @@ -1145,6 +1147,85 @@ MIT License - see [LICENSE](LICENSE) for details. --- +--- + +## 🇧🇷 OmniRoute — Gateway de IA Gratuito + + + +### Nunca pare de codar. Roteamento inteligente para **modelos de IA GRATUITOS e de baixo custo** com fallback automático. + +_Seu proxy universal de API — um endpoint, 36+ provedores, zero downtime._ + +### 🌐 Internacionalização (i18n) + +O dashboard do OmniRoute suporta **múltiplos idiomas**. Atualmente disponível em: + +| Idioma | Código | Status | +| --------------------- | ------- | ----------- | +| 🇺🇸 English | `en` | ✅ Completo | +| 🇧🇷 Português (Brasil) | `pt-BR` | ✅ Completo | + +**Para trocar o idioma:** Clique no seletor de idioma (🇺🇸 EN) no header do dashboard → selecione o idioma desejado. + +**Para adicionar um novo idioma:** + +1. Crie `src/i18n/messages/{codigo}.json` baseado em `en.json` +2. Adicione o código em `src/i18n/config.ts` → `LOCALES` e `LANGUAGES` +3. Reinicie o servidor + +### ⚡ Início Rápido + +```bash +# Instalar via npm +npx omniroute@latest + +# Ou rodar do código-fonte +cp .env.example .env +npm install +PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev +``` + +### 🐳 Docker + +```bash +docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest +``` + +### 🔑 Funcionalidades Principais + +- **36+ provedores de IA** — Claude, GPT, Gemini, Llama, Qwen, DeepSeek, e mais +- **Roteamento inteligente** — Fallback automático entre provedores +- **Tradução de formato** — OpenAI ↔ Claude ↔ Gemini automaticamente +- **Multi-conta** — Múltiplas contas por provedor com seleção inteligente +- **Cache semântico** — Reduz custos e latência +- **OAuth automático** — Tokens renovam automaticamente +- **Combos personalizados** — 6 estratégias de roteamento +- **Dashboard completo** — Monitoramento, logs, análises, configurações +- **CLI Tools** — Configure Claude Code, Codex, Cursor, Cline com um clique +- **100% TypeScript** — Código limpo e tipado + +### 📖 Documentação + +| Documento | Descrição | +| ----------------------------------------------- | -------------------------------------- | +| [Guia do Usuário](docs/USER_GUIDE.md) | Provedores, combos, CLI, deploy | +| [Referência da API](docs/API_REFERENCE.md) | Todos os endpoints com exemplos | +| [Solução de Problemas](docs/TROUBLESHOOTING.md) | Problemas comuns e soluções | +| [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e internos do sistema | +| [Contribuição](CONTRIBUTING.md) | Setup de desenvolvimento e guidelines | +| [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | Guia completo: VM + nginx + Cloudflare | + +### 📧 Suporte + +> 💬 **Entre para a comunidade!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Tire dúvidas, compartilhe dicas e fique atualizado. + +- **Website**: [omniroute.online](https://omniroute.online) +- **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute) +- **Issues**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues) + +--- +
Built with ❤️ for developers who code 24/7
diff --git a/src/app/(dashboard)/dashboard/HomePageClient.tsx b/src/app/(dashboard)/dashboard/HomePageClient.tsx index 4cef9b30a9..4a1425aa01 100644 --- a/src/app/(dashboard)/dashboard/HomePageClient.tsx +++ b/src/app/(dashboard)/dashboard/HomePageClient.tsx @@ -1,5 +1,7 @@ "use client"; +import { useTranslations } from "next-intl"; + import { useState, useEffect, useMemo, useCallback } from "react"; import PropTypes from "prop-types"; import Image from "next/image"; @@ -10,6 +12,8 @@ import { AI_PROVIDERS, FREE_PROVIDERS, OAUTH_PROVIDERS } from "@/shared/constant import { useNotificationStore } from "@/store/notificationStore"; export default function HomePageClient({ machineId }) { + const t = useTranslations("home"); + const tc = useTranslations("common"); const [providerConnections, setProviderConnections] = useState([]); const [models, setModels] = useState([]); const [loading, setLoading] = useState(true); @@ -103,14 +107,14 @@ export default function HomePageClient({ machineId }) { }, [selectedProvider, models]); const quickStartLinks = [ - { label: "Documentation", href: "/docs", icon: "menu_book" }, - { label: "Providers", href: "/dashboard/providers", icon: "dns" }, + { label: t("documentation"), href: "/docs", icon: "menu_book" }, + { label: tc("provider") + "s", href: "/dashboard/providers", icon: "dns" }, { label: "Combos", href: "/dashboard/combos", icon: "layers" }, { label: "Analytics", href: "/dashboard/analytics", icon: "analytics" }, - { label: "Health Monitor", href: "/dashboard/health", icon: "health_and_safety" }, + { label: t("healthMonitor"), href: "/dashboard/health", icon: "health_and_safety" }, { label: "CLI Tools", href: "/dashboard/cli-tools", icon: "terminal" }, { - label: "Report issue", + label: t("reportIssue"), href: "https://github.com/diegosouzapw/OmniRoute/issues", external: true, icon: "bug_report", @@ -135,17 +139,15 @@ export default function HomePageClient({ machineId }) {
-

Quick Start

-

- Get up and running in 4 steps. Connect providers, route models, monitor everything. -

+

{t("quickStart")}

+

{t("quickStartDesc")}

menu_book - Full Docs + {t("fullDocs")}
@@ -155,7 +157,7 @@ export default function HomePageClient({ machineId }) { key
- 1. Create API key + {t("step1Title")}

Go to{" "} @@ -170,7 +172,7 @@ export default function HomePageClient({ machineId }) { dns

- 2. Connect providers + {t("step2Title")}

Add accounts in{" "} @@ -185,7 +187,7 @@ export default function HomePageClient({ machineId }) { link

- 3. Point your client + {t("step3Title")}

Set base URL to{" "} @@ -200,7 +202,7 @@ export default function HomePageClient({ machineId }) { analytics

- 4. Monitor & optimize + {t("step4Title")}

Track tokens, cost and errors in{" "} @@ -239,7 +241,7 @@ export default function HomePageClient({ machineId }) {

-

Providers Overview

+

{t("providersOverview")}

{providerStats.filter((item) => item.total > 0).length} configured of{" "} {providerStats.length} available providers @@ -348,7 +350,7 @@ function ProviderOverviewCard({ item, metrics, onClick }) {

{item.total === 0 - ? "Not configured" + ? tc("notConfigured") : `${item.connected} active · ${item.errors} error`}

{metrics && metrics.totalRequests > 0 && ( @@ -433,7 +435,7 @@ function ProviderModelsModal({ provider, models, onClose }) { search_off -

No models available for this provider.

+

{t("noModelsAvailable")}

Configure a connection first in{" "}