Este é um aplicativo da Web do Laravel para projetos e questionários de crowdsourcing.
.env.envA oferta do código sob licenças de código aberto inclui muitos benefícios. Desses, os relacionados ao nosso projeto, são:
Instalação oficial do ECAS
Scify Instalação oficial
As instruções de configuração foram divididas em duas seções para maior clareza:
Independentemente do método de instalação, você precisará executar os seguintes comandos para configurar o aplicativo.
Esses comandos devem ser executados fora de qualquer contêiner do Docker:
sudo chown -R ` whoami ` :www-data storage
chmod 775 storage
cd storage/
find . -type f -exec chmod 664 {} ;
find . -type d -exec chmod 775 {} ;Dependendo do método de instalação, você deve executar o restante das etapas no contêiner do Docker ou na sua máquina local.
Nota: Se você estiver usando o Docker Compose, primeiro precisará inserir o contêiner PHP:
docker exec -it crowdsourcing_platform_server bashe depois execute o restante dos comandos.
Se você estiver executando os comandos em sua máquina local, poderá executar os seguintes comandos diretamente.
Se você iniciou o DDEV, execute todos os comandos prefixados com ddev exec .
.envDepois de clonar o projeto, crie um arquivo .env (deve ser uma cópia de .env.example):
cp .env.example .envNo caso de uma instalação que não seja do Docker, você precisará criar um banco de dados para o aplicativo.
No caso de um ambiente do Docker, insira o contêiner crowdsourcing_platform_db e crie um banco de dados chamado crowdsourcing_db_docker :
docker exec -it crowdsourcing_platform_db bashDigite o shell MySQL:
mysql -u root -pEm seguida, execute o seguinte comando mysql:
CREATE DATABASE IF NOT EXISTS crowdsourcing_db_docker;Primeiro, você precisará entrar no contêiner do banco de dados:
docker exec -it crowdsourcing_platform_db bashSe você possui um arquivo mysql dump existente, verifique se está no diretório atual e importe -o para o banco de dados:
mysql -u root -p crowdsourcing_db_docker < dump.sql Em seguida, adicione o seguinte ao arquivo .env :
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=crowdsourcing_db_docker
DB_USERNAME=root
DB_PASSWORD=rootNota: Se você estiver usando o Docker Compose, precisará primeiro entrar no contêiner do servidor :
docker exec -it crowdsourcing_platform_server bashphp artisan migratephp artisan db:seedDigite o contêiner PHP (se estiver usando o Docker Compose):
docker exec -it crowdsourcing_platform_server bashEm seguida, execute os seguintes comandos:
composer install
composer dump-autoloadphp artisan key:generatenpm install
npm run dev # (if in development mode, use for live changes)
npm run build # (if in development mode)
npm run prod # (if in production mode)Por padrão, as imagens são armazenadas no aplicativo/armazenamento/público. Correr
php artisan storage:link.env E então persiste as configurações .env para o cache do Laravel:
php artisan config:cachePara vincular esta pasta ao diretório público
Este aplicativo usa o Socialite Laravel Plugin para lidar com o login social.
Para fazê -lo funcionar em seu ambiente de desenvolvimento, você precisa garantir que você tenha chaves e segredos da API para o Facebook e Twitter (guias aqui e aqui) e que você pode acessar https: //dev.crowdsourcing/ (observe os https) em sua máquina.
Um guia para ativar HTTPs em sua máquina local pode ser encontrado aqui.
Basicamente, você precisa correr
openssl req -new -sha256 -newkey rsa:2048 -nodes
-keyout dev.crowdsourcing.key -x509 -days 365
-out dev.crowdsourcing.crtReference os 2 arquivos gerados no arquivo de configuração NGINX do aplicativo. Certifique -se de alterar a porta para 443, como mostrado abaixo:
server {
listen 443 ssl;
server_name dev.crowdsourcing;
ssl_certificate /path/to/dev.crowdsourcing.crt;
ssl_certificate_key /path/to/dev.crowdsourcing.key;
root /var/www/crowdsourcing/public;
add_header X-Frame-Options "SAMEORIGIN" ;
add_header X-XSS-Protection "1; mode=block" ;
add_header X-Content-Type-Options "nosniff" ;
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri / /index.php? $query_string ;
}
location = /favicon.ico { access_log off ; log_not_found off ; }
location = /robots.txt { access_log off ; log_not_found off ; }
error_page 404 /index.php;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /.ht {
deny all ;
}
}Além disso, certifique -se de reiniciar o nginx, executando
sudo systemctl restart nginx Este aplicativo usa o plug -in Spatie - Laravel Sitemap, para criar o arquivo public/sitemap.xml (que é excluído do Git), que será rasteado pelos mecanismos de pesquisa. Para executar o gerador para a instalação atual do aplicativo, execute o comando Laravel incorporado:
php artisan sitemap:generateEste aplicativo usa o Laravel Pint para executar o estilo de código.
Para executar o Styler, execute:
./vendor/bin/pint --test -v # the --test will not do any changes, it will just output the changes needed
./vendor/bin/pint -v # this command will actually perform the code style changes Este aplicativo usa ESLint e mais bonito para executar o estilo de código.
Para executar o Styler & Formatter, execute:
npm run lint # this command will check the code style
npm run format # this command will format the code style Este projeto usa o modelo de adminlte gratuito.
Também utiliza o bootstrap 4
O aplicativo pode ser ajustado e personalizado para cada instalação. No arquivo .env você pode definir a variável INSTALLATION_RESOURCES_DIR de acordo. Essa variável deve assumir um valor que representa um nome de diretório no diretório resourcess/views/home/partials . Por exemplo, consulte o diretório resourcess/views/home/partials/together . Este diretório deve conter os arquivos parciais da lâmina para a instalação.
Esta parte da documentação descreve a estrutura do diretório do aplicativo Laravel.
É principalmente escopo para os diretórios e arquivos personalizados que são usados no aplicativo. Para a estrutura geral do diretório Laravel, consulte a documentação oficial.
├── app # Laravel application directory
│ ├── BusinessLogicLayer # Business Logic Layer classes (services that contain the business logic and delegate from Controllers towards the Data Access Layer)
│ ├── Http/Controllers # Controllers directory (classes that handle the HTTP requests, perform the necessary validations/operations and return the responses)
│ ├── Http/Middleware # Middleware directory (classes that handle the HTTP requests before they reach the Controllers)
│ ├── Models # Models directory (ORM classes that represent the database tables and contain the relationships between them)
│ ├── Notifications # Notifications directory (classes that handle the notifications, like emails)
│ ├── ViewModels # View Models directory (classes that contain the data that will be passed to the views)
│ ├── Repository # Repository directory (classes that handle the database operations and contain the DB/ORM queries)
│ resources # Resources directory (contains the views, assets, front-end files, and other resources)
│ ├── views # Views directory (contains the blade files that are used to render the HTML)
│ ├── assets # Assets directory (contains the front-end assets like CSS, JS, images, etc.)
│ ├── js # JavaScript files (contains the Vue.js components and other JS files)
│ ├── sass # SASS files (contains the SASS files that are compiled to CSS)
│ ├── lang # Language files (contains the language files for the translations)
O aplicativo usa o padrão de repositório para separar a lógica de negócios da lógica de acesso a dados.
Todas as operações do banco de dados são tratadas pelas classes do repositório, que contêm as consultas DB/ORM.
Essas classes estão localizadas no diretório de app/Repository e todos estendem a classe app/Repository/Repository .
Cada classe infantil representa uma tabela/entidade de banco de dados e contém as consultas para essa tabela. Essa entidade é definida no diretório de app/Models e é referenciada pela classe de repositório infantil, no método getModelClassName .
Portanto, podemos usar os métodos básicos definidos na classe Repository , como getAll , getById , create , update , sem precisar escrever as mesmas perguntas em cada classe infantil. Também podemos definir consultas personalizadas nas classes crianças ou substituir os métodos básicos, se necessário.
As classes do repositório são usadas pelas classes de camada lógica de negócios, que contêm a lógica de negócios e delegam dos controladores em direção à camada de acesso a dados.
Mais informações sobre o padrão do repositório podem ser encontradas aqui.
Certifique -se de que você limpou qualquer arquivo de cache e configuração:
php artisan cache:clear
php artisan config:clearCrie o arquivo de banco de dados de teste:
touch storage/database_testing.sqliteDê as permissões necessárias ao arquivo de banco de dados de teste:
chmod 777 storage/database_testing.sqliteEm seguida, verifique se você configurou o banco de dados de teste:
Execute as migrações e semeadores para o banco de dados de teste:
php artisan migrate:fresh --seed --env=testing --database=sqlite_testingphp artisan test Você pode executar os testes usando o comando php artisan test , que é um comando Laravel embutido.
E, finalmente, execute os testes:
# Note that you filter the tests by using the --filter flag (without the = sign)
php artisan test --env=testing --filter {METHOD OR CLASS NAME} --coveragerun-tests.sh Você também pode executar os testes usando o script run-tests.sh , que é um invólucro ao redor do comando phpunit.
chmod +x run-tests.sh
./run-tests.sh Isso também pode receber quaisquer argumentos (como o sinalizador --filter ou --coverage ) que você passaria para o comando phpunit.
./run-tests.sh --filter {METHOD OR CLASS NAME}ou
./run-tests.sh --coverageAo usar o Docker Compose, você pode depurar o aplicativo seguindo estas etapas:
docker compose up para iniciar os contêineres..vscode/launch.json com o seguinte conteúdo: {
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
"port" : 9003 ,
"pathMappings" : {
"/var/www" : " ${workspaceFolder} "
},
"log" : true
}
]
}Agora você pode começar a depurar seu aplicativo.
Para depurar os testes:
docker exec -it crowdsourcing_platform_server bash para inserir o contêiner PHP.php artisan app:test --filter {METHOD OR CLASS NAME} . Por exemplo php artisan app:test --filter authenticatedNonAdminUserCannotAccessCreatePage Se você encontrar algum problema, consulte as seguintes etapas:
docker compose logssystemctl status nginx systemctl status php-fpmstorage/logs/laravel.log.env possui as credenciais corretas de banco de dadossystemctl status mysqlnginx -t Para contribuir para o aplicativo, siga estas etapas:
git checkout -b <branch_name> .git commit -m '<commit_message>'git push origin <project_name>/<location>Este projeto é um software de código aberto licenciado sob a licença Apache, versão 2.0.
Este projeto é desenvolvido pelo SCIFY e ECAS e é baseado na estrutura do Laravel. O projeto é mantido pelo SCIFY.
Algumas das imagens usadas no aplicativo são de Freepik.
Sinta -se à vontade para entrar em contato com os mantenedores do projeto: