Portal em PHP para acompanhar informações do Fortnite com foco em loja, cosméticos, notícias, mapa, modos e busca de jogador.
Projeto de portfólio com arquitetura MVC artesanal (sem framework pesado), refinado para execução em ambientes locais e Docker.
O Fortnite Hub foi construído para demonstrar:
- organização de código em MVC manual
- consumo de API externa com cache
- roteamento próprio
- renderização server-side com PHP
- base visual moderna com identidade gamer
- cobertura unitária inicial com PHPUnit
- PHP 8.1+
- HTML + CSS + JavaScript
- MVC artesanal
- Composer (autoload + scripts)
- PHPUnit
- Bootstrap 4.5 (layout/base components)
- Docker + Apache (opcional)
- Home com destaques da loja
- Loja diária com busca por texto
- Catálogo de cosméticos com carregamento incremental
- Detalhes de cosmético por ID
- Notícias gerais, BR e STW
- Mapa atual com alternância de visualização (com/sem POIs)
- Página de modos de jogo (catálogo curado local)
- Busca de estatísticas de jogador por plataforma
- Páginas de erro 404/500 customizadas
- Cache local em arquivo para respostas da API
- Manifest + Service Worker para comportamento PWA básico
- Requisição entra por public/index.php
- bootstrap/app.php inicializa ambiente, config, headers e router
- config/routes.php registra rotas
- Router resolve controller/método
- Controller usa Model/Service para montar view model
- View é renderizada no layout principal
- app/Core: base de infraestrutura (Config, Env, Router, Controller, Cache, HTTP)
- app/Services: clientes de integração externa
- app/Models: interface legada/compatível para consumo pelos controllers
- app/Controllers: orquestração da requisição
- app/Views: templates por feature
- config/routes.php: definição central de rotas
- bootstrap/app.php: inicialização da aplicação
Fortnite/
├── app/
│ ├── Controllers/
│ ├── Core/
│ ├── Models/
│ ├── Services/
│ └── Views/
├── bootstrap/
│ └── app.php
├── config/
│ └── routes.php
├── public/
│ ├── index.php
│ ├── autoload.php
│ ├── css/
│ ├── img/
│ ├── manifest.json
│ └── sw.js
├── tests/
│ ├── Support/
│ └── Unit/
├── docker/
├── cache/
├── composer.json
├── docker-compose.yml
└── phpunit.xml
Crie seu arquivo .env a partir do exemplo:
cp .env.example .envVariáveis principais:
- FORTNITE_API_KEY: chave da API
- FORTNITE_API_URL: URL base da API Fortnite
- APP_ENV: development|production
- APP_DEBUG: true|false
- APP_STRICT_CONFIG: true|false, falha cedo em produção quando variáveis críticas faltarem
- APP_BASE_URL: opcional, sobrescreve autodetecção de base URL
- CACHE_ENABLED: habilita/desabilita cache local
- CACHE_TTL: TTL padrão do cache (segundos)
composer install
composer startAcesse: http://localhost:8000
- configure o DocumentRoot para a pasta public
- ou mantenha a raiz do projeto e use os arquivos de rewrite incluídos
Exemplo comum:
- projeto em C:/xampp/htdocs/Fortnite
- acesso via http://localhost/Fortnite/public
docker-compose up -dAcesse: http://localhost:8080
Executar testes:
composer testCobertura HTML:
composer test:coverageLint de estilo:
composer lintObservações:
- os testes existentes cobrem Router, Cache e contrato básico da camada de API
- testes de integração real com API externa não estão completos nesta versão
- sanitização de saída nas views com htmlspecialchars
- headers básicos enviados no bootstrap (nosniff, frame options, referrer policy, permissions policy)
- validação básica de parâmetros críticos (ex.: ID de cosmético, plataforma)
- tratamento de erro com fallback 404/500
- distinção de falhas na comunicação externa (rede/http/payload/API)
- implementado: manifest, service worker e cache básico de assets
- não implementado: estratégia offline completa para dados dinâmicos
- workflow de CI presente em .github/workflows/ci.yml
- inclui lint, testes e etapas de build/security
- uso efetivo depende da configuração de secrets do repositório
- não há pipeline de deploy produtivo pronto para uso imediato
- existe base para evolução no workflow
- Fortnite-API.com
- loja, cosméticos, notícias e estatísticas
- FortniteAPI.io (imagem de mapa)
- render de mapa atual via URL de mídia
- página de modos usa catálogo local curado (não totalmente API-driven)
- mapa usa imagem externa (sem engine de mapa interativo própria)
- parte dos estados avançados de UX ainda pode evoluir (ex.: skeletons em todas as telas)
- cobertura de testes ainda é enxuta para regras de negócio mais profundas
- aumentar cobertura de testes para controllers e fluxo de erro de views
- evoluir componente de estados reutilizáveis (loading/empty/error) para todas as páginas
- melhorar filtros e paginação na loja
- ampliar observabilidade (logs estruturados)
- maturar estratégia de deploy contínuo
git clone https://github.com/AndersonCav/Fortnite.gitEste projeto não é afiliado à Epic Games. Fortnite é marca registrada de seus respectivos proprietários.
Dados consumidos de provedores públicos de API de terceiros.