Bem-vindo(a) ao processo seletivo da 3Pontos Tech. Este desafio avalia o seu domínio das tecnologias listadas, sua capacidade de criar um código "limpo" e de comunicar decisões de forma clara.
Este projeto é um clone simplificado do Reddit, com foco em funcionalidades essenciais de comunidades, postagens, comentários e votos.
A aplicação permite que usuários explorem subreddits (comunidades temáticas), publiquem conteúdo em Markdown, interajam por meio de comentários e realizem votos positivos ou negativos nos posts.
O objetivo é replicar, de forma objetiva e enxuta, a estrutura básica de um fórum de discussão como o Reddit, servindo como base para estudos, testes técnicos ou evolução futura.
| Item | Descrição |
|---|---|
| Linguagem | PHP 8.3^ |
| Framework | Laravel 12 + FilamentPHP 4 |
| Database | SQLite ou Postgres |
| Front-end | Blade e Tailwind v4 |
Note
Use SQLite para agilizar a configuração. Caso deseje, inclua instruções para trocar facilmente para PostgreSQL ou MySQL com Docker.
- Modelagem de dados – consistência, normalização e previsibilidade.
- Laravel / FilamentPHP – uso adequado de recursos nativos (Eloquent, policies, actions, widgets, etc.).
- Design do Sistema – Como deixar o sistema robusto.
- TailwindCSS – domínio dos utilitários essenciais para layout e tipografia.
- Qualidade de código – legibilidade, organização em camadas, nomenclatura coerente.
- Commits – adoção de Conventional Commits e histórico incremental.
- Documentação – arquivo
DEVELOPMENT.mdescrito por você (sem geração automática por IA) contendo:- Visão geral da solução.
- Justificativa das principais decisões técnicas.
- Anotações do processo
- Capacidade analítica – explicação dos trade-offs escolhidos.
- Painel Administrativo - uso do FilamentPHP para gerenciar subreddits e posts.
Warning
Não nos importamos com o uso de I.A desde que você saiba justificar suas decisões. O principal é ter certeza da entrega feita e isso será questionado durante a avaliação.
Warning
Não será permitido uso de Plugins externos fora o MediaLibrary para agilizar a implementação de uma feature.
No projeto disponível no Figma, você encontrará versões da interface, cada uma representando um nível de complexidade e refinamento visual correspondente a diferentes níveis de senioridade.
Senha do figma: 'pontopontoponto'
Com base nessas telas, você deverá analisar a UI e modelar o sistema seguindo os critérios definidos abaixo:
| Nível | Foco principal |
|---|---|
| Básico | Conseguir entregar as funcionalidades centrais usando recursos básicos de Laravel, Filament e Tailwind. |
| Intermedário | Ênfase em modelagem de dados sólida, separação clara de camadas, e testes de unidade básicos. |
| Avançado | Arquitetura escalável, uso avançado de Filament (Resources, Panels, Actions), políticas de segurança, testes abrangentes, CI/CD simples. |
Estamos iniciando um novo projeto: um fórum de perguntas e respostas inspirado no Reddit baseado em subreddits/tópicos.
A criação desses subreddits deverá ser dinâmica usando o FilamentPHP.
Todo o desenvolvimento será guiado pelo layout disponível no Figma, que apresenta três páginas principais, repetidas em diferentes estágios de evolução visual:
- Home/Dashboard: exibe todas as postagens para usuários logados ou não logados.
- Subreddit: página inicial de uma comunidade, listando todos os seus posts.
- Post: visualização de um post específico pertencente a uma comunidade/produto.
Serão dois ambientes: admin (Filament) e front-end (Blade + Tailwind).
Você deverá utilizar o layout como base para modelar os dados do projeto, utilizando sua análise visual e interpretação.
Você também poderá utilizar uma I.A para modelagem, porém caso use, deixe explicito no
DEVELOPMENT.mdquais foram suas decisões de aceite e o que foi feito por você.
Cada etapa implementada deve ser versionada com commits no seguinte formato:
git commit -m "feat(panel): sua-mensagem-de-preferencia-em-ingles"
git commit -m "feat(component): sua-mensagem-de-preferencia-em-ingles"
git commit -m "feat(anything): sua-mensagem-de-preferencia-em-ingles"
Caso algum ponto do projeto não esteja claro, registre suas suposições no final do
README.md.
- Crie um novo repositório utilizando este template (no topo da pagina, no botão verde "Use this template");
- Crie uma branch
develope faça todo o desenvolvimento nela; - Abra um Pull Request para a branch
maindo seu repositório pessoal. - Envie um e-mail para
[email protected]com uma breve apresentação sobre você e o link do Pull Request. - Aguarde nossa resposta.
Data de entrega: 01/10/2025 às 13:00h Você pode acompanhar outras submissões e discussões sobre no Discord da 3Pontos.
Caso avance para a próxima fase, você participará de uma conversa com o time técnico. Vamos discutir suas decisões, entender seu raciocínio e trocar ideias de forma descontraída e técnica ao mesmo tempo.
Data das entrevistas: 02/10 ~ 03/10 na parte da tarde.
Neste momento, você terá um bate-papo com as lideranças da empresa para avaliarmos o alinhamento cultural. Por mais que pareça uma etapa “clichê”, ela é fundamental: buscamos pessoas que compartilhem dos nossos valores e estejam prontas para crescer com o time.
Se tudo estiver alinhado, você receberá nossa proposta para integrar o time oficialmente e colar com a gente!
- Filament Brasil
- Filament Docs
- https://refactoring.guru/
- http://br.phptherightway.com/
- https://www.php-fig.org/psr/psr-12/
- @jeffersongoncalves pelo setup inicial do Filament V4 Beta.
- @nexturhe4rt pelo UI feita.
- @gvieira18 - vulgo usb777 pelo setup inicial do projeto.