Arquitetura de SoftWare

Arquitetura de Software envolve a organização e comunicação das partes de um sistema

O que é Laravel?

Laravel é um framework de desenvolvimento web em PHP que segue o padrão de arquitetura MVC, o que significa que ele separa as partes principais de um site - como a lógica de como as coisas funcionam, a aparência visual e o armazenamento de informações - para que os desenvolvedores possam trabalhar de forma mais organizada. Ele também possui recursos úteis, como o Eloquent ORM, que ajuda a lidar com informações do banco de dados de maneira mais eficiente, e o sistema Blade de templates, que simplifica a criação da aparência das páginas.

O que é MVC?

MVC (Model-View-Controller) é um padrão de arquitetura de software amplamente utilizado no desenvolvimento de aplicativos, especialmente em desenvolvimento web. Ele divide um aplicativo em três componentes principais:

Model (Modelo):

O Modelo é responsável por gerenciar os dados e a lógica de negócios do aplicativo. Ele representa o estado e a estrutura dos dados, bem como as operações que podem ser executadas neles. O Modelo não sabe sobre a interface do usuário ou como os dados são apresentados.

View (Visualização):

A Visualização é responsável por exibir os dados ao usuário. Ela representa a interface do usuário e a forma como as informações são apresentadas. A Visualização não lida com a lógica de negócios ou manipulação de dados.

Controller (Controlador):

O Controlador atua como intermediário entre o Modelo e a Visualização. Ele recebe as interações do usuário na interface do usuário, processa essas interações e atualiza o Modelo de acordo. Ele também pode ser responsável por direcionar as ações apropriadas a serem executadas no Modelo ou na Visualização.

O padrão MVC tem como objetivo separar as preocupações e promover a modularidade do código. Isso facilita a manutenção, a escalabilidade e a colaboração entre os desenvolvedores, pois cada componente tem uma função claramente definida. O Modelo lida com os dados, a Visualização lida com a apresentação e o Controlador lida com a lógica de coordenação.

O MVC é frequentemente usado em frameworks como Laravel (para PHP), Ruby on Rails (para Ruby), Django (para Python) e muitos outros, mas também pode ser aplicado manualmente em qualquer projeto que busque uma organização mais clara e eficiente do código.

Passo 1 – Criar o projeto

Para esse exemplo, vou criar um novo projeto. Se você já possui um projeto e quer adicionar o login, recomendo fazer uma cópia ou, caso esteja usando o Git, criar uma branch para testar esse recurso.

#criar um projeto usando o Laravel Installer
        laravel new autenticacao
        
        #criar um projeto usando o composer
        composer create-project laravel/laravel autenticacao

Passo 2 – Criar e configurar o banco de dados

Abra o gerenciador do MySQL ou Postgres e crie um banco de dados com o nome que achar adequado. Neste exemplo estou usando o mesmo nome do projeto: autenticacao.

Abra o arquivo .env e ajuste as configurações do banco de dados, segundo o SGBD que de sua preferência:

DB_CONNECTION=mysql
            DB_HOST=127.0.0.1
            DB_PORT=3306
            DB_DATABASE=breeze_project
            DB_USERNAME=root
            DB_PASSWORD=password
DB_CONNECTION=pgsql
            DB_HOST=127.0.0.1
            DB_PORT=5432
            DB_DATABASE=breeze_project
            DB_USERNAME=postgres
            DB_PASSWORD=password

Agora vamos executar as migrations que já vem predefinidas para criar o schema do Banco de Dados. Note que o comando deve ser executando estando dentro da pasta do projeto.

 php artisan migrate

Passo 3 – Instalar o Laravel Breeze

Agora vamos instalar o pacote Breeze, ou seja, baixar as dependências necessárias, usando o seguinte comando:

composer require laravel/breeze --dev

Apesar das dependências estarem instaladas, a estrutura da autenticação, ou seja, views, controllers e outros elementos ainda não foram criados. Para isso, digite o seguinte comando:

php artisan breeze:install 

O próximo passo é executar os comandos para baixar as dependências JS que, no caso do Breeze, usa o TailwindCSS para estilizar as páginas. Vejamos:

#baixa as dependências JS
            npm install
            
            #gera os arquivos CSS e JS otimizados
            npm run dev
            

O comando npm run dev irá iniciar um servidor NPM. Basta fechá-lo.

Agora precisamos executar o servidor para verificar se realmente deu certo. Execute o seguinte comando:

php artisan serve
Definição de Rotas do Laravel

Definição de Rotas do Laravel

Rota Raiz ('/')

Quando alguém acessa a página inicial do seu site, a função anônima definida será executada, retornando uma visualização chamada 'welcome'. Isso é geralmente a página inicial padrão gerada pelo Laravel.

Rota do Painel ('/dashboard')

A função anônima definida será executada quando alguém acessar a URL '/dashboard'. Ela retornará uma visualização chamada 'dashboard'. No entanto, essa rota tem um middleware que verifica se o usuário está autenticado e verificado antes de permitir o acesso à visualização.

Rotas Agrupadas por Middleware de Autenticação

As próximas rotas são agrupadas sob o middleware 'auth'. Isso significa que todas essas rotas requerem que o usuário esteja autenticado para acessá-las. Dentro desse grupo, você tem rotas relacionadas à edição, atualização e exclusão do perfil do usuário. Elas apontam para métodos do ProfileController.

Inclusão das Rotas de Autenticação Geradas pelo Laravel

A última linha, require __DIR__.'/auth.php';, inclui um conjunto de rotas de autenticação geradas automaticamente pelo Laravel. Essas rotas estão no arquivo auth.php no mesmo diretório onde esse arquivo de rotas está localizado. Elas lidam com as funcionalidades padrão de autenticação, como login, registro, recuperação de senha etc.

Documentação Oficial Laravel

Exemplo Criação App Produto