Skip to content

Latest commit

 

History

History
281 lines (187 loc) · 11.3 KB

readme.md

File metadata and controls

281 lines (187 loc) · 11.3 KB

Facilita Diário

  1. Visão Geral do Sistema
  2. Requisitos do Sistema
  3. Instalação e Configuração de Ambiente de Produção
  4. Arquitetura do Sistema
  5. Funcionalidades

Visão Geral do Sistema

Descrição do Projeto

O projeto "Facilita Diário" foi desenvolvido com o objetivo de otimizar o processo de coleta de dados da Superintendência da Imprensa Oficial do Estado de Mato Grosso (IOMAT). A proposta central deste sistema é realizar a captura e armazenamento das publicações dos Diários Oficiais no banco de dados da plataforma, proporcionando, posteriormente, a utilização desses dados em leituras dinâmicas e no envio automatizado de notificações. Essa automação visa garantir maior eficiência no gerenciamento das informações, além de permitir uma consulta ágil e organizada dos registros.

Funcionalidades Principais

As funcionalidades do sistema incluem o armazenamento dos dados obtidos da IOMAT e sua posterior manipulação conforme necessário. Essa manipulação abrange o envio de notificações por meio de e-mails, bem como a disponibilização de dados através de APIs, permitindo seu uso por sistemas externos.

Tecnologias Utilizadas

Linguagens de Programação

Servidor:

  • PHP

Cliente:

  • TypeScript
  • CSS3
  • HTML5

Frameworks e Bibliotecas

Servidor:

  • LaravelV11

Cliente:

  • NodeJS
  • NextJs
  • TailwindCSS
  • Shadcn
  • Playwright

Banco de Dados #

  • MariaDB
  • MySQL
  • Postgres

Serviços de Notificações e APIs

API:

  • Sanctum

E-Mail:

  • SMTP
  • Mailgun
  • Postmark
  • SES
  • Sendmail
  • Mailtrap
  • Log
  • Array

Ambiente de Desenvolvimento

  • Visual Studio Code

Outras Tecnologias

  • Redis
  • Memcached
  • Docker

Requisitos do Sistema

Sistema Operacional

  • Linux (Ubuntu, Debian, CentOS, etc.) é preferível em ambientes de produção devido à compatibilidade com Docker e facilidade de configuração de Redis e Memcached.

  • macOS e Windows são viáveis para desenvolvimento local, mas podem exigir algumas otimizações adicionais.

Hardware Recomendado

Desenvolvimento Local

  • CPU: Mínimo de 4 núcleos (quad-core) para execução suave de Docker, Redis, Memcached, e Laravel.

  • Memória RAM: Mínimo de 8 GB. Recomenda-se 16 GB para um ambiente mais responsivo, especialmente ao usar vários containers Docker simultaneamente.

  • Armazenamento: 20-50 GB de espaço livre, dependendo do tamanho da aplicação e dos volumes Docker.

  • Rede: Conexão estável à internet para baixar imagens Docker e atualizar pacotes.

Produção

  • CPU: 4-8 núcleos (ou mais, dependendo da carga).

  • Memória RAM: Mínimo de 8 GB, recomendado 16 GB ou mais para grandes aplicações ou muitas conexões simultâneas.

  • Armazenamento: SSD para melhorar o desempenho do banco de dados e leitura/gravação de arquivos. Tamanho depende da quantidade de dados processados, mas comece com 50 GB.

  • Rede: Rede de baixa latência para acesso rápido ao Redis e Memcached.

Docker

  • Docker Engine: Versão 20.10 ou superior.

  • Docker Compose: Versão 1.29 ou superior (para orquestrar containers de Laravel, Redis e Memcached).

Note

Certifique-se de que o sistema tem suporte para a execução de contêineres e que as permissões estão configuradas corretamente.

Redis

  • Versão: Redis 6 ou superior.

  • Memória: A quantidade de memória necessária para Redis depende de como os dados são armazenados. Para cargas pequenas, 512 MB a 1 GB são suficientes. Para sistemas mais pesados, a memória pode chegar a vários GBs.

  • Porta: Redis opera na porta 6379 por padrão, certifique-se de que essa porta está liberada no firewall.

Memcached

  • Versão: Memcached 1.5 ou superior.

  • Memória: Memcached é altamente dependente de memória. Mesmo em sistemas pequenos, é recomendável alocar pelo menos 512 MB a 1 GB para caches menores. Para caches grandes, 4-8 GB.

  • Porta: Memcached usa a porta 11211 por padrão.

Laravel

  • PHP: Versão 8.0 ou superior.

  • Extensões PHP:

    • pdo_mysql para o MySQL/MariaDB.
    • redis para comunicação com Redis.
    • memcached para comunicação com Memcached.
    • openssl, mbstring, tokenizer, json, xml, ctype, bcmath, entre outras extensões Laravel requeridas.
  • Banco de dados: MySQL, MariaDB, ou PostgreSQL.

    • Memória: Recomenda-se alocar no mínimo 2 GB para o banco de dados em ambientes de desenvolvimento. Produção pode exigir mais, dependendo da carga de dados.

Outros

  • Nginx ou Apache: Para servir a aplicação Laravel.

  • Supervisor (para gerenciar jobs e filas no Laravel).

  • Certificados SSL (em produção, para HTTPS).

Resumo dos Requisitos de Hardware (Produção)

  • CPU: 4-8 núcleos.

  • RAM: 16 GB ou mais.

  • Armazenamento: SSD com pelo menos 50 GB.

  • Sistema Operacional: Linux (Ubuntu 20.04 LTS ou similar).

Instalação e Configuração de Ambiente de Produção

1. Clonando o Projeto

git clone https://github.com/Luis-F-Oliveira/fc-server.git
cd fc-server

2. Instalação Vendor

chmod +x start.sh
sh start.sh

3. Configurando Variáveis de Ambiente

  1. Copie o exemplo .env:
cp .env.example .env
  1. Modifique as variáveis de ambiente, especialmente:
  • Banco de Dados
DB_CONNECTION=
DB_HOST=
DB_PORT=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
  • Redis
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
  • Memcached
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
  1. Construindo e Inicializando os Containers

Agora com o .env configurado e projeto preparado, vamos construir e iniciar os containers Docker.

No diretório raiz do projeto, execute:

docker-compose build
docker-compose up -d
  1. Gerar APP_KEY:
docker-compose exec laravel.prod php artisan key:generate
  1. Rodando as Migrações

Após inicializar os containers, você precisa rodar as migrações para configurar o banco de dados.

docker-compose exec laravel.prod php artisan migrate
  1. Configuração dos Containers

O arquivo docker-compose.yml está configurado para rodar os seguintes serviços:

  • Laravel Service (laravel.prod):

    • Imagem Base: sail-8.3/app, construída a partir do Dockerfile no diretório docker/8.3.

    • Volumes: Monta o diretório do projeto localmente em /var/www/html.

    • Portas: 80 para a aplicação Laravel, e 5173 para o Vite (caso esteja usando).

    • Depende: De redis e memcached.

  • Redis Service (redis):

    • Imagem Base: redis:alpine.

    • Volumens: Dados persistentes armazenados em sail-redis.

    • Porta: 6379 (configurável pelo .env).

    • Healthcheck: Verifica a saúde do Redis com redis-cli ping.

  • Memcached Service (memcached):

    • Imagem Base: memcached:alpine.

    • Porta: 11211 (configurável pelo .env).

Funcionalidades

  • Operações CRUD (Criar, Ler, Atualizar e Excluir): Implementação completa das funcionalidades de manipulação de dados, abrangendo a criação, leitura, atualização e exclusão de registros, incluindo informações coletadas e servidores armazenados no sistema.

  • Envio de Notificações Personalizadas: Sistema automatizado para envio de e-mails personalizados aos destinatários, contendo informações processadas de acordo com os dados relevantes.

  • Desativação de Notificações: Inclusão de links dedicados nos e-mails de notificação, permitindo que os destinatários desativem permanentemente o recebimento de futuras notificações, até que optem por reativá-las.