Healthcare Appointment & Scheduling Web Application. Provides an easy way to schedule patients, providers, or businesses for mass drive through pandemic testing. Powered by Rocket Mortgage Technology and Easy!Appointments. Runbooks for the end to end process which includes scheduling, test site logistics, and data orchestration, all can be found at https://www.masstestingplatform.com/
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
Prerequisites
Software that is needed to get started:
- Docker
- Git
Installation
Initial Steps
- Clone the repository to your local machine
git clone https://github.com/QuickenLoans/MassTestingPlatform
- Enter the newly created directory
cd MassTestingPlatform
- Setup environment file
cp .sample.env .env
- Edit
.env
with appropriate values
- Build the docker containers (may take some time to initialize)
docker-compose build --build-arg CERT_URL=
- Stand up the docker container
docker-compose up
- Open up a new terminal and get into the container
docker exec -it mtp_app bash
- Build application
- Easy All-in-One Build Script
bin/build.sh
- Manual steps (if you don't want to use
build.sh
)- Run composer to install PHP packages
composer install
- Run npm to install Node packages
nvm install 8.6.0
nvm use 8.6.0
npm install
- Run gulp to build css
npm rebuild node-sass
gulp sass
- Run initial db migration
php src/index.php migrate update
- Run composer to install PHP packages
- Easy All-in-One Build Script
- Restart Docker Container (Needed to remount php and node modules)
Ctrl+C
in your docker-compose terminal to kill instance- Re-run
docker-compose up
in your docker-compose terminal - Re-run
docker exec -it mtp_app bash
in your other terminal
- Visit http://localhost/installation/index in your browser!
- Follow the on screen installation guide
Reoccurring Steps (After initial install)
-
Stand up the docker container
docker-compose up
-
Open up a new terminal and get into the container
docker exec -it mtp_app bash
-
Build application with All-in-One Build Script
bin/build.sh
-
Develop and Engineer!
-
Finish and kill your instance
Ctrl+C
in your docker-compose terminal to kill instance
MySQL Admin App (Adminer)
This environment comes with Adminer, a web app to manage the local MySQL database.
After starting the docker containers, visit the following URL with password: veryhardpassword
http://localhost:8080/?server=database&username=easyapp&db=easyapp
Troubleshooting
If you are having issues with your environment consider the following:
- Have you
fetched
andpulled
down thelatest
master branch? - Have you built the app lately? Run
./bin/build.sh
in the container. - You can run
docker-compose build --no-cache --build-arg CERT_URL=
to force rebuild the containers. - As a last resort, you can completely delete and start over using
docker rm -v mtp_database
. Use only if all options have been tried because this deletes the existing database.
Running the tests
Unit Testing
WIP
Integration Testing
WIP
End to End (E2E) Testing
WIP
Docker (Fork Notes)
To start over and delete the existing database (fresh install), run:
docker rm -v mtp_database
To start Easy!Appointments using Docker in development configuration, with source files mounted into container, run:
docker-compose up
Production deployment can be made by changing required values in .env file (DB_PASSWORD, APP_URL, APP_PORT) and running:
docker-compose -f docker-compose.prod.yml up -d
Database data will be stored in named volume easyappointments_easy-appointments-data
, and app storage (logs, cache, uploads) in easyappointments_easy-appointments-storage
.
To find where exactly they are stored, you can run:
docker volume inspect easyappointments_easy-appointments-storage
Production containers will automatically be restarted in case of crash / server reboot. For more info, take a look into docker-compose.prod.yml
file.
Migration
Updating your Verison
In order to seamlessly upgrade your instance, run the following
# Run the following in the docker container
# Perform migration command
php src/index.php migrate update
# You will see a successful message
# {"status":"success","message":"Version is now 13"}
In order to migrate to particular version, run the following
# Run the following in the docker container
php src/index.php migrate updateTo {version_number}
Checking your Version
In order to check the current version of your instance
Use this URL: http://localhost/migrate
# Use the CLI
php src/index.php migrate
# {"expectedVersion":13,"actualVersion":"12"}
Built With
- easyappointments.org - The web schedule app we forked from
Notes from Fork
Organize your business! Exploit human resources that can be used in other tasks more efficiently
Easy!Appointments is a highly customizable web application that allows your customers to book appointments with you via the web. Moreover, it provides the ability to sync your data with Google Calendar so you can use them with other services. It is an open source project and you can download and install it even for commercial use. Easy!Appointments will run smoothly with your existing website, because it can be installed in a single folder of the server and of course, both sites can share the same database.
You will find the latest release at easyappointments.org. If you have problems installing or configuring the application take a look on the wiki pages or visit the official support group. You can also report problems on the issues page and help the development progress.
User Feedback
Whether it is new ideas or defects, your feedback is highly appreciated and will be taken into consideration for the following releases of the project. Share your experience and discuss your thoughts with other users through communities. Create issues with suggestions on new features or bug reports.
Translate Easy!Appointments
As of version 1.0 Easy!Appointments supports translated user interface. If you want to contribute to the translation process read the get involved page for additional information.