Giter Site home page Giter Site logo

jonnynabors / retroquest Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fordlabs/retroquest

0.0 2.0 0.0 542 KB

RetroQuest is a website that enables teams to run retrospectives online. Check out our README for more!

License: Apache License 2.0

Java 39.48% Shell 0.59% JavaScript 0.49% TypeScript 41.89% HTML 7.37% CSS 10.17%

retroquest's Introduction

Welcome to the RetroQuest repo!

Build Status

RetroQuest is a website that enables teams to run retrospectives online.
A retrospective is a meeting that’s held at the end of an iteration on Agile teams.
During the retro, the team reflects on what happened in the iteration and identifies actions for improvement going forward.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Dependencies

What you need to install before building our project. This guide will assume you have a basic understanding of Git operations.

  1. Java Development Kit (JDK) 8
  2. Lombok
  3. Docker and Docker Compose (Which is included in the desktop docker applications for Mac/Windows) or MariaDB
  4. Node.js

Build the Backend with Gradle

  1. Open a terminal in the api directory (location of gradle.build)
  2. 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

Build the Frontend with npm

  1. Open a terminal in the ui directory (location of package.json)
  2. Run npm install to install the dependencies
  3. 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

Running the application locally can be done with either an H2 in-memory database or with a docker container of MySQL.

In-Memory

The simplest way to get the application spun up is by using the in-memory database:

SPRING_PROFILES_ACTIVE=h2 ./gradlew bootRun

The schema produced for H2 may not conform exactly to the MySQL schema used in production.

Docker

Running the application locally with MySQL requires a running instance of the Docker MySQL container:

docker-compose up

Start the backend with Gradle:

./gradlew bootRun

Frontend

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

Running the Backend Tests

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

Running the Frontend Tests

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

Running the E2E 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

Connecting to the local Database

The application uses a MariaDB instance. The connection properties can be found in the application's property file.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for contributing, including how to fork and submit pull requests.

Built With

  • Angular - Frontend Javascript framework
  • node.js - JavaScript runtime engine
  • Gradle - Dependency management
  • Spring - Development framework

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.