Este é um projeto desenvolvido como um teste técnico, que combina funcionalidades de uma API RESTful com um catálogo web para exibição de filmes em PHP puro.
- O layout da aplicação livre;
- Exibições em telas distintas, deverá ser possível acessar os detalhes e voltar ao catálogo de filmes;
- Em seu backend, crie uma api para consumir a api do Star Wars, podendo utilizar a biblioteca cURL, por exemplo;
- A idade dos filmes deverá ser calculada no backend;
- Seu frontend deve fazer requisições para sua própria api local;
- Crie endpoints distintos para cada tipo de requisição;
- Usar a criatividade e criar mais três features que não estão nesta descrição;
- Utilizar o banco para guardar mais informações, caso tenha necessidade, como erros de retorno da api, por exemplo;
- Estruturar o projeto no padrão MVC;
- Utilizar o PHP 7.4;
- Utilizar Programação Orientação a Objeto;
- Você não poderá utilizar frameworks no PHP, o código terá de ser 100% seu;
- A cada vez que houver interação com a api do projeto, guarde um log na base de dados com dados como: data/hora e solicitação realizada.
O projeto foi baseado na API externa Star Wars API (SWAPI) como fonte de informações sobre filmes da saga Star Wars.
A aplicação exibe todos os filmes da saga em um catálogo ordenado por data de lançamento, mostrando:
- Nome do filme;
- Data de lançamento;
- Resumo.
Ao clicar em "Mais Detalhes", o usuário visualiza uma página detalhada contendo:
- Nome do filme;
- Sinopse;
- Nº do episódio;
- Data de lançamento;
- A idade do filme em anos, meses e dias (calculada no back-end).
- Diretor(a);
- Produtor(es);
- Nome dos personagens;
- Botão de Like e Dislike;
- Indicativo de visualizações.
Além do requisito básico, foram implementadas as seguintes features opcionais:
- Busca simples de filmes;
- Possibilidade de dar like e dislike em filmes;
- Contagem de visualizações (views) de cada filme;
- Registro de logs de erros e eventos relevantes no banco de dados.
- PHP (7.4 ou superior)
- MySQL
- JavaScript
- HTML
- CSS
- JQuery
- Bootstrap
O projeto foi desenvolvido com uso de Orientação a Objetos (OO) e segue o padrão MVC para separação de responsabilidades.
- Banco de dados para armazenar informações sobre filmes, logs de erros e eventos.
- Biblioteca cURL para integração com a API externa SWAPI.
- Docker Compose com uma imagem do MySQL para configuração rápida do ambiente.
- Ao rodar composer install, a migração criará automaticamente o banco de dados e o alimentará com os registros iniciais.
- PHP 7.4 ou superior instalado na máquina.
- Banco de dados MySQL ou MariaDB (caso deseje, pode utilizar o docker-compose do projeto).
- Docker (opcional, para uso do Docker Compose).
- Composer (para gerenciamento de dependências).
- Com o terminal na pasta do projeto, configure as variáveis de ambiente: Copie o arquivo .env.example para .env e configure suas variáveis de ambiente, definindo o acesso ao banco de dados.
cp .env.example .env
- Rode o container: Se estiver utilizando Docker, suba o container MySQL.
docker compose up
- Instale as dependências e rode a migração:
composer install
Ao rodar o comando acima ou composer update, por conveniência após a instalação das dependências, um script sempre realiza o seguinte:
- Cria as pastas public/css e public/js se não houver;
- Copia o arquivo bootstrap.min.css para public/css;
- Copia os arquivos bootstrap.bundle.min.js e jquery.min.js para public/js;
- Roda a migração localizada em database/migrate.php para criação do banco de dados e tabelas.
- Inicie o servidor embutido do PHP:
php -S localhost:8000 -t public
- Acesse a aplicação no navegador:
xdg-open http://localhost:8000/
Adicionar like a um filme: PATCH /api/v1/like/{id}
Adicionar dislike a um filme: PATCH /api/v1/dislike/{id}
Este projeto está licenciado sob a MIT License.