Criando uma plataforma do 0 - Dia 1
Tags: laravel, fullstack, programming, product
Published: 2023-11-04 14:03:44

Aqui vou documentar todo o processo de criação de um sistema de ponta a ponta, desde o levantamento inicial, passando pela escolha de tecnologias, desenvolvimento do BackEnd, FrontEnd e deploy da aplicação.

Nesse primeiro dia, eu criei um mapa mental do objetivo e o fluxo básico da aplicação, descrevendo as tecnologias que vão ser usadas durante o desenvolvimento. Abaixo tem uma imagem desse mapa

![Mapa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dl4unl56vanxtb59hjq2.png)

O objetivo é simples, eu quero um lugar onde eu possa colocar o código de uma ação que comprei, a quantidade, o valor pago por cada ação e que caso queira fazer o upload da nota de corretagem, também seja possível. De começo é para ser algo simples e com o passar do tempo e conforme eu for estudando novas coisas, quero ir melhorando esse produto.

A escolha de tecnologias foi com base em gosto, eu gosto muito de PHP e principalmente do Laravel, banco de dados o escolhido foi PostgreSQL, pois queria tentar algo novo já que estou acostumado a usar MySQL como banco de dados e a AWS vai ser para usar o S3 para guardar as notas de corretagem. O FrontEnd ainda não decidi se vou usar algo novo ou algo que já estou acostumado como um NextJS da vida, mas isso vai ser decisão para ser tomada mais para frente.

## Dia 1 - parte 2

Aproveitando o embalo, dei o start no projeto, comecei criando um projeto Laravel na minha máquina, usei o próprio [exemplo]([Installation - Laravel 10.x - The PHP Framework For Web Artisans](https://laravel.com/docs/10.x/installation#your-first-laravel-project)) do site para gerar o projeto. Também entrei no [Hub do Docker]([Docker Hub](https://hub.docker.com/_/postgres/)) para poder criar um container com o banco de dados Postgres.
Com o projeto gerado e o banco de dados de pé, eu fiz os seguintes passos:
- Primeiro fui no meu arquivo `.env` e mudei as configurações para acessar o banco de dados. Coloquei o driver do Postgres que é o `pgsql`, mudei a porta já que o Postgres usa a 5432 e mudei o usuário e senha para os valores que coloquei quando levantei o container
- Depois no arquivo de migrate que o próprio Laravel gera para o modelo de `User` (que ele também já gera sozinho) eu fiz umas mudanças, primeiro eu mudei para a coluna ser um UUID e ser a chave primária da tabela, também acrescentei os campos `first_name` e `last_name`, retirei a verificação obrigatória de e-mail e o campo `remember_token`. Com isso já estava na forma como planejei inicialmente, aí foi só rodar o comando `php artisan migrate` e pronto, já tenho minha tabela pronta.
- Precisei fazer umas alterações no meu Model User, a primeira coisa foi colocar uma Trait `HasUuid` para falar para o nosso modelo que vamos usar UUIDs, também adicionei os campos novos dentro do array `$fillable` e removi os campos que eu não vou utilizar.
- E para finalizar o Laravel fornece uma Factory já pronta para o nosso usuário, só precisei remover alguns campos que eu não irei utilizar e adicionar os novos e depois disso no meu arquivo DatabaseSeeder, eu fiz o uso do nosso modelo para gerar usuários automaticamente e rodei um `php artisan db:seed` para persistir os novos usuários no banco de dados.

## Conclusão
Acho que para um primeiro dia está bom, a próxima parte vai ser fazer o CRUD de usuários e estou animado para continuar com o projeto!