> βββββββββββββββββββββββββββββββ βββββββ ββββ ββββββββββββ
> ββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββ
> ββββββ ββββββ ββββββ βββββββββββ βββββββββ βββ βββ
> ββββββ ββββββ ββββββ βββββββββββ βββββββββββββ βββ
> βββββββββββ βββ βββ βββββββββββββββ ββββββ βββ
> βββββββββββ βββ βββ βββ βββββββ βββ βββββ βββ
Tech for eSports
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EFFRONT - Next.js 16 (App Router) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β Institutional site for the company behind ProStaff, ArenaBR, β
β scrims.lol and peneira.gg. EN default Β· PT-BR Β· ES Β· KO β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΆ Key Features (click to expand)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β [β ] i18n real - next-intl, locale prefix always on 4 langs β
β [β ] Design tokens prΓ³prios - paleta herdada do ProStaff, tipo prΓ³prio β
β [β ] Careers honesto - 0 vagas reais em vez de vaga fantasma β
β [β ] Privacy policy real - texto prΓ³prio, escopado ao que o site faz β
β [β ] Media kit - cores, tipografia e logos pra baixar β
β [β ] Fonts otimizadas - next/font/local (Inter + Bricolage) β
β [β ] SEO tΓ©cnico - sitemap.ts + robots.ts por idioma β
β [β ] Lint/format automatizado - ESLint + Prettier + Husky/lint-staged β
β [β ] CI - GitHub Actions: format, lint, typecheck β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 01 Β· Quick Start β
β 02 Β· Technology Stack β
β 03 Β· Project Structure β
β 04 Β· Environment Variables β
β 05 Β· Pages & Routes β
β 06 Β· InternacionalizaΓ§Γ£o β
β 07 Β· Design System β
β 08 Β· Content Rules β
β 09 Β· Scripts β
β 10 Β· Deployment (Vercel) β
β 11 Β· Open Items β
β 12 Β· License β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Install dependencies
npm install
# Configure environment (opcional em dev)
cp .env.example .env.local
# Start development server (Turbopack, port 6767)
npm run dev App: http://localhost:6767
Locale padrΓ£o (en) vive em /en; os outros em /pt, /es, /ko. A raiz
/ redireciona pro locale padrΓ£o.
ββββββββββββββββββββββββ¦βββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LAYER β TECHNOLOGY β
β βββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β Framework β Next.js 16 (App Router, Turbopack) β
β Language β TypeScript 5 β
β Styling β Tailwind CSS 4 β
β i18n β next-intl (routing always-prefixed) β
β Fonts β next/font/local - Inter + Bricolage Grotesque β
β Lint/Format β ESLint (flat config) + Prettier + lint-staged β
β Git Hooks β Husky (pre-commit) β
β CI β GitHub Actions β
ββββββββββββββββββββββββ©βββββββββββββββββββββββββββββββββββββββββββββββββββββ
src/
βββ app/
β βββ [locale]/
β β βββ layout.tsx - root layout (fonts, NextIntlClientProvider)
β β βββ page.tsx - landing page
β β βββ about/ - /about
β β βββ products/ - /products (conteΓΊdo completo dos 4 produtos)
β β βββ careers/ - /careers + /careers/[id] (vaga)
β β βββ news/ - /news
β β βββ privacy/ - /privacy
β β βββ media-kit/ - /media-kit
β βββ globals.css - design tokens + todo o CSS custom da marca
β βββ sitemap.ts - sitemap.xml (4 locales Γ todas as rotas)
β βββ robots.ts - robots.txt
βββ components/ - SiteNav, SiteFooter, CareersBoard, Γcones...
βββ data/
β βββ vagas.ts - vagas reais (array vazio = nada aberto)
βββ fonts/ - Inter-Variable.woff2 + BricolageGrotesque-Variable.woff2
βββ i18n/ - routing.ts, navigation.ts, request.ts (next-intl)
messages/ - pt.json, en.json, es.json, ko.json
public/
βββ logos/ - PNGs: ProStaff, ArenaBR, scrims.lol, peneira.gg
Crie .env.local na raiz do projeto (opcional em dev, obrigatΓ³rio em produΓ§Γ£o):
NEXT_PUBLIC_SITE_URL=https://effront.ggUsado por sitemap.ts e robots.ts pra gerar URLs absolutas corretas. Sem
essa variΓ‘vel, cai no fallback hardcoded https://effront.gg.
ββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββ
β ROUTE β DESCRIPTION β
ββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββ€
β / β Redireciona pro locale padrΓ£o (en) β
β /[locale] β Landing page β
β /[locale]/about β MissΓ£o, o que jΓ‘ construΓmos, time β
β /[locale]/products β Os 4 produtos, conteΓΊdo completo β
β /[locale]/careers β Vagas abertas (filtro por Γ‘rea) β
β /[locale]/careers/[id] β Detalhe de uma vaga β
β /[locale]/news β Linha do tempo de marcos reais β
β /[locale]/privacy β PolΓtica de privacidade β
β /[locale]/media-kit β Cores, tipografia, logos pra baixar β
ββββββββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββ
[locale] Γ© sempre um de en | pt | es | ko - roteamento always-prefixed
via next-intl (ver seΓ§Γ£o 06).
Config em src/i18n/routing.ts, navigation.ts e request.ts (next-intl).
export const routing = defineRouting({
locales: ["en", "pt", "es", "ko"],
defaultLocale: "en",
localePrefix: "always", // todo locale tem URL propria e estavel - inclusive o default
});TraduΓ§Γ΅es em messages/{locale}.json, um namespace flat por seΓ§Γ£o (Hero,
Products, About, Careers, Privacy, etc). Pra adicionar texto novo,
precisa de entrada nos 4 arquivos.
Importante: NextIntlClientProvider recebe locale explicitamente no
layout.tsx - sem isso, sob Turbopack em dev com requisiΓ§Γ΅es concorrentes de
locales diferentes, acontece hydration mismatch (jΓ‘ debugado nesta sessΓ£o).
Paleta herdada do design system real do ProStaff (dourado Hextech, azul profundo, teal) - heranΓ§a de famΓlia legΓtima, Effront Γ© a empresa por trΓ‘s do produto. Tipografia e layout sΓ£o prΓ³prios da Effront.
Paleta (src/app/globals.css):
bg: #0A0E1A card: #0F1823 border: #24303c
gold: #C89B3C gold-hi: #E8C878 teal: #0596AA
blue: #0C223F blue-dark: #0A1929
Fontes:
Display: Bricolage Grotesque (tΓtulos)
Body: Inter (texto e UI)
Don'ts (herdados do README real do ProStaff Design System - nΓ£o reintroduzir):
- Sem gradiente azul-arroxeado
- Sem emoji na UI
- Sem "colored-left-border card" (jΓ‘ violado e corrigido uma vez nesta sessΓ£o)
- Sem imagem fotogrΓ‘fica em superfΓcie
- Sem preenchimento sΓ³lido de dourado - sΓ³ borda, texto ou gradiente-a-transparente
- Zero conteΓΊdo fabricado. Nenhuma estatΓstica, cliente, citaΓ§Γ£o de
imprensa ou membro de equipe entra sem ser real e verificΓ‘vel - ver
src/data/vagas.ts(array vazio = nenhuma vaga aberta, nΓ£o Γ© placeholder;/careersmostra isso explicitamente em vez de inventar vaga). /privacyΓ© texto real, escopado ao que oeffront.gginstitucional realmente faz (sem conta, sem formulΓ‘rio, sΓ³ e-mail) - nΓ£o confundir com a polΓtica de privacidade do produto ProStaff (que cobre dados de jogo, Riot API, etc - essa Γ© outra polΓtica, de outro produto).
npm run dev # desenvolvimento (Turbopack, porta 6767)
npm run build # build de produΓ§Γ£o
npm run start # serve o build de produΓ§Γ£o (porta 6767)
npm run lint # ESLint
npm run typecheck # tsc --noEmit
npm run format # Prettier - grava
npm run format:check # Prettier - sΓ³ verifica (usado no CI)Hook de pre-commit (Husky + lint-staged) roda ESLint e Prettier nos arquivos staged automaticamente.
- Conectar o repositΓ³rio na Vercel - detecΓ§Γ£o automΓ‘tica de Next.js, sem
config extra necessΓ‘ria (sem
vercel.json). - Configurar variΓ‘vel de ambiente na Vercel:
(ajustar pro domΓnio real assim que registrado)
NEXT_PUBLIC_SITE_URL=https://effront.gg - Apontar o DNS do domΓnio comprado pra Vercel (CNAME/A record conforme a prΓ³pria Vercel instrui ao adicionar o domΓnio no projeto).
- Confirmar que
contato@effront.ggtem inbox real configurada antes de publicar - vΓ‘riosmailto:no site apontam pra esse endereΓ§o.
- Busca formal de marca registrada pra "Effront" (INPI/USPTO) antes de considerar o nome 100% fechado
- RevisΓ£o jurΓdica formal do texto de
/privacyantes de tratΓ‘-lo como documento definitivo (estΓ‘ emmessages/*.jsonβPrivacy) - Logo/Γcone de marca - em produΓ§Γ£o com uma designer (conceito explorado:
figa, referenciando a etimologia de "effrontery"/afronta), ainda sem
asset final.
public/logos/sΓ³ tem os logos dos produtos (ProStaff, ArenaBR, scrims.lol, peneira.gg), nΓ£o um logo prΓ³prio da Effront - Registro do domΓnio + DNS (em andamento)
- D4: se ProStaff/ArenaBR/scrims.lol/peneira.gg devem linkar de volta pra Effront como marca-mΓ£e - ainda nΓ£o feito nesses cΓ³digos-fonte
Propriedade privada - Β© 2026 Effront. Todos os direitos reservados.