- Laravel 12
- React 19
- Nodejs (only for Dev)
- PHP 8.2 or later
- MySQL / MariaDB
git clone https://github.com/HOAIAN2/college-quiz-app.git
- Run
./scripts/install.sh
to generate .env file and install libs for both server and client. - Edit Enviroment variables in .env file.
DB_CONNECTION=mariadb
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=college-quiz-app
DB_USERNAME=admin
DB_PASSWORD=123456789
- Remember to update your correct timezone
APP_TIMEZONE=UTC
- Remember to update demo password if you run application in demo mode.
DEMO=true
DEMO_PASSWORD="123456789"
- Create database, seed data
php artisan migrate
php artisan db:seed
- Build
Some free hosting like infinityfree, 000webhost only allow GET, POST method so you can config override method when call api on client
VITE_DEV_PORT=3000
VITE_DEV_SERVER_PORT=8000
VITE_OVERRIDE_HTTP_METHOD=true
./scripts/build.sh
This project combine both frontend and backend, maybe it some extensions not correctly. Here is my vscode settings for this project:
{
"Laravel.basePath": "backend",
"typescript.tsdk": "./frontend/node_modules/typescript/lib",
}
Run Deploy file to build and compress all necessary files to app.tar.gz
./scripts/deploy.sh
You can host front end and backend in 2 domain
VITE_API_HOST=
Docker settings save in docker
directory, Nginx
connect to php-fpm
via unix socket instead of normal TCP socket. You can custom php-fpm
settings by modify the zz-docker.conf
, but you have to create the file first by copy content from zz-docker.example.conf
I'm only setup Nginx
with php-fpm
and Redis
so you have to host your database yourself, or just modify the docker-compose.yml
or using any other way to host you database.
You can host this application with docker
by run simple command
./scripts/install.sh --docker # Create docker config files
./scripts/build.sh --docker
docker compose up -d
This application still works even if you do not set up a cron job. But you should set up a cron job to clean up data, files, etc.
Cron job file stored in docker/crontab
Use any tool or cli like mysqldump
, mariadb-dump
. I already write a NodeJS wrapper base on mysqldump
for better performance. https://github.com/HOAIAN2/mysql-backup
Full review (Vietnamese) at Youtube: https://www.youtube.com/watch?v=Xkss5f4N0vw