If you prefer english version, click here
- Tabela de Conteúdos
- Sobre este projeto
- Ambiente mínimo
- Pacotes incluídos no projeto
- Clonando o projeto
- Criando o arquivo de parâmetros/configuração do projeto
- Preparando o banco de dados
- Executando os comandos de instalação dos pacotes e configurações iniciais
- Outras configurações
- Executando a aplicação
- Comandos adicionados ao composer
- Internacionalização
- CRUD
- Contribuições
- Código de Conduta
- Vulnerabilidades e Segurança
- Licença
O projeto gennix tem a intenção de ser um ponto de partida para outros projetos baseados no framework Laravel. Este boilerplate contém uma série de pacotes que permitirá acelerar a construção dos seus projetos WEB.
Para instalar e utilizar o gennix a configuração mínima exigida é:
- PHP: 7.2
- Laravel: 7.*
Este projeto utiliza os seguintes pacotes de terceiros
- arcanedev/log-viewer
- arcanedev/route-viewer
- arrilot/laravel-widgets
- beyondcode/laravel-self-diagnosis
- binarytorch/larecipe
- creativeorange/gravatar
- davejamesmiller/laravel-breadcrumbs
- jeroennoten/laravel-adminlte
- laravel/socialite
- yajra/laravel-datatables-oracle
- laravel/ui
- maatwebsite/excel
- realrashid/sweet-alert
- renatomarinho/laravel-page-speed
- spatie/laravel-activitylog
- spatie/laravel-backup
- spatie/laravel-medialibrary
- spatie/laravel-sluggable
- h4cc/wkhtmltoimage-amd64
- h4cc/wkhtmltopdf-amd64
- barryvdh/laravel-snappy
- jeremykenedy/laravel-phpinfo
- arryvdh/laravel-debugbar
- barryvdh/laravel-ide-helper
- matt-allan/laravel-code-style
- squizlabs/php_codesniffer
Para utilizar e/ou testar este projeto, você deve digitar as seguintes linhas abaixo no seu terminal
git clone git@github.com:fsclaro/gennix.git
Após concluída a clonagem, você deve realizar a configuração inicial. Para isso siga os passos abaixo:
Estando no terminal e dentro da pasta do projeto, digite a linha abaixo para copiar o arquivo de exemplo de configuração do ambiente
cp .env.example .env
Você pode criar o banco de dados diretamente na linha de comando através da instrução abaixo.
mysql -e 'create database <YOUR_DATABASE_NAME>;' -u <YOUR_MYSQL_USERNAME> -p
Caso você prefira, utilize um programa gerenciador de banco de dados de sua escolha.
Edite o arquivo .env e modifique os parâmetros abaixo, conforme as informações que você utiliza para acessar o seu banco de dados
DB_DATABASE=<YOUR_DATABASE_NAME>
DB_USERNAME=<YOUR_MYSQL_USERNAME>
DB_PASSWORD=<PASSWORD_OF_YOUR_MYSQL_USERNAME>
Os valores iniciais destes parâmetros são:
DB_DATABASE=gennix
DB_USERNAME=homestead
DB_PASSWORD=secret
No terminal execute os seguintes comandos:
composer install
php artisan key:generate
php artisan storage:link
php artisan migrate --seed
No arquivo .env você encontrará outras configurações que podem ser realizadas. Estas estão descritas a seguir.
O parâmetro DEBUGBAR_ENABLED deve ser ativado ou desativado dependendo do ambiente onde você estiver executando o projeto. Para o ambiente de desenvolvimento você pode ativar este recurso, caso necessite realizar depurações durante o criação e testes do seu projeto.
Mas para o ambiente de produção, recomendo fortemente que você deixe desativado para que não ocorram problemas de performance do projeto.
Os valores permitidos para este parâmetro são: true ou false
Se você quiser liberar o acesso dos usuários do sistema através das redes sociais, você deve setar este parâmetro para true. Aos fazer isso, o gennix entenderá que deverá exibir na tela de login os botões das redes sociais para que os usuários possam se identificar desta forma.
Ativando este recurso, você deve obrigatóriamente escolher pelo menos uma das redes sociais disponíveis no gennix, descritas a seguir:
Selecione quais redes sociais serão liberadas para que o usuário possa fazer o login no sistema. Os parâmetros que devem ser configuradas para cada uma delas são:
Rede social | Ativação | Parâmetros de acesso |
---|---|---|
SOCIALITE_FACEBOOK=true | FACEBOOK_CLIENT_ID e FACEBOOK_CLIENT_SECRET | |
SOCIALITE_TWITTER=true | TWITTER_CLIENT_ID e TWITTER_CLIENT_SECRET | |
GitHub | SOCIALITE_GITHUB=true | GITHUB_CLIENT_ID e GITHUB_CLIENT_SECRET |
SOCIALITE_LINKEDIN=true | LINKEDIN_CLIENT_ID e LINKEDIN_CLIENT_SECRET | |
SOCIALIE_GOOGLE=true | GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET |
Para definir os valores do CLIENT_ID e CLIENT_SECRET das suas redes sociais escolhidas, utilize os seguintes links:
Para configurar o acesso através de outras redes sociais, consulte maiores detalhes através deste link.
Para adicionar outras redes sociais, além de criar os parâmetros no arquivo .env, você também deve editar o arquivo /config/services.php e adicionar as entradas equivalentes conforme o exemplo abaixo:
'linkedin' => [
'client_id' => env('LINKEDIN_CLIENT_ID'),
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
'redirect' => env('APP_URL') . '/login/linkedin/callback',
],
Também deverá alterar o arquivo /resources/views/vendor/adminlte/auth/login.blade.php para adicionar o código necessário para que sistema entenda que você está liberando o acesso por uma nova rede social.
Localize no código o trecho onde são tratados os links para acesso pela rede social e acrescente o código como o exemplo abaixo, fazendo-se as adaptações necessárias:
if(env('SOCIALITE_GOOGLE'))
<a href="{{ route('login.social', 'google') }}"
class="btn google-color rounded-circle mx-1">
<i class="fab fa-google"></i>
</a>
endif
IMPORTANTE: A utilização do recurso de login através de redes sociais implementadas no projeto, é única e exclusivamente para realizar a autenticação de acesso. Não foi implementado no projeto a possibilidade de cadastrar novos usuários através das redes sociais. Muito embora seja um recurso que você facilmente implementaria no projeto.
Um dos recursos previstos no gennix é o registro do IP do usuário que está acessando a aplicação. Para isso, são utilizados os serviços do provedor IPIFY. Caso queira alterar o provedor que irá identificar o IP do seu cliente, basta definir a url do mesmo neste parâmetro.
Valor padrão:
EXTERNAL_IP=https://api.ipify.org
Estes parâmetros permitem que você personalize o rodapé da aplicação. Para isso, você tem duas opções:
a) Rodapé centralizado
Para ter um texto que ficará centralizado no rodapé da página, basta você definir o conteúdo no parâmetro FOOTER_CENTER.
b) Rodapé do lado esquerdo e lado direito
A outra opção será você definir o texto que deseja tanto do lado esquerdo quando do lado direito nos parâmetros FOOTER_LEFT e FOOTER_RIGHT respectivamente.
Caso você defina valores para os três parâmetros, o FOOTER_CENTER terá prioridade, ignorando os parâmetros FOOTER_LEFT e FOOTER_RIGHT.
Estes parâmetros aceitam tags HTML para que você possa utilizar a sua criatividade para construir o rodapé da forma mais adequada para a sua aplicação.
Os parâmetros abaixo, permitem que você defina o formato da data e da hora que serão utilizadas na aplicação.
a) DATE_FORMAT - Data no formato dd/mm/aa. Exemplo: 10/05/20
b) DATE_FORMAT_LONG - Data no formato dd/mm/aaaa. Exemplo: 15/08/2020
c) DATE_FORMAT_LONG_LONG - Data no formato dia-da-semana, dd de mês-por-extenso de aaaa. Exemplo: Quinta Feira, 10 de Março de 2020
d) TIME_FORMAT - Hora no formato hh:mm. Exemplo: 10:15
e) TIME_FORMAT_LONG - Hora no formato hh:mm:ss. Exemplo: 21:47:31
Neste link você encontrará como pode personalizar a data e a hora para outros formatos desejados.
Este parâmetro permite que o sistema exiba os recursos onde o usuário poderá escolher em qual linguagem o sistema será exibido.
Os valores possíveis são true ou false. Quando o valor estiver como true o sistema exibirá na tela de login e também no menu superior do dashboard do sistema os flags das linguagens disponíveis. Sendo que a linguagem default do sistema é pt-BR. Atualmente os valores possíveis são pt-BR e en.
Valor Padrão: true
Considerando que você já configurou sem ambiente apache ou nginx para apontar para a sua aplicação, agora você pode testar o projeto. Para isso, utilize um dos usuários abaixo para se identificar na tela de login
Nome do Usuário | Papel | Login | Senha |
---|---|---|---|
Super Admin | Superadmin | superadmin@gennix.test | superman |
Peter Markus | Admin | peter@gennix.test | 12345678 |
Jane Garcez | User | jane@gennix.test | 12345678 |
O gennix possui alguns comandos complementares ao composer. Estes comandos complementares podem ser enconstrados no arquivo composer.json.
Abaixo, descrevo os novos comandos e o que cada um deles fazem.
Após a atualização e/ou instalação dos pacotes, será executado o comando clear-all descrito a seguir.
- artisan clear-compiled
- artisan cache:clear
- artisan route:clear
- artisan view:clear
- artisan config:clear
- composer dumpautoload -o
- artisan config:cache
- artisan route:cache
- artisan ide-helper:generate
- artisan ide-helper:meta
- php-cs-fixer fix app/ --show-progress=estimating
- php-cs-fixer fix config/ --show-progress=estimating
- php-cs-fixer fix database/ --show-progress=estimating
- php-cs-fixer fix resources/ --show-progress=estimating
- php-cs-fixer fix routes/ --show-progress=estimating
- php-cs-fixer fix tests/ --show-progress=estimating
- phpcbf --standard=PSR2 -p app/*
- phpcbf --standard=PSR2 -p database/*
- phpcbf --standard=PSR2 -p resources/*
OBS: os comandos format e beautify necessitam do pacote php-cs-fixer instalado de forma global ou local no seu ambiente. Caso você não tenha este pacote instalado, execute um dos comandos abaixo, conforme sua necessidade, para fazer a instalação.
composer global require friendsofphp/php-cs-fixer
composer require friendsofphp/php-cs-fixer --dev
O projeto gennix está inicialmente configurado para o Português do Brasil. Os parâmetros que definem a língua com a qual o ambiente utilizará estão definidas no arquivo /config/app.php. Sendo que os parâmetros principais são:
a) timezone - America/Sao_Paulo
b) locale - pt-BR
Caso você queira utilizar o sistema em uma língua diferente do Português Brasileiro ou do Inglês, você poderá traduzir os arquivos que contém todas as mensagens exibidas no sistema. Abaixo descrevo os locais onde este arquivos estão localizado e para o que os mesmos são utilizados.
- /resources/lang/pt-BR/gennix.php - contém as mensagens específicas do sistema
- /resources/lang/vendor/adminlte - contém os arquivos de mensagens do adminlte
Este projeto dispõe de um recurso de criação da CRUD básica que permitirá acelerar o desenvolvimento do projeto.
Este recurso é obtido através da execução do seguinte comando:
php artisan gennix:crud <options> <name>
Onde:
- name - é o nome da classe do CRUD que deseja criar.
IMPORTANTE: O nome da classe deve estar no singular sendo que a primeira letra em Maiúscula. Maiores detalhes você pode ver aqui.
- options - pode ser:
Chave | O que é criado | Local onde os arquivos serão criados |
---|---|---|
--controller | Controller | /app/Http/Controller |
--model | Model | /app |
--request | Requests (update e store) | /app/Http/Requests |
--views | Views (index, create, edit, show) | /resources/views/admin |
--breadcrumbs | Breadcrumbs para todas as operações do CRUD | /routes |
--routes | Rota do tipo resources | /routes |
--migrations | Migration da classe | /database/migrations |
--permissions | ||
--all | Todos os recursos acima descritos | --- |
Exemplo:
php artisan gennix:crud --all Estoque
Caso você necessite personalizar as templates que são utilizadas para a geração dos arquivos criados, basta editar os stubs que estão localizados em /resources/views/stubs.
Depois que você criou o novo CRUD, não se esqueça de editar o arquivo config/adminlte.php e na seção menu adicionar e/ou alterar os parâmetros para que o novo CRUD apareça no menu do sistema. Localize o trecho abaixo e faça os ajustes necessários.
// [
// 'text' => 'audit',
// 'icon' => 'fa fa-fw fa-binoculars',
// 'route' => 'audit.index',
// 'can' => 'audit-access'
// ],
Também, se for o caso, crie as permissões e papéis necessários para o novo CRUD.
Caso você tenha interesse em colaborar com as melhorias do projeto gennix com boas ideias ou informando bugs ou qualquer outro tipo de problema, por favor leia o guia de contribuições (em inglês) e registre uma PR (pull request) ou uma Issue.
É muito importante que você leia o código de conduta (em inglês) para que exista uma coexistência pacífica entre os membros participantes deste projeto.
Se você descobrir alguma vulnerabilidade de segurança neste projeto, por favor, envie um email para Nando Salles.
Este projeto é licenciado sobre as normas do MIT license (em inglês).