RetroQuest is a website that enables teams to run retrospectives online and in a fun way. It is designed to accomodate both local and distributed teams.
If you are unfamiliar with what a retrospective is, it is a meeting that is held at the and of each iteration on a Agile team. Retrospectives are designed to allow the team time to decompress and reflect upon what happened during the iteration and indentify actions that can improve the team as a whole.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
What you need to install before building our project. This guide will assume you have a basic understanding of Git operations.
- OpenJDK11
- Lombok
- Docker and Docker Compose (Which is included in the desktop docker applications for Mac/Windows) or MariaDB
- Node.js
- Open a terminal in the api directory (location of gradle.build)
- Build the project with the following command:
./gradlew clean build
This will trigger the backend tests to run.
- If you do not wish to run the tests and only want to build the application, use
./gradlew clean assemble
- Open a terminal in the ui directory (location of package.json)
- Run
npm install
to install the dependencies - Build the project with the following command:
npm run build-prod
- This will place the compiled output into the
api/src/main/resources/static
and will be bundled in the next backend build
Running the application locally can be done with either an H2 in-memory database or with a docker container of MySQL.
The simplest way to get the application spun up is by using the in-memory database via Gradle:
./gradlew withH2
or
SPRING_PROFILES_ACTIVE=h2 ./gradlew bootRun
The schema produced for H2 may not conform exactly to the MySQL schema used in production.
Running the application locally with MySQL requires a running instance of the Docker MySQL container:
docker-compose up
Start the backend with Gradle:
./gradlew withDockerDb
or
SPRING_PROFILES_ACTIVE=dockerdb ./gradlew bootRun
If you are only working on the backend, a static build will be accessible from localhost:8080 after running npm run build-prod
Start the frontend with npm for live development:
npm run start
This will start the frontend with a proxy to direct all requests to localhost:8080 where the api is running. The application will start at localhost:4200
This project includes unit tests, API tests, and Selenium tests.
After navigating to the api
folder, the following Gradle targets will run the various test suites:
./gradlew test -- Java Unit Tests
./gradlew apiTest -- API Level integration tests with and H2 database
SPRING_PROFILES_ACTIVE=docker ./gradlew apiTest -- API Level integration tests with the Docker MySQL database
To run both the backend api and unit tests at once:
./gradlew runAllTests
Navigate to the ui
folder, making sure you've already followed the build steps for the frontend and run any of the following commands:
npm run unit -- Runs all tests and closes
npm run test -- Hot runs all tests
Start the backend application
./gradlew bootRun
Start the database
cd /api && docker-compose up
Run the end to end tests
cd /ui && npm run e2e
The application uses a MariaDB instance. The connection properties can be found in the application's property file.
Please read GOOGLE_APP_ENGINE.md for details on deploying Retroquest to Google App Engine.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for contributing, including how to fork and submit pull requests.