/ScheduleForYou

Schedule For You: An easy-to-use scheduling application for personal and professional appointments.

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

Budapesti Műszaki Szakképzési Centrum
Neumann János Informatikai Technikum
Szakképesítés neve: Szoftverfejlesztő és -tesztelő
Száma: 5-0613-12-03

VIZSGAREMEK

Schedule For You

Click to see the source

Warning
This Project is intended to run on linux. See Why

Quick Navigation

✒️ About The Project

Schedule For You is a versatile and user-friendly application designed to simplify your daily scheduling needs. The application is built to provide users with an easy-to-use platform to manage their schedules effectively. With Schedule For You, you can easily organize your personal and professional appointments in one convenient location.

🧰 Technologies that we used

🏗️ Building the application

Prerequisites

Building For Development

  1. Make sure the project is not running in the docker
  2. Navigate to src/laravel-vue
  3. Run ./start-dev.sh

Building Manually For Development

  1. Make sure the project is not running in the docker
  2. Navigate to src/laravel-vue
  3. Copy .env.example to .env
  4. Start the application docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
  5. Log into fish shell docker-compose exec app fish
  6. Install composer install
  7. Generate key php artisan key:generate
  8. Migrate the database php artisan migrate:fresh --seed
  9. Install node packages npm i
  10. Start Vite dev mode npm run dev

Building For Production

  1. Make sure the project is not running in the docker
  2. Navigate to src/laravel-vue
  3. Run ./start-prod.sh

Building Manually For Production

  1. Make sure the project is not running in the docker
  2. Navigate to src/laravel-vue
  3. Copy .env.example to .env
  4. Start the application docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
  5. Log into fish shell docker-compose exec app fish
  6. Install composer install
  7. Generate key php artisan key:generate
  8. Migrate the database php artisan migrate:fresh --seed
  9. Install node packages npm i
  10. Build the application npm run build

Having troubles?

Are you trying to run it on an ARM CPU?

  1. Remove Project Containers from docker docker-compose down
  2. Go to src/laravel-vue/docker-compose.yml file
  3. Uncomment this part of the code
  4. Try again

Having permission problems?

  1. Remove Project Containers from docker docker-compose down
  2. Remove Mysql Folder src/laravel-vue/docker/mysql
  3. Change the user ownership for the whole project chown -R 1000:1000 <project name>
    Example chown -R 1000:1000 ScheduleForYou/
  4. Try Again

Did you rename app container?

  1. Remove Project Containers from docker docker-compose down
  2. Go to src/laravel-vue/docker/nginx/conf.d/default.conf file
  3. Go to this line and rename app container name to your container name.
    Example From fastcgi_pass app:9000 To fastcgi_pass my_app_name:9000
  4. Try again

Did you rename db (database) container?

  1. Remove Project Containers from docker docker-compose down
  2. Go to src/laravel-vue/.env file
  3. Go to this line and rename db container name to your container name.
    Example From DB_HOST=db To DB_HOST=my_db_name
  4. Try again

Do you want frontend to load assets from a different URL?

  1. Remove Project Containers from docker docker-compose down
  2. Go to src/laravel-vue/.env file
  3. Add a new line ASSET_URL=<your URL>
    Example ASSET_URL=https://example.com
  4. Try again

Did you get the error Permission denied?

  1. Login to Fish as root docker-compose exec -u root app fish
  2. Try again

⌨️ Useful Commands

Log Into Fish Shell

  1. Initialize the project
  2. Run docker-compose exec app fish

Save Database tables to the seeder

  1. Initialize the project
  2. Log Into Fish shell docker-compose exec app fish
  3. Run php artisan iseed <table name 1>,<table name 2>,<table name 3>
    Example php artisan iseed users,personal_access_tokens

Export a Postman collection

  1. Initialize the project
  2. Log Into Fish shell docker-compose exec app fish
  3. Export php artisan export:postman
  4. Import collection into Postman

Register an Account on the terminal

Create Admin account

  1. Initialize the project
  2. Log Into Fish shell docker-compose exec app fish
  3. Run php artisan register:admin
Usage:
  register:admin [options]

Options:
  -u, --username[=USERNAME]  
  -e, --email[=EMAIL]        
  -p, --password[=PASSWORD]  

Create User account

  1. Initialize the project
  2. Log Into Fish shell docker-compose exec app fish
  3. Run php artisan register:user
Usage:
  register:user [options]

Options:
  -u, --username[=USERNAME]  
  -e, --email[=EMAIL]        
  -p, --password[=PASSWORD]  

📂 Application ports

  • Website: 80
  • Vite: 5000 (development only, In production doesn't work/used)
  • PhpMyAdmin: 5001
  • DB (MySql): 33061

Warning
If these ports already in use on your machine then change them in .env file

👤 PhpMyAdmin Users

Root user

  • Username: root
  • Password: root_password

Simple user

  • Username: laravel
  • Password: laravel

Change user/password

  1. Initialize the project
  2. Open .env file
  3. Change DB_USERNAME=<simple username>
  4. Change DB_PASSWORD=<simple user password>
  5. Change MYSQL_ROOT_PASSWORD=<root passowrd>

⚠️ Running the Application On Windows

Because the application uses many small files the coping between the Windows filesystem (NTFS) and Docker container filesystem (ext4) makes it run slower. By making the Os filesystem and the Docker containers filesystem the same the application will run much quicker.

For example, when we used wsl on Windows. We saw a speedup difference. Because wsl uses ext4 filesystem.

🧪 Run Unit Tests

PHPUnit (Laravel tests)

Unit test

  1. Initialize the project
  2. Login To Fish shell docker-compose exec app fish
  3. Run php artisan test
Did the test fail?
  1. In Fish shell run npm run dev (Keep it running)
  2. Try again

Vitest (Vue tests)(WIP)

Unit test

  1. Initialize the project
  2. Login To Fish shell as root docker-compose exec -u root app fish
  3. Run npm run test

Coverage test

  1. Initialize the project
  2. Login To Fish shell as root docker-compose exec -u root app fish
  3. Run npm run test:coverage

📖 Documentation

Functional specification (WIP)

Open Docs

Download and view file.

Swagger (API Docs)(WIP)

  1. Initialize the project
  2. Build swagger docs docker-compose exec -u root app php artisan l5-swagger:generate
  3. Navigate to site <your ip>:<WEB_PORT>/api/docs
    Example localhost:80/api/docs

Database Dump

Open Dump

Database Diagram

Database Diagram

🛠️ Development Tools Used

Idea's

Programs

Os

🗣️ Collaboration tools

👥 Made By

  • Gáspár Róbert
  • Palánki Szűcs Donát
  • Balázs Bence