import { RiAndroidLine, RiGithubFill, RiShieldCheckLine, RiSmartphoneLine, } from "@remixicon/react"; import { headers } from "next/headers"; import Image from "next/image"; import Link from "next/link"; import { AnimateOnScroll } from "@/features/landing/components/animate-on-scroll"; import { MobileNav } from "@/features/landing/components/mobile-nav"; import { ScreenshotTabs } from "@/features/landing/components/screenshot-tabs"; import { SetupTabs } from "@/features/landing/components/setup-tabs"; import { companionBanks, companionSteps, extraFeatures, getMetricsItems, mainFeatures, navLinks, pwaHighlights, stackItems, whoIsItForItems, } from "@/features/landing/constants"; import { landingImages } from "@/features/landing/images"; import { fetchGitHubStats } from "@/features/landing/queries"; import { AnimatedThemeToggler } from "@/shared/components/animated-theme-toggler"; import { Logo } from "@/shared/components/logo"; import { NavbarShell } from "@/shared/components/navigation/navbar/navbar-shell"; import { Badge } from "@/shared/components/ui/badge"; import { Button } from "@/shared/components/ui/button"; import { Card, CardContent } from "@/shared/components/ui/card"; import { DotPattern } from "@/shared/components/ui/dot-pattern"; import { getOptionalUserSession } from "@/shared/lib/auth/server"; export default async function Page() { const [session, headersList, githubStats] = await Promise.all([ getOptionalUserSession(), headers(), fetchGitHubStats(), ]); const hostname = headersList.get("host")?.replace(/:\d+$/, ""); const publicDomain = process.env.PUBLIC_DOMAIN?.replace( /^https?:\/\//, "", ).replace(/:\d+$/, ""); const isPublicDomain = !!(publicDomain && hostname === publicDomain); const metricsItems = getMetricsItems(githubStats.stars, githubStats.forks); return (
{/* Navigation */} {/* Center Navigation Links */} {/* Hero Section */}
Projeto Open Source

Suas finanças, do seu jeito

Gestão financeira self-hosted e open source. Lance manualmente ou capture notificações bancárias direto pelo{" "} Companion para Android . Seus dados, seu servidor.

openmonetis Dashboard Preview openmonetis Dashboard Preview
{/* Metrics Bar */}
{metricsItems.map(({ icon: Icon, value, label, colorVar }) => (
{value} {label}
))}
{/* Screenshots Gallery Section */}
Conheça as telas

Veja o que você pode fazer

Explore as principais telas do OpenMonetis

{/* Features Section */}
O que tem aqui

Funcionalidades que importam

Ferramentas simples para organizar suas contas, cartões, gastos e receitas

{mainFeatures.map((feature) => (

{feature.title}

{feature.description}

))}

Também inclui

{extraFeatures.map((feature) => (

{feature.title}

{feature.description}

))}
{/* Mobile Section */}
{/* Header */}
Mobile

Use o OpenMonetis no celular sem perder o fluxo

Instale como PWA para acesso rápido no dia a dia. No Android, use o Companion para capturar notificações bancárias automaticamente.

{/* PWA — imagem esquerda, texto direita */}
Preview PWA Preview PWA
PWA instalável

Leve o OpenMonetis para a tela inicial

Adicione à tela inicial e abra direto, como um app. Sem depender de uma aba perdida no navegador. Funciona em Android, iOS e desktop.

    {pwaHighlights.map((item) => (
  • {item.title} {" "} — {item.description}

  • ))}
{/* Companion — texto esquerda, imagem direita */}
Companion Android

Capture, envie e revise no mesmo fluxo

O Companion captura notificações de apps bancários e cria pré-lançamentos automaticamente para você revisar na inbox.

    {companionSteps.map((step, index) => (
  1. {index + 1}

    {step.title} {" "} — {step.description}

  2. ))}

Bancos testados

{companionBanks.map((bank) => ( {bank.logo && ( {bank.name} )} {bank.name} ))}
Ver no GitHub
Preview Companion Preview Companion
{/* Tech Stack Section */}
Stack técnica

O que roda por baixo

Self-hosted, open source, type-safe do banco ao frontend

{stackItems.map((item) => (

{item.title}

{item.subtitle}

))}
{/* How to run Section */}
Como usar

Rode no seu computador

Não há versão hospedada online. Você precisa rodar localmente.

Ver documentação completa →
{/* Who is this for Section */}
Para quem é?

Feito para quem gosta de controle

O OpenMonetis não é para todo mundo.

{whoIsItForItems.map((item) => (

{item.title}

{item.description}

))}
{/* CTA Section */}

Pronto para testar?

Clone o repositório, rode localmente e veja se faz sentido pra você. É open source e gratuito.

{/* Footer */}
); }