Skip to content

Application created with PHP (Ports and Adapters Architecture, Postgresql, Tests), Angular (PrimeNG, PrimeIcons, NgxPaginator), Docker, NGINX and more...

License

Notifications You must be signed in to change notification settings

EricNeves/personalFinance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



Personal Finance

Aplicação web desenvolvida com PHP e Angular, destacando a implementação de princípios de componentização no backend, como REP (Release/Reuse Equivalence Principle), CCP (Common Closure Principle) e CRP (Common Reuse Principle), além da adoção do princípio arquitetural Ports and Adapters (Hexagonal) e testes automatizados com Pest.

Data de criação: Oct 20, 2024

1.mov

Intro 📖

Personal Finance é um sistema web desenvolvido com PHP e Angular, concebido para o gerenciamento de finanças pessoais, garantindo que os usuários mantenham o controle financeiro em dia.

No backend o projeto incorpora recursos que foram mencionados no livro Arquitetura Limpa de Uncle Bob, como princípios de componentização, que priorizam a manutenção do código. Em determinados cenários, a manutenção é mais importante do que a reutilização, garantindo que os impactos de mudanças sejam minimizados ao revalidar e reimplantar o código-fonte.

Component Principles

REP (Release/Reuse Equivalence Principle)

  • Do ponto de vista do design e da arquitetura de software, esse princípio significa que as classes e módulos formados em um componente devem pertencer a um grupo coeso. O componente não pode simplesmente consistir em uma mistura aleatória de classes e módulos, mas deve haver algum tema ou propósito abrangente que todos esses módulos compartilhem.

CCP (Common Closure Principle)

  • Esse é o Single Responsibility Principle reformulado para ser aplicável aos componentes. Assim como SRP diz que uma classe não deve conter muitas razões para mudar, CCP diz que um componente não deve ter várias razões para mudar.
  • Quando o código de uma aplicação tem que mudar, é preferível que todas as mudanças ocorram em um componente em vez de serem distribuídas por vários componentes.
  • O CCP determina que todas as classes com probabilidade de mudar pelas mesmas razões sejam reunidas em um só lugar.

CRP (Common Reuse Principle)

  • Segundo esse princípio, as classes e módulos que tendem a ser reutilizados juntos pertecem ao mesmo componente.
  • Classes que possuem um forte aclopamento entre si e são reutilizadas juntas devem pertencer ao mesmo componente.
  • Segundo o CRP, as classes que não têm uma forte ligação entre si não devem ficar no mesmo componente.

Esses princípios, juntamente com outros como o SOLID, facilitam a manutenção e a escalabilidade da aplicação, reduzindo os recursos necessários para criar e manter o software, além de promoverem uma estrutura mais robusta e flexível.

  • Ports and Adapters Architecture
  • Solid Principles
  • Component Principles
  • Automated Tests - (Unit/Functional)
  • PSR 1,4 and 7

No frontend, o projeto adota uma organização modular, separando pages, components, services, models e outros elementos, bem como a manipulação de eventos e ciclo de vida dos componentes.

  • Reactive Forms
  • Services
  • Modules
  • Guards
  • Interceptors
  • Components
  • Utils

Features 🚀

  • Backend
    • PHP 8.2
    • Ports and Adapters Architecture
    • Authentication - JWT
    • Middlewares
    • Routes
    • Http
    • Database
      • Postres:15
    • Dependencies
      • vlucas/phpdotenv: ^5.6
      • ramsey/uuid: ^4.7
      • pestphp/pest: ^3.5
      • mockery/mockery: ^1.6
  • Frontend
    • Angular 17
    • Routes
    • Guards
    • Interceptors
    • Models
    • Services
    • Dependencies
      • ngx-pagination: ^6.0.3
      • primeflex: ^3.3.1
      • primeng: ^17.18.11
      • primeicons: ^7.0.0
  • DevOps
    • Docker
    • Docker Compose
    • Nginx (Reverse Proxy)

How to execute ? 💡

Note

Para garantir a execução bem-sucedida da aplicação, execute o comando abaixo.

# dir
$ cd personalFinance

# docker command
$ docker compose up -d 

Tests 🔋

# enter the container
$ docker exec -it www bash

# run tests
$ composer test

Author 🗿


Eric Neves

License 📋

About

Application created with PHP (Ports and Adapters Architecture, Postgresql, Tests), Angular (PrimeNG, PrimeIcons, NgxPaginator), Docker, NGINX and more...

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published