From 4fd6f01303c0d0222047c92b737a6805368bbea1 Mon Sep 17 00:00:00 2001 From: Consultoria AS Date: Thu, 22 Jan 2026 07:32:21 +0000 Subject: [PATCH] feat: add company logo and configure Cloudflare tunnel support - Add company logo to login page and all sidebar variants - Configure Next.js rewrites to proxy /api/* to backend - Enable external access via Cloudflare Zero Trust tunnel Co-Authored-By: Claude Opus 4.5 --- apps/web/app/(auth)/login/page.tsx | 11 +++++++++++ apps/web/components/layouts/sidebar-compact.tsx | 11 ++++++++--- apps/web/components/layouts/sidebar-floating.tsx | 11 ++++++++--- apps/web/components/layouts/sidebar.tsx | 11 ++++++++--- apps/web/next.config.js | 12 ++++++++++++ apps/web/public/logo.jpg | Bin 0 -> 3575 bytes 6 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 apps/web/public/logo.jpg diff --git a/apps/web/app/(auth)/login/page.tsx b/apps/web/app/(auth)/login/page.tsx index 2ef4133..dc2eebb 100644 --- a/apps/web/app/(auth)/login/page.tsx +++ b/apps/web/app/(auth)/login/page.tsx @@ -3,6 +3,7 @@ import { useState } from 'react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; +import Image from 'next/image'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; @@ -40,6 +41,16 @@ export default function LoginPage() { return ( +
+ Horux360 +
Iniciar Sesión Ingresa tus credenciales para acceder a tu cuenta diff --git a/apps/web/components/layouts/sidebar-compact.tsx b/apps/web/components/layouts/sidebar-compact.tsx index 791db79..c997de9 100644 --- a/apps/web/components/layouts/sidebar-compact.tsx +++ b/apps/web/components/layouts/sidebar-compact.tsx @@ -1,6 +1,7 @@ 'use client'; import Link from 'next/link'; +import Image from 'next/image'; import { usePathname } from 'next/navigation'; import { cn } from '@/lib/utils'; import { @@ -69,9 +70,13 @@ export function SidebarCompact() { {/* Logo */}
-
- H -
+ Horux360 {/* Logo */}
-
- H -
+ Horux360
Horux360 Análisis Fiscal diff --git a/apps/web/components/layouts/sidebar.tsx b/apps/web/components/layouts/sidebar.tsx index 3b5a3c3..d38a1a8 100644 --- a/apps/web/components/layouts/sidebar.tsx +++ b/apps/web/components/layouts/sidebar.tsx @@ -1,6 +1,7 @@ 'use client'; import Link from 'next/link'; +import Image from 'next/image'; import { usePathname } from 'next/navigation'; import { cn } from '@/lib/utils'; import { @@ -60,9 +61,13 @@ export function Sidebar() { {/* Logo */}
-
- H -
+ Horux360 Horux360
diff --git a/apps/web/next.config.js b/apps/web/next.config.js index f81ea51..c7c2bed 100644 --- a/apps/web/next.config.js +++ b/apps/web/next.config.js @@ -1,6 +1,18 @@ /** @type {import('next').NextConfig} */ const nextConfig = { transpilePackages: ['@horux/shared'], + async rewrites() { + return [ + { + source: '/api/:path*', + destination: 'http://localhost:4000/api/:path*', + }, + { + source: '/health', + destination: 'http://localhost:4000/health', + }, + ]; + }, }; module.exports = nextConfig; diff --git a/apps/web/public/logo.jpg b/apps/web/public/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13a548682efa8a1469f167a4473b4f4f60243ede GIT binary patch literal 3575 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 literal 0 HcmV?d00001