Skip to content

Bulletdev/effront-web

Repository files navigation

>  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
>  β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β•šβ•β•β–ˆβ–ˆβ•”β•β•β•
>  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
>  β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
>  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
>  β•šβ•β•β•β•β•β•β•β•šβ•β•     β•šβ•β•     β•šβ•β•  β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•β•   β•šβ•β•
                     Tech for eSports

Next.js React TypeScript Tailwind CSS next-intl


╔═════════════════════════════════════════════════════════════════════════════╗
β•‘  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    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Table of Contents

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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                                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

01 Β· Quick Start

# 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.


02 Β· Technology Stack

╔══════════════════════╦════════════════════════════════════════════════════╗
β•‘  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                                    β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•©β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

03 Β· Project Structure

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

04 Β· Environment Variables

Crie .env.local na raiz do projeto (opcional em dev, obrigatΓ³rio em produΓ§Γ£o):

NEXT_PUBLIC_SITE_URL=https://effront.gg

Usado por sitemap.ts e robots.ts pra gerar URLs absolutas corretas. Sem essa variΓ‘vel, cai no fallback hardcoded https://effront.gg.


05 Β· Pages & Routes

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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).


06 Β· InternacionalizaΓ§Γ£o

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).


07 Β· Design System

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

08 Β· Content Rules

  • 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; /careers mostra isso explicitamente em vez de inventar vaga).
  • /privacy Γ© texto real, escopado ao que o effront.gg institucional 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).

09 Β· Scripts

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.


10 Β· Deployment (Vercel)

  1. Conectar o repositΓ³rio na Vercel - detecΓ§Γ£o automΓ‘tica de Next.js, sem config extra necessΓ‘ria (sem vercel.json).
  2. Configurar variΓ‘vel de ambiente na Vercel:
    NEXT_PUBLIC_SITE_URL=https://effront.gg
    
    (ajustar pro domΓ­nio real assim que registrado)
  3. 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).
  4. Confirmar que contato@effront.gg tem inbox real configurada antes de publicar - vΓ‘rios mailto: no site apontam pra esse endereΓ§o.

11 Β· Open Items

  • Busca formal de marca registrada pra "Effront" (INPI/USPTO) antes de considerar o nome 100% fechado
  • RevisΓ£o jurΓ­dica formal do texto de /privacy antes de tratΓ‘-lo como documento definitivo (estΓ‘ em messages/*.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

12 Β· License

Propriedade privada - Β© 2026 Effront. Todos os direitos reservados.

Effront Β· Tech for eSports

About

tech for eSports

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors