/kanban-board

Single-click full-stack application (Postgres, Spring Boot & Angular) using Docker Compose

Primary LanguageJava

Kanban Application

This is a simple implementation of a Kanban Board, a tool that helps visualize and manage work. Originally it was first created in Toyota automotive, but nowadays it's widely used in software development.

A Kanban Board is usually made of 3 columns - TODO, InProgress & Done. In each column there are Post-it notes that represents task and their status.

As already stated this project is an implementation of such board and made of 3 separate Docker containers that holds:

  • PostgreSQL database
  • Java backend (Spring Boot)
  • Angular frontend

The entry point for a user is a website which is available under the address: http://localhost:4200/

Kanban

More information about this project you can found in blog post: https://medium.com/@wkrzywiec/how-to-run-database-backend-and-frontend-in-a-single-click-with-docker-compose-4bcda66f6de


Prerequisites

In order to run this application you need to install two tools: Docker & Docker Compose.

Instructions how to install Docker on Ubuntu, Windows , Mac .

Dosker Compose is already included in installation packs for Windows and Mac, so only Ubuntu users needs to follow this instructions .

How to run it?

An entire application can be ran with a single command in a terminal:

$ docker-compose up -d

If you want to stop it use following command:

$ docker-compose down

kanban-postgres (Database)

PostgreSQL database contains only single schema with two tables - kanban and task table.

After running the app it can be accessible using this connectors:

  • Host: localhost
  • Database: kanban
  • User: kanban
  • Password: kanban

Like other parts of application Postgres database is containerized and the definition of its Docker container can be found in docker-compose.yml file.

kanban-postgres:
    image: "postgres:9.6-alpine"
    container_name: kanban-postgres
    volumes:
      - kanban-data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    environment:
      - POSTGRES_DB:kanban
      - POSTGRES_USER:kanban
      - POSTGRES_PASSWORD:kanban

kanban-app (REST API)

This is a Spring Boot (Java) based application that connects with a database that and expose the REST endpoints that can be consumed by frontend. It supports multiple HTTP REST methods like GET, POST, PUT and DELETE for two resources - kanban & task.

Full list of available REST endpoints could be found in Swagger UI, which could be called using link: http://localhost:8080/api/swagger-ui.html

swagger-ui

This app is also put in Docker container and its definition can be found in a file kanban-app/Dockerfile.

kanban-ui (Frontend)

This is a real endpoint for a user where they can manipulate their kanbans and tasks. It consumes the REST API endpoints provided by kanban-app.

It can be entered using link: http://localhost:4200/