diff --git a/.gitignore b/.gitignore index 5ef6a52..2eb0456 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ # production /build +/content-labs # misc .DS_Store diff --git a/AGENTS.md b/AGENTS.md index 00bc1c0..4e4d955 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,9 +4,9 @@ This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. -# Algoria Project Rules & Design System +# Acite Project Rules & Design System -This document outlines the design system, architecture rules, and coding standards for the Algoria project. All AI agents working on this codebase must adhere strictly to these guidelines. +This document outlines the design system, architecture rules, and coding standards for the Acite project. All AI agents working on this codebase must adhere strictly to these guidelines. ## 1. Design System & Aesthetics diff --git a/README.md b/README.md index 9304c24..f899d4f 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# Algoria +# Acite -![](https://img.shields.io/badge/Versão-1.6.0-black?style=for-the-badge) +![](https://img.shields.io/badge/Versão-2.0.0-black?style=for-the-badge) Plataforma em português para estudar **algoritmos e decisões em código** através de leitura guiada: catálogo de problemas com várias soluções (brute-force, óptima, alternativa), **code player** linha-a-linha com três níveis de explicação, mini-guias em **Conceitos**, **curso modular** com avaliações locais, hub de **inglês técnico para entrevistas** (conteúdo em inglês) e guias de **engenharia aplicada** (front, back, DevOps, SoftSkills e IA).

- Algoria Preview + Acite Preview

## Funcionalidades @@ -30,7 +30,7 @@ Plataforma em português para estudar **algoritmos e decisões em código** atra ## Estrutura do Projeto ```txt -algoria/ +acite/ ├── app/ # Next.js App Router │ ├── page.tsx # Landing │ ├── layout.tsx # Layout global + providers @@ -86,7 +86,7 @@ algoria/ ### Visão Geral -O Algoria evoluiu para uma arquitetura centrada em **dados dinâmicos via PostgreSQL**. Embora o conteúdo possa ser importado de pastas em `content/` para bootstrapping, a fonte canônica agora reside no banco de dados, permitindo edição em tempo real através do **CMS integrado**. O servidor valida as submissões com **Zod**, gera HTML (Markdown via `marked`) e o **code player** mantém-se como uma ilha interativa no cliente com estado sincronizado via **Zustand**. +O Acite evoluiu para uma arquitetura centrada em **dados dinâmicos via PostgreSQL**. Embora o conteúdo possa ser importado de pastas em `content/` para bootstrapping, a fonte canônica agora reside no banco de dados, permitindo edição em tempo real através do **CMS integrado**. O servidor valida as submissões com **Zod**, gera HTML (Markdown via `marked`) e o **code player** mantém-se como uma ilha interativa no cliente com estado sincronizado via **Zustand**. ### Fluxo de conteúdo → página diff --git a/app/admin/content/_components/types.ts b/app/admin/content/_components/types.ts index f7cb16b..bb8a437 100644 --- a/app/admin/content/_components/types.ts +++ b/app/admin/content/_components/types.ts @@ -93,6 +93,7 @@ export const ENGINEERING_PILLARS = [ { value: "devops", label: "DevOps" }, { value: "softskills", label: "Soft Skills / Carreira" }, { value: "ia", label: "Inteligência Artificial" }, + { value: "web3", label: "Web3 e Blockchain" }, ]; export const CATEGORIES = [ diff --git a/app/admin/content/content-examples.ts b/app/admin/content/content-examples.ts index 0939821..272197c 100644 --- a/app/admin/content/content-examples.ts +++ b/app/admin/content/content-examples.ts @@ -1,5 +1,5 @@ /** - * Real examples from the Algoria platform for each content type. + * Real examples from the Acite platform for each content type. * These are used by the content editor to show creators how to structure their content. */ diff --git a/app/admin/layout.tsx b/app/admin/layout.tsx index aca43ec..fc2a429 100644 --- a/app/admin/layout.tsx +++ b/app/admin/layout.tsx @@ -73,7 +73,7 @@ export default async function AdminLayout({
-

Algoria Admin

+

Acite Admin

Management Panel

diff --git a/app/admin/page.tsx b/app/admin/page.tsx index 80aca0e..8201d90 100644 --- a/app/admin/page.tsx +++ b/app/admin/page.tsx @@ -68,7 +68,7 @@ export default async function AdminDashboardPage() { Dashboard

- Visão geral do estado da plataforma Algoria. + Visão geral do estado da plataforma Acite.

diff --git a/app/auth/sign-in/page.tsx b/app/auth/sign-in/page.tsx index 44515ed..ff91f17 100644 --- a/app/auth/sign-in/page.tsx +++ b/app/auth/sign-in/page.tsx @@ -5,9 +5,9 @@ import { buildPublicMetadata } from '@/lib/seo/build-metadata'; export const metadata: Metadata = buildPublicMetadata({ title: 'Iniciar sessão', - description: 'Entra na tua conta Algoria para sincronizar progresso e gerir a subscrição Pro.', + description: 'Entra na tua conta Acite para sincronizar progresso e gerir a subscrição Pro.', pathname: '/auth/sign-in', - keywords: ['login', 'conta', 'Algoria'], + keywords: ['login', 'conta', 'Acite'], }); export default function SignInPage() { diff --git a/app/auth/sign-up/page.tsx b/app/auth/sign-up/page.tsx index 029783f..f33f0bc 100644 --- a/app/auth/sign-up/page.tsx +++ b/app/auth/sign-up/page.tsx @@ -5,9 +5,9 @@ import { buildPublicMetadata } from '@/lib/seo/build-metadata'; export const metadata: Metadata = buildPublicMetadata({ title: 'Criar conta', - description: 'Cria uma conta Algoria para guardar o progresso na nuvem e subscrever o catálogo Pro.', + description: 'Cria uma conta Acite para guardar o progresso na nuvem e subscrever o catálogo Pro.', pathname: '/auth/sign-up', - keywords: ['registo', 'conta', 'Algoria'], + keywords: ['registo', 'conta', 'Acite'], }); export default function SignUpPage() { diff --git a/app/changelog/page.tsx b/app/changelog/page.tsx index 165d57d..bac20eb 100644 --- a/app/changelog/page.tsx +++ b/app/changelog/page.tsx @@ -11,9 +11,9 @@ import { buildPublicMetadata } from "@/lib/seo/build-metadata"; export const metadata: Metadata = buildPublicMetadata({ title: "Novidades", description: - "Alterações recentes na Algoria: novas funcionalidades, conteúdo e melhorias para quem estuda algoritmos e preparação técnica.", + "Alterações recentes na Acite: novas funcionalidades, conteúdo e melhorias para quem estuda algoritmos e preparação técnica.", pathname: "/changelog", - keywords: ["changelog", "novidades", "Algoria", "actualizações"], + keywords: ["changelog", "novidades", "Acite", "actualizações"], }); export const dynamic = "force-dynamic"; diff --git a/app/concepts/[slug]/page.tsx b/app/concepts/[slug]/page.tsx index 879b38b..f850376 100644 --- a/app/concepts/[slug]/page.tsx +++ b/app/concepts/[slug]/page.tsx @@ -13,6 +13,7 @@ import { JsonLdScript } from '@/components/seo/json-ld'; import { MarkdownArticle } from '@/components/markdown/markdown-article'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; +import { MermaidRenderer } from '@/components/markdown/mermaid-renderer'; import { auth } from '@/lib/auth'; import { userHasPro } from '@/lib/billing/entitlements'; import { getConceptAccess, isContentUnlockedForUser } from '@/lib/billing/tiering'; @@ -45,7 +46,7 @@ export async function generateMetadata({ params }: { params: Promise }): difficultyPt, 'conceitos algoritmos', 'fundamentos', - 'Algoria', + 'Acite', ], openGraphType: 'article', }); @@ -121,15 +122,19 @@ export default async function ConceptPage({ ) : ( - + <> + +
+ )} {courseSlug && moduleId ? ( diff --git a/app/concepts/page.tsx b/app/concepts/page.tsx index c7c1256..fe80fde 100644 --- a/app/concepts/page.tsx +++ b/app/concepts/page.tsx @@ -18,7 +18,7 @@ export const metadata: Metadata = buildPublicMetadata({ "two pointers", "sliding window", "fundamentos algoritmos", - "Algoria conceitos", + "Acite conceitos", ], }); diff --git a/app/course/[slug]/module/[moduleId]/page.tsx b/app/course/[slug]/module/[moduleId]/page.tsx index 04e352d..5d20906 100644 --- a/app/course/[slug]/module/[moduleId]/page.tsx +++ b/app/course/[slug]/module/[moduleId]/page.tsx @@ -43,7 +43,7 @@ export async function generateMetadata({ params }: { params: Promise }): title: `${tabTitle} · ${pack.title}`, description, pathname: `/course/${slug}/module/${moduleId}`, - keywords: [tabTitle, pack.title, mod.linkedConceptSlug, 'módulo curso Algoria', 'exercícios fundamentos'], + keywords: [tabTitle, pack.title, mod.linkedConceptSlug, 'módulo curso Acite', 'exercícios fundamentos'], openGraphType: 'article', }); } diff --git a/app/course/[slug]/page.tsx b/app/course/[slug]/page.tsx index 63fe300..a0b7eb0 100644 --- a/app/course/[slug]/page.tsx +++ b/app/course/[slug]/page.tsx @@ -26,7 +26,7 @@ export async function generateMetadata({ params }: { params: Promise }): title: pack.title, description: pack.subtitle, pathname: `/course/${slug}`, - keywords: [pack.title, 'curso guiado algoritmos', 'certificado módulo', 'Algoria curso', ...pack.modules.map((m) => m.certificateTitle)], + keywords: [pack.title, 'curso guiado algoritmos', 'certificado módulo', 'Acite curso', ...pack.modules.map((m) => m.certificateTitle)], openGraphType: 'article', }); } diff --git a/app/course/page.tsx b/app/course/page.tsx index 59081a1..b58e1ee 100644 --- a/app/course/page.tsx +++ b/app/course/page.tsx @@ -12,7 +12,7 @@ export const metadata: Metadata = buildPublicMetadata({ description: 'Percursos com leitura curada, exercícios no browser e certificado modular ao concluir cada avaliação — progresso guardado localmente.', pathname: '/course', - keywords: ['curso algoritmos', 'fundamentos programação', 'certificado módulo', 'Algoria curso', 'trilha guiada'], + keywords: ['curso algoritmos', 'fundamentos programação', 'certificado módulo', 'Acite curso', 'trilha guiada'], }); export default async function CoursesIndexPage() { diff --git a/app/engineering-work/[slug]/page.tsx b/app/engineering-work/[slug]/page.tsx index 7ad46ab..a5b92f6 100644 --- a/app/engineering-work/[slug]/page.tsx +++ b/app/engineering-work/[slug]/page.tsx @@ -37,6 +37,7 @@ const PILLAR_LABEL: Record = { devops: "DevOps e sistema", softskills: "Carreira e Soft Skills", ia: "Inteligência Artificial", + web3: "Web3 e Blockchain", }; export async function generateStaticParams(): Promise { @@ -62,7 +63,7 @@ export async function generateMetadata({ pillar, "engenharia software", "boas práticas produção", - "Algoria guia", + "Acite guia", ], image: guide.meta.image, openGraphType: "article", diff --git a/app/explorer/page.tsx b/app/explorer/page.tsx index 09b35f1..55d7045 100644 --- a/app/explorer/page.tsx +++ b/app/explorer/page.tsx @@ -20,7 +20,7 @@ interface ExplorerPageProps { export const metadata = buildPublicMetadata({ title: "Explorar Desenvolvedores", description: - "Encontra outros desenvolvedores na Algoria, filtra por tecnologias e descobre perfis profissionais.", + "Encontra outros desenvolvedores na Acite, filtra por tecnologias e descobre perfis profissionais.", pathname: "/explorer", }); @@ -86,7 +86,7 @@ export default async function ExplorerPage({ variant="secondary" className="mb-4 rounded-none bg-primary/10 px-1.5 py-0 font-mono text-[10px] uppercase text-primary" > - Comunidade Algoria + Comunidade Acite

Explorar Talentos diff --git a/app/favicon.ico b/app/favicon.ico index 718d6fe..fe5cc29 100644 Binary files a/app/favicon.ico and b/app/favicon.ico differ diff --git a/app/icon.svg b/app/icon.svg deleted file mode 100644 index e03ad68..0000000 --- a/app/icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/app/interview-en/[slug]/page.tsx b/app/interview-en/[slug]/page.tsx index cc5dfa8..2ca91c6 100644 --- a/app/interview-en/[slug]/page.tsx +++ b/app/interview-en/[slug]/page.tsx @@ -9,6 +9,7 @@ import { ContentNavigation } from '@/components/layout/content-navigation'; import { JsonLdScript } from '@/components/seo/json-ld'; import { MarkdownArticle } from '@/components/markdown/markdown-article'; import { RequireAuth } from '@/components/auth/require-auth'; +import { MermaidRenderer } from '@/components/markdown/mermaid-renderer'; import { getAllInterviewEnglishSlugs, getInterviewEnglishTopic, getAdjacentInterviewEnglish } from '@/lib/content/loader'; import type { InterviewEnglishTrack } from '@/lib/content/schemas'; import { buildPublicMetadata } from '@/lib/seo/build-metadata'; @@ -50,7 +51,7 @@ export async function generateMetadata({ params }: { params: Promise }): 'technical English', 'coding interview', 'software interview', - 'Algoria', + 'Acite', ], openGraphLocale: 'en_US', openGraphType: 'article', @@ -126,16 +127,20 @@ export default async function InterviewEnglishTopicPage({ ) : ( - + <> + +
+ )} {courseSlug && moduleId ? ( diff --git a/app/interview-en/page.tsx b/app/interview-en/page.tsx index d59ae4e..0eaa483 100644 --- a/app/interview-en/page.tsx +++ b/app/interview-en/page.tsx @@ -10,7 +10,7 @@ import { import { buildPublicMetadata } from "@/lib/seo/build-metadata"; export const metadata: Metadata = buildPublicMetadata({ - title: "Technical English for interviews — hub Algoria", + title: "Technical English for interviews — hub Acite", description: "English-only hub: vocabulary for data structures & algorithms, live coding talk tracks, behavioral STAR answers and system design phrases for hiring loops.", pathname: "/interview-en", @@ -21,7 +21,7 @@ export const metadata: Metadata = buildPublicMetadata({ "STAR method behavioral", "system design vocabulary", "FAANG interview English", - "Algoria", + "Acite", ], openGraphLocale: "en_US", }); diff --git a/app/layout.tsx b/app/layout.tsx index a6ef42b..e3a105d 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -25,8 +25,8 @@ const geistMono = Geist_Mono({ export const metadata: Metadata = { title: { - default: "Algoria — aprende algoritmos lendo código, não escrevendo", - template: "%s · Algoria", + default: "Acite — aprende algoritmos lendo código, não escrevendo", + template: "%s · Acite", }, description: "Plataforma onde aprendes problemas clássicos de algoritmos linha-a-linha, com explicações em três níveis de profundidade, comparação brute-force vs óptima, e mini-cursos de Big O.", @@ -41,7 +41,7 @@ export const metadata: Metadata = { ], metadataBase: getMetadataBase(), openGraph: { - title: "Algoria — aprende algoritmos lendo código", + title: "Acite — aprende algoritmos lendo código", description: "Linha por linha, com 3 níveis de profundidade. Foco em entender, não em decorar.", type: "website", @@ -59,7 +59,7 @@ export default function RootLayout({ { "@type": "EducationalOrganization", "@id": `${origin}/#organization`, - name: "Algoria", + name: "Acite", url: origin, description: "Plataforma para aprender algoritmos e estruturas de dados com leitura guiada de código, preparação para entrevistas e guias de engenharia aplicada.", @@ -68,7 +68,7 @@ export default function RootLayout({ "@type": "WebSite", "@id": `${origin}/#website`, url: origin, - name: "Algoria", + name: "Acite", inLanguage: "pt-BR", publisher: { "@id": `${origin}/#organization` }, }, diff --git a/app/leaderboard/page.tsx b/app/leaderboard/page.tsx index bccfd57..373b838 100644 --- a/app/leaderboard/page.tsx +++ b/app/leaderboard/page.tsx @@ -13,9 +13,9 @@ import { buildPublicMetadata } from "@/lib/seo/build-metadata"; export const metadata: Metadata = buildPublicMetadata({ title: "Leaderboard — Ranking da Comunidade", description: - "Vê quem está a liderar em XP na Algoria. Compara o teu progresso com o da comunidade e com os teus amigos.", + "Vê quem está a liderar em XP na Acite. Compara o teu progresso com o da comunidade e com os teus amigos.", pathname: "/leaderboard", - keywords: ["leaderboard", "ranking", "xp", "gamificação", "Algoria"], + keywords: ["leaderboard", "ranking", "xp", "gamificação", "Acite"], }); async function getLeaderboardData(scope: string, userId?: string) { diff --git a/app/legal/cookies/page.tsx b/app/legal/cookies/page.tsx index 081c9e8..08c87eb 100644 --- a/app/legal/cookies/page.tsx +++ b/app/legal/cookies/page.tsx @@ -7,9 +7,9 @@ import { buildPublicMetadata } from "@/lib/seo/build-metadata"; export const metadata: Metadata = buildPublicMetadata({ title: "Cookies", - description: "Declaração e Política de Cookies transparente da Algoria em conformidade com as diretrizes da LGPD.", + description: "Declaração e Política de Cookies transparente da Acite em conformidade com as diretrizes da LGPD.", pathname: "/legal/cookies", - keywords: ["cookies", "privacidade", "transparência", "gerenciamento de cookies", "Algoria"], + keywords: ["cookies", "privacidade", "transparência", "gerenciamento de cookies", "Acite"], }); export default function CookiesPage() { @@ -79,7 +79,7 @@ export default function CookiesPage() { better-auth.session_token - Algoria (Interno) + Acite (Interno) Armazena o token criptografado da sessão do usuário autenticado. 30 dias @@ -120,8 +120,8 @@ export default function CookiesPage() { 1 ano - algoria-cookie-consent - Algoria (Local) + acite-cookie-consent + Acite (Local) Registra no navegador a escolha do usuário de aceitar ou rejeitar cookies analíticos. Permanente @@ -137,7 +137,7 @@ export default function CookiesPage() { 03. Cookies de Terceiros e Salvaguardas

- Algumas páginas da Algoria carregam componentes de parceiros certificados. A integração com o **Stripe** assegura a segurança transacional indispensável nas compras da assinatura Pro. O **PostHog** atua como ferramenta de telemetria interna sob estritas regras de mitigação de dados pessoais identificáveis. + Algumas páginas da Acite carregam componentes de parceiros certificados. A integração com o **Stripe** assegura a segurança transacional indispensável nas compras da assinatura Pro. O **PostHog** atua como ferramenta de telemetria interna sob estritas regras de mitigação de dados pessoais identificáveis.

@@ -150,7 +150,7 @@ export default function CookiesPage() {

  1. - Você pode **limpar os cookies e o armazenamento local do seu navegador** (especificamente a chave `algoria-cookie-consent`). + Você pode **limpar os cookies e o armazenamento local do seu navegador** (especificamente a chave `acite-cookie-consent`).
  2. Ao recarregar a página, o banner de consentimento reaparecerá imediatamente no rodapé, permitindo que você clique em **"Rejeitar"** para desativar a coleta do PostHog de forma definitiva. @@ -213,8 +213,8 @@ export default function CookiesPage() { Política de Privacidade {" "} ou acione nosso DPO diretamente no e-mail{" "} - - privacidade@algoria.com.br + + privacidade@acite.com.br .

    diff --git a/app/legal/privacy/page.tsx b/app/legal/privacy/page.tsx index 12c26f6..6543a89 100644 --- a/app/legal/privacy/page.tsx +++ b/app/legal/privacy/page.tsx @@ -7,9 +7,9 @@ import { buildPublicMetadata } from '@/lib/seo/build-metadata'; export const metadata: Metadata = buildPublicMetadata({ title: 'Política de Privacidade', - description: 'Declaração oficial de transparência e Política de Privacidade da Algoria em conformidade com a LGPD e o RGPD.', + description: 'Declaração oficial de transparência e Política de Privacidade da Acite em conformidade com a LGPD e o RGPD.', pathname: '/legal/privacy', - keywords: ['privacidade', 'proteção de dados', 'LGPD', 'direitos do titular', 'Algoria'], + keywords: ['privacidade', 'proteção de dados', 'LGPD', 'direitos do titular', 'Acite'], }); export default function PrivacyPage() { @@ -35,7 +35,7 @@ export default function PrivacyPage() { 01. Introdução e Escopo

    - A Algoria preza pela segurança, privacidade e transparência no tratamento dos dados pessoais de seus alunos e visitantes. + A Acite preza pela segurança, privacidade e transparência no tratamento dos dados pessoais de seus alunos e visitantes. Esta Política de Privacidade descreve, de forma clara e objetiva, como coletamos, armazenamos, utilizamos e protegemos seus dados pessoais em total conformidade com a Lei Geral de Proteção de Dados Pessoais (Lei nº 13.709/2018 - LGPD) no Brasil, e de forma subsidiária com o Regulamento Geral sobre a Proteção de Dados (GDPR - Regulamento UE 2016/679) na União Europeia.

    @@ -86,7 +86,7 @@ export default function PrivacyPage() {

    Base Legal: Execução de Contrato ou Procedimentos Preliminares (Art. 7º, V, LGPD).
    - IMPORTANTE: A Algoria não coleta nem armazena dados de cartões de crédito em servidores próprios. Todo o checkout e custódia de dados de faturamento são feitos de forma segura e direta no ambiente certificado PCI-DSS do Stripe Inc. + IMPORTANTE: A Acite não coleta nem armazena dados de cartões de crédito em servidores próprios. Todo o checkout e custódia de dados de faturamento são feitos de forma segura e direta no ambiente certificado PCI-DSS do Stripe Inc.

    @@ -159,12 +159,12 @@ export default function PrivacyPage() { Encarregado pelo Tratamento de Dados (DPO)

    - Em cumprimento ao Artigo 41 da LGPD, o Encarregado pelo Tratamento de Dados Pessoais da Algoria responde a todas as dúvidas, solicitações ou requisições de titulares de dados e autoridades de fiscalização (ANPD). + Em cumprimento ao Artigo 41 da LGPD, o Encarregado pelo Tratamento de Dados Pessoais da Acite responde a todas as dúvidas, solicitações ou requisições de titulares de dados e autoridades de fiscalização (ANPD).

    Contato do DPO / Canal de Suporte Legal:{" "} - - privacidade@algoria.com.br + + privacidade@acite.com.br

    diff --git a/app/legal/refunds/page.tsx b/app/legal/refunds/page.tsx index 1645abc..6da298f 100644 --- a/app/legal/refunds/page.tsx +++ b/app/legal/refunds/page.tsx @@ -7,9 +7,9 @@ import { buildPublicMetadata } from '@/lib/seo/build-metadata'; export const metadata: Metadata = buildPublicMetadata({ title: 'Reembolsos', - description: 'Política de cancelamento e reembolso da Algoria.', + description: 'Política de cancelamento e reembolso da Acite.', pathname: '/legal/refunds', - keywords: ['reembolso', 'estorno', 'cancelamento', 'Stripe', 'Algoria'], + keywords: ['reembolso', 'estorno', 'cancelamento', 'Stripe', 'Acite'], }); export default function RefundsPage() { @@ -37,7 +37,7 @@ export default function RefundsPage() {

    2. Cancelamento de Assinatura

    - As assinaturas da Algoria Pro podem ser canceladas a qualquer momento através do painel de controle do usuário (gerenciado via Stripe Customer Portal). + As assinaturas da Acite Pro podem ser canceladas a qualquer momento através do painel de controle do usuário (gerenciado via Stripe Customer Portal).

    • Ao cancelar, você continuará tendo acesso ao conteúdo Pro até o final do período de faturamento atual.
    • @@ -58,7 +58,7 @@ export default function RefundsPage() { Para solicitar um reembolso dentro das condições acima, você deve enviar um e-mail para o suporte oficial informando:

        -
      • O endereço de e-mail associado à sua conta Algoria.
      • +
      • O endereço de e-mail associado à sua conta Acite.
      • O ID da transação ou número da fatura enviada pelo Stripe.
      • O motivo detalhado da solicitação.
      diff --git a/app/legal/terms/page.tsx b/app/legal/terms/page.tsx index 82cb7e0..c2ceaf0 100644 --- a/app/legal/terms/page.tsx +++ b/app/legal/terms/page.tsx @@ -7,9 +7,9 @@ import { buildPublicMetadata } from "@/lib/seo/build-metadata"; export const metadata: Metadata = buildPublicMetadata({ title: "Termos de Uso", - description: "Termos de Uso e condições gerais de contratação da plataforma Algoria em conformidade com o CDC e a LGPD.", + description: "Termos de Uso e condições gerais de contratação da plataforma Acite em conformidade com o CDC e a LGPD.", pathname: "/legal/terms", - keywords: ["termos de uso", "condições gerais", "reembolso", "CDC", "Algoria"], + keywords: ["termos de uso", "condições gerais", "reembolso", "CDC", "Acite"], }); export default function TermsPage() { @@ -44,7 +44,7 @@ export default function TermsPage() { 01. Vinculação Contratual

      - Bem-vindo à Algoria. Ao criar uma conta, navegar ou contratar os planos pagos da plataforma ("Serviço"), você celebra um contrato de prestação de serviços educacionais juridicamente vinculativo e concorda integralmente com estes Termos de Uso. + Bem-vindo à Acite. Ao criar uma conta, navegar ou contratar os planos pagos da plataforma ("Serviço"), você celebra um contrato de prestação de serviços educacionais juridicamente vinculativo e concorda integralmente com estes Termos de Uso.

      Caso discorde de qualquer cláusula ou regra estabelecida neste documento, você deve abster-se imediatamente de utilizar os serviços e funcionalidades da plataforma. @@ -69,7 +69,7 @@ export default function TermsPage() { REGRAS DE COMPARTILHAMENTO:

      - Cada conta na Algoria é de natureza **individual e intransferível**. O compartilhamento de credenciais de login para acesso simultâneo de terceiros configura infração contratual de pirataria e quebra de propriedade intelectual, resultando no **bloqueio imediato e definitivo da conta**, sem qualquer direito a estorno ou reembolso das mensalidades pagas. + Cada conta na Acite é de natureza **individual e intransferível**. O compartilhamento de credenciais de login para acesso simultâneo de terceiros configura infração contratual de pirataria e quebra de propriedade intelectual, resultando no **bloqueio imediato e definitivo da conta**, sem qualquer direito a estorno ou reembolso das mensalidades pagas.

    @@ -78,7 +78,7 @@ export default function TermsPage() { 03. Assinatura Pro, Pagamentos e Renovação

    - O plano **Algoria Pro** garante acesso integral ao catálogo premium de problemas resolvidos, trilhas de backend/frontend, testes técnicos simulados e explicações de código avançadas. + O plano **Acite Pro** garante acesso integral ao catálogo premium de problemas resolvidos, trilhas de backend/frontend, testes técnicos simulados e explicações de código avançadas.

    • @@ -98,7 +98,7 @@ export default function TermsPage() { 04. Direito de Arrependimento e Reembolso (Artigo 49 do CDC)

      - Em pleno respeito ao **Código de Defesa do Consumidor (Lei nº 8.078/1990 - CDC, Artigo 49)**, a Algoria assegura ao aluno o prazo de **7 (sete) dias corridos**, contados a partir da data de assinatura/compra inicial do plano Pro, para exercer seu direito de arrependimento. + Em pleno respeito ao **Código de Defesa do Consumidor (Lei nº 8.078/1990 - CDC, Artigo 49)**, a Acite assegura ao aluno o prazo de **7 (sete) dias corridos**, contados a partir da data de assinatura/compra inicial do plano Pro, para exercer seu direito de arrependimento.

      Caso opte por desistir do plano Pro dentro deste prazo de reflexão de 7 dias, você receberá o **reembolso integral e incondicional** de todo o valor pago, sem qualquer cobrança de taxas administrativas ou burocracias. Para solicitar, basta formalizar o pedido diretamente pelo nosso e-mail oficial de suporte legal. @@ -128,7 +128,7 @@ export default function TermsPage() { 06. Propriedade Intelectual e Proteção Antiscraping

      - Todo o código-fonte, didática textual explicativa em três níveis de profundidade, ilustrações técnicas e arquitetura lógica exposta na plataforma constituem propriedade intelectual exclusiva da Algoria ou de seus licenciadores. + Todo o código-fonte, didática textual explicativa em três níveis de profundidade, ilustrações técnicas e arquitetura lógica exposta na plataforma constituem propriedade intelectual exclusiva da Acite ou de seus licenciadores. É **expressamente proibido**:

        @@ -143,7 +143,7 @@ export default function TermsPage() { 07. Limitação de Responsabilidade

        - Os conteúdos didáticos da Algoria servem como suporte e aprimoramento pedagógico profissional para engenharia de software. Não asseguramos aprovação garantida em processos seletivos ou entrevistas específicas de mercado, dependendo o aproveitamento exclusivamente do engajamento individual do estudante nas práticas recomendadas. + Os conteúdos didáticos da Acite servem como suporte e aprimoramento pedagógico profissional para engenharia de software. Não asseguramos aprovação garantida em processos seletivos ou entrevistas específicas de mercado, dependendo o aproveitamento exclusivamente do engajamento individual do estudante nas práticas recomendadas.

        @@ -161,8 +161,8 @@ export default function TermsPage() {

        Canal de Suporte e Ouvidoria

        Dúvidas acerca destes termos de contratação, pedidos de cancelamento, direito de arrependimento (7 dias) ou problemas com acesso Pro devem ser encaminhados ao suporte central em:{" "} - - suporte@algoria.com.br + + suporte@acite.com.br .

        diff --git a/app/page.tsx b/app/page.tsx index bdd9bb2..1fcbb79 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -15,13 +15,13 @@ import { TechnicalJobTests } from "@/components/landing-page/technical-job-tests export const metadata: Metadata = buildPublicMetadata({ titleAbsolute: - "Algoria — Aprenda Algoritmos com Code Player Linha-a-Linha e Preparação Técnica para Elite", + "Acite — Aprenda Algoritmos com Code Player Linha-a-Linha e Preparação Técnica para Elite", description: "Domine algoritmos, estruturas de dados e sistemas complexos. Explore soluções explicadas linha-a-linha com nosso Code Player, prepare-se para entrevistas em Big Techs e acesse guias práticos de Engenharia (Frontend, Backend, DevOps e IA).", pathname: "/", image: "/preview.webp", keywords: [ - "Algoria", + "Acite", "algoritmos e estruturas de dados", "preparação para entrevistas técnicas", "estudar algoritmos linha a linha", diff --git a/app/pricing/page.tsx b/app/pricing/page.tsx index fddebce..83421b8 100644 --- a/app/pricing/page.tsx +++ b/app/pricing/page.tsx @@ -17,11 +17,11 @@ import { headers } from "next/headers"; import { CheckoutSuccessAnalytics } from "./checkout-success-analytics"; export const metadata: Metadata = buildPublicMetadata({ - title: "Preços e Algoria Pro", + title: "Preços e Acite Pro", description: "Compara o plano gratuito com a subscrição Pro: catálogo completo, sync de progresso e traces de execução.", pathname: "/pricing", - keywords: ["preços", "Pro", "subscrição", "Algoria"], + keywords: ["preços", "Pro", "subscrição", "Acite"], }); export default async function PricingPage() { @@ -96,7 +96,7 @@ export default async function PricingPage() {

        - Ideal para experimentares o método Algoria e dominares os + Ideal para experimentares o método Acite e dominares os fundamentos.

          diff --git a/app/problems/[slug]/[solution]/page.tsx b/app/problems/[slug]/[solution]/page.tsx index e2903c5..a88661c 100644 --- a/app/problems/[slug]/[solution]/page.tsx +++ b/app/problems/[slug]/[solution]/page.tsx @@ -15,6 +15,7 @@ import { JsonLdScript } from "@/components/seo/json-ld"; import { MarkdownArticle } from "@/components/markdown/markdown-article"; import { SolutionLanguageSelect } from "@/components/solution/solution-language-select"; import { SolutionVisitTracker } from "@/components/solution/solution-visit-tracker"; +import { MermaidRenderer } from "@/components/markdown/mermaid-renderer"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; @@ -244,13 +245,17 @@ export default async function SolutionPage({
        {solution.introHtml ? ( - + <> + +
        + ) : null} ) : null} - +
        - {isPro ? "ALGORIA PRO" : "ALGORIA FREE"} + {isPro ? "ACITE PRO" : "ACITE FREE"}