Ini adalah aplikasi web Laravel untuk proyek crowdsourcing dan kuesioner.
.env.envMenawarkan kode di bawah lisensi sumber terbuka mencakup banyak manfaat. Dari mereka, yang terkait dengan proyek kami, adalah:
Instalasi Resmi ECAS
Scify Instalasi Resmi
Instruksi pengaturan telah dibagi menjadi dua bagian untuk kejelasan:
Terlepas dari metode instalasi, Anda harus menjalankan perintah berikut untuk mengatur aplikasi.
Perintah ini harus dijalankan di luar setiap wadah 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 {} ;Bergantung pada metode instalasi, Anda harus menjalankan sisa langkah baik di wadah Docker atau pada mesin lokal Anda.
Catatan: Jika Anda menggunakan Docker Compose, Anda pertama -tama harus memasukkan wadah PHP:
docker exec -it crowdsourcing_platform_server bashdan kemudian jalankan sisa perintah.
Jika Anda menjalankan perintah di mesin lokal Anda, Anda dapat menjalankan perintah berikut secara langsung.
Jika Anda sudah memulai DDEV, Anda harus menjalankan semua perintah yang diawali dengan ddev exec .
.envSetelah mengkloning proyek, buat file .env (harus berupa salinan .env.example):
cp .env.example .envDalam hal instalasi non-docker, Anda perlu membuat database untuk aplikasi.
Dalam hal lingkungan Docker, masukkan wadah crowdsourcing_platform_db , dan buat database bernama crowdsourcing_db_docker :
docker exec -it crowdsourcing_platform_db bashMasukkan shell mysql:
mysql -u root -pKemudian, jalankan perintah MySQL berikut:
CREATE DATABASE IF NOT EXISTS crowdsourcing_db_docker;Pertama, Anda harus memasukkan wadah DB:
docker exec -it crowdsourcing_platform_db bashJika Anda memiliki file dump MySQL yang ada, pastikan itu ada di direktori saat ini, dan mengimpornya ke dalam database:
mysql -u root -p crowdsourcing_db_docker < dump.sql Kemudian, tambahkan yang berikut ke file .env :
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=crowdsourcing_db_docker
DB_USERNAME=root
DB_PASSWORD=rootCatatan: Jika Anda menggunakan Docker Compose, Anda harus terlebih dahulu untuk memasukkan wadah server :
docker exec -it crowdsourcing_platform_server bashphp artisan migratephp artisan db:seedMasukkan wadah PHP (jika menggunakan Docker Compose):
docker exec -it crowdsourcing_platform_server bashKemudian, jalankan perintah berikut:
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)Secara default, gambar disimpan di aplikasi/penyimpanan/publik. Berlari
php artisan storage:link.env Dan kemudian bertahan pengaturan .env ke cache laravel:
php artisan config:cacheUntuk menautkan folder ini dengan direktori publik
Aplikasi ini menggunakan plugin Socialite Laravel untuk menangani login sosial.
Untuk membuatnya bekerja di lingkungan pengembangan Anda, Anda perlu memastikan bahwa Anda memiliki kunci dan rahasia API untuk Facebook dan Twitter (panduan di sini dan di sini), dan bahwa Anda dapat mengakses https: //dev.crowdsourcing/ (perhatikan https) di mesin Anda.
Panduan untuk mengaktifkan HTTPS di mesin lokal Anda dapat ditemukan di sini.
Pada dasarnya, Anda perlu berlari
openssl req -new -sha256 -newkey rsa:2048 -nodes
-keyout dev.crowdsourcing.key -x509 -days 365
-out dev.crowdsourcing.crtReferensi 2 file yang dihasilkan dalam file konfigurasi nginx aplikasi. Pastikan Anda mengubah port ke 443 seperti yang ditunjukkan di bawah ini:
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 ;
}
}Juga, pastikan untuk memulai kembali Nginx, dengan berlari
sudo systemctl restart nginx Aplikasi ini menggunakan plugin Sitemap Spatie - Laravel, untuk membuat file public/sitemap.xml (yang dikecualikan dari GIT), yang akan dirangkak oleh mesin pencari. Untuk menjalankan generator untuk instalasi aplikasi saat ini, jalankan perintah Laravel tertanam:
php artisan sitemap:generateAplikasi ini menggunakan Laravel Pint untuk melakukan gaya kode.
Untuk menjalankan styler, jalankan:
./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 Aplikasi ini menggunakan Eslint dan lebih cantik untuk melakukan gaya kode.
Untuk menjalankan styler & formatter, jalankan:
npm run lint # this command will check the code style
npm run format # this command will format the code style Proyek ini menggunakan template adminlte gratis.
Itu juga memanfaatkan bootstrap 4
Aplikasi dapat diubah dan dipersonalisasi untuk setiap instalasi. Di file .env Anda dapat mengatur variabel INSTALLATION_RESOURCES_DIR yang sesuai. Variabel ini harus mengambil nilai yang mewakili nama direktori di Direktori resourcess/views/home/partials . Misalnya, lihat Direktori resourcess/views/home/partials/together . Direktori ini harus berisi file blade parsial untuk instalasi.
Bagian dokumentasi ini menjelaskan struktur direktori aplikasi Laravel.
Sebagian besar terselubung ke direktori khusus dan file yang digunakan dalam aplikasi. Untuk struktur Direktori Laravel Jenderal, silakan merujuk ke dokumentasi resmi.
├── 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)
Aplikasi menggunakan pola repositori untuk memisahkan logika bisnis dari logika akses data.
Semua operasi basis data ditangani oleh kelas repositori, yang berisi kueri DB/ORM.
Kelas -kelas ini terletak di direktori app/Repository , dan semuanya memperluas kelas app/Repository/Repository .
Setiap kelas anak mewakili tabel/entitas basis data dan berisi kueri untuk tabel itu. Entitas ini didefinisikan dalam direktori app/Models , dan dirujuk oleh kelas repositori anak, dalam metode getModelClassName .
Jadi, kita dapat menggunakan metode dasar yang didefinisikan dalam kelas Repository , seperti getAll , getById , create , update , tanpa harus menulis pertanyaan yang sama di setiap kelas anak. Kami juga dapat menentukan kueri khusus di kelas anak, atau mengganti metode dasar jika diperlukan.
Kelas Repositori digunakan oleh kelas Logic Layer Business, yang berisi logika bisnis dan mendelegasikan dari pengontrol menuju lapisan akses data.
Informasi lebih lanjut tentang pola repositori dapat ditemukan di sini.
Pastikan Anda telah menghapus file cache dan konfigurasi:
php artisan cache:clear
php artisan config:clearBuat file database tes:
touch storage/database_testing.sqliteBerikan izin yang diperlukan ke file database pengujian:
chmod 777 storage/database_testing.sqliteKemudian, pastikan Anda telah mengatur database pengujian:
Jalankan migrasi & seeders untuk database pengujian:
php artisan migrate:fresh --seed --env=testing --database=sqlite_testingphp artisan test Anda dapat menjalankan tes menggunakan perintah php artisan test , yang merupakan perintah Laravel bawaan.
Dan akhirnya, jalankan tes:
# 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 Anda juga dapat menjalankan tes menggunakan skrip run-tests.sh , yang merupakan pembungkus di sekitar perintah phpunit.
chmod +x run-tests.sh
./run-tests.sh Ini juga dapat mengambil argumen apa pun (seperti -bendera --filter atau --coverage ) yang akan Anda lewati ke perintah phpunit.
./run-tests.sh --filter {METHOD OR CLASS NAME}atau
./run-tests.sh --coverageDengan menggunakan Docker Compose, Anda dapat men -debug aplikasi dengan mengikuti langkah -langkah ini:
docker compose up untuk memulai wadah..vscode/launch.json dengan konten berikut: {
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
"port" : 9003 ,
"pathMappings" : {
"/var/www" : " ${workspaceFolder} "
},
"log" : true
}
]
}Sekarang Anda dapat mulai men -debug aplikasi Anda.
Untuk men -debug tes:
docker exec -it crowdsourcing_platform_server bash untuk memasuki wadah PHP.php artisan app:test --filter {METHOD OR CLASS NAME} . Misalnya php artisan app:test --filter authenticatedNonAdminUserCannotAccessCreatePage . Jika Anda menghadapi masalah apa pun, lihat langkah -langkah berikut:
docker compose logssystemctl status nginx dan systemctl status php-fpmstorage/logs/laravel.log.env Anda memiliki kredensial basis data yang benarsystemctl status mysqlnginx -t Untuk berkontribusi pada aplikasi, ikuti langkah -langkah ini:
git checkout -b <branch_name> .git commit -m '<commit_message>'git push origin <project_name>/<location>Proyek ini adalah perangkat lunak bersumber terbuka yang dilisensikan di bawah lisensi Apache, versi 2.0.
Proyek ini dikembangkan oleh Scify dan ECA dan didasarkan pada kerangka kerja Laravel. Proyek ini dipertahankan oleh Scify.
Beberapa gambar yang digunakan dalam aplikasi berasal dari Freepik.
Jangan ragu untuk menghubungi pengelola proyek: