{"id":20670528,"url":"https://github.com/r4mpo/people-pro","last_synced_at":"2026-04-13T19:32:17.899Z","repository":{"id":196292005,"uuid":"687273331","full_name":"r4mpo/people-pro","owner":"r4mpo","description":"Sistema básico de gestão para múltiplos usuários (SaaS) utilizando Laravel.","archived":false,"fork":false,"pushed_at":"2023-11-05T06:00:54.000Z","size":63671,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T16:46:57.606Z","etag":null,"topics":["api","blade","bootstrap","breeze","chartjs","css3","datatables","font-awesome","html5","javascript","laravel-framework","mvc","mysql","relacionamentos","saas","spatie-laravel-permission","token"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/posts/erick-agostinho-684563227_opa-pessoal-bora-madrugar-estudando-hahaha-activity-7126815456434270208-YBk6?utm_source=share\u0026utm_medium=member_desktop","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r4mpo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-05T02:44:07.000Z","updated_at":"2025-02-14T00:46:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"440981a2-f5ec-4af2-9cc4-5ad46e9654dc","html_url":"https://github.com/r4mpo/people-pro","commit_stats":null,"previous_names":["r4mpo/people-pro"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/r4mpo/people-pro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r4mpo%2Fpeople-pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r4mpo%2Fpeople-pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r4mpo%2Fpeople-pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r4mpo%2Fpeople-pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r4mpo","download_url":"https://codeload.github.com/r4mpo/people-pro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r4mpo%2Fpeople-pro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31768637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","blade","bootstrap","breeze","chartjs","css3","datatables","font-awesome","html5","javascript","laravel-framework","mvc","mysql","relacionamentos","saas","spatie-laravel-permission","token"],"created_at":"2024-11-16T20:21:23.998Z","updated_at":"2026-04-13T19:32:17.868Z","avatar_url":"https://github.com/r4mpo.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Sobre o PeoplePro\n\nO PeoplePro está sendo projetado para ser um software de gestão voltado para empresas, por isso contém gerenciamento de colaboradores, benefícios, cargos e um dashboard ilustrativo. Além disso, o sistema funciona em modelo SaaS, o que possibilita múltiplos usuários, cada um com seus respectivos dados.\n\nConfira as tecnologias utilizadas no projeto\n\n- PHP 8.2.4 e Framework Laravel 10.21.0.\n- HTML5, CSS3, Bootstrap 5, JavaScript Vanilla, JQuery, ChartJS, DataTables.\n- Banco de dados relacional MySQL (PHP MyAdmin).\n\nSobre o desevolvimento\n\n- Laravel Blade foi utilizado no desenvolvimento da camada de visualização.\n- As rotas foram, em sua maioria, definidas no arquivo routes/web.php, por exceção da rota de alimentação dos gráficos no dashboard. Neste caso, foi criado um endpoint em routes/api.php, tendo em vista que os gráficos foram populados via Api Fetch, com JS.\n- Foi utilizado o padrão MVC e estrutura tradicional de um projeto monolítico, por questão da praticidade.\n- O sistema está em fase de desenvolvimento, necessitando de correções em poucos detalhes e de melhorias a serem observadas, mas já está apto para demonstrações.\n- Para autenticação e limitação de níveis de acesso foi utilizado Breeze em conjunto com Spatie Permissions.\n- Utilizei, no front-end, o template free [SB-ADMIN-2](https://startbootstrap.com/theme/sb-admin-2) e fui implementando as modificações necessárias.\n- Validações de formulário foram feitas com o FormRequest do Laravel e comandos artisan personalizados foram criados.\n\n## Objetivo\n\nO objetivo do projeto é a fixação de conhecimentos como padrão MVC, lógica de programação, PHP, MySQL e etc. Portanto, projetei o sistema para uma pequena carga de informações, priorizando a segurança e relacionamentos adequados entre os dados do banco e o usuário responsável, para que nenhum user acesse itens de outro, e para isso foi utilizado métodos como hasOne e hasMany, através do Eloquent do Laravel.\n\n## Conferindo o funcionamento\n\nInicialmente, devemos configurar o .env com a nossa conexão de banco de dados e smtp, após isso devemos rodar os comandos:\n\n- composer install / composer update -\u003e para instalar/atualizar todas as dependências e pacotes laravel.\n- php artisan migrate -\u003e migrará todas tabelas necessárias para seu banco de dados.\n- php artisan app:reproduzir-spatie-no-banco-de-dados (personalizado) -\u003e populando tabelas relacionadas ao Access Control List.\n- php artisan app:gerar-beneficios-no-banco-de-dados (personalizado) -\u003e populando tabela de benefícios disponíveis.\n- php artisan db:seed -\u003e roda as sementes para popularem especificamente (neste caso) a tabela de usuários.\n- php artisan serve -\u003e servindo a aplicação, tornando-a disponível em seu navegador.\n\n\nNo gif abaixo podemos ver o processo de cadastro - onde o usuário preenche o cnpj que será, posteriormente, conferido na api cnpj.ws para preencher os dados na tabela \"empresa\" - e, após isso, acessando as informações de perfil:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/login-e-exibicao-do-perfil.gif\"\u003e\n\u003c/p\u003e\n\nA seguir, confira a funcionalidade relacionada aos benefícios, onde podemos vincular e desvincular os benefícios e o usuário. Como mencionado, o sistema está projetado para pequenas cargas de informações (ou até cargas medianas), portanto utilizei o datatable do próprio template, ao invés de configurá-lo para população com base em API. Desta forma, retornei as informações da forma convencional com Laravel, utilizando foreach nos `\"\u003ctr\u003e\"` de nossa tabela. Além disso, acho interessante ressaltar que os benefícios e o id do usuário responsável são enviados para uma tabela que relaciona os dois.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/beneficios.gif\"\u003e\n\u003c/p\u003e\n\nNa parte de \"Empresa\" dentro do sistema, podemos atualizar as informações da empresa em que estamos relacionados. Faz-se uso de duas APIs, sendo o cnpj.ws e o viacep, de forma que o usuário tenha mais facilidade e perca menos tempo preenchendo os campos do formulário. Quando estas informações são atualizadas com sucesso, elas são salvas no banco de dados, alterando dinamicamente o restante do sistema.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/empresa.gif\"\u003e\n\u003c/p\u003e\n\nNa parte de setores e cargos, há uma relação entre esses dois itens definidos pelo que chamamos de Chave Estrangeira (foreign key), tendo em vista que ambos se completam. Essas duas informações serão utilizadas para cadastrar colaboradores e para os gráficosa analíticos do dashboard. Confira a seguir um CRUD dessas informações e suas respectivas exbições por meio do JQuery DataTables:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/setores-e-cargos.gif\"\u003e\n\u003c/p\u003e\n\nSabe-se que, em uma gestão profissional, existem diversas documentações - muitas vezes financeiras - que precisam ser guardadas (como .pdfs ou arquivos de imagem). Pensando nessa possibilidade, foi desenvolvida a funcionalidade \"Financeiros\" que funciona como um crud de documentações - as quais são armazenadas em uma pasta no projeto e seus nomes são codificados e enviados ao banco de dados.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/financeiros.gif\"\u003e\n\u003c/p\u003e\n\nPor fim, destas funcionalidades padrão de User comum, temos o CRUD completo de colaboradores, o qual consiste numa gama de informações próprias e relacionadas, contando também com o viacep. Essas informações compõem o perfil do profissional de forma visualmente simples dentro da tabela.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/colaboradores.gif\"\u003e\n\u003c/p\u003e\n\nAo retornarmos em \"Geral\", podemos ver um dashboard muito mais completo, com gráficos e cards. Temos a contagem de colaboradores cadastrados ativos x inativos, temos cards ilustrando todos os benefícios aderidos pela empresa e gráficos ilustrando as informações relacionadas à nossa empresa, como a quantidade de colaboradores por setor/cargo, ou estimativas de salário:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/geral.gif\"\u003e\n\u003c/p\u003e\n\nSaindo dessas rotas de user comum, caso você tenha rodado o db:seed como instruído, pode-se efetuar o login como Administrador com o email \"test@example.com\" e a senha \"password\". Ao logar como usuário administrador, temos um controle privilegiado de quem pode acessar qualquer informação, apenas não podemos alterar os cargos padrão do sistema (adm e user comum) e nem modificar o cargo de outros possíveis administradores. Nesta demonstração a seguir, faço o login como usuário admin, crio um perfil de acesso que só possui as permissões para corporação \u003e empresa e o atribuo ao nosso primeiro usuário (comum). A partir daí, o usuário que antes era comum, agora se limita ao acesso que associamos a ele:\n\n\u003cp align=\"center\"\u003e\n    \u003cimg width=\"400\" height=\"300\" src=\"/public/readme-docs/admin.gif\"\u003e\n\u003c/p\u003e\n\n## Considerações\n\nApesar de ainda haverem coisas a se resolverem, como monitorar o consumo na api de cnpj's, ou até melhorias como uma melhor validação para páginas de erros, este projeto me proporcionou uma boa experiência com a fixação de conhecimentos intermediários (porém, sólidos e completos) de PHP e Framework Laravel, permitindo-me ter o contato com funcionalidades múltiplas e explorar regras de negócio da maneira que melhor se aplicassem ao software.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr4mpo%2Fpeople-pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr4mpo%2Fpeople-pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr4mpo%2Fpeople-pro/lists"}