Skip to content

luarvic/click2approve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dev build status Prod build status

Table of Contents

  1. Click2approve specification.
  2. Demo.
  3. How to run locally.
  4. Architecture and design decisions.

Click2approve Specification

Click2approve is a free, open source, cross-platform document approval system with a responsive user interface that allows you to:

  • Upload documents.
  • Send documents for approval specifying a list of approvers' email addresses.
  • Notify the requesting and approving parties via email.
  • Keep track the approval requests.

Demo

Please, open click2approve.com to check how it works.

How to Run Locally

Prerequisites

Getting Started

1. Clone the Repository

Run in terminal:

git clone [email protected]:luarvic/click2approve.git

2. Open click2approve Directory

Run in terminal:

cd click2approve

3. Build and Run Docker Images

Run in terminal:

docker-compose up -d

4. Verify Running Docker Containers

Run in terminal:

docker ps -a

Wait until all of the following containers are up and running:

  • ui.
  • api.
  • db.

(Find more details about those containers below in Architecture and design decisions.)

5. Open the Web Page

In the web browser open http://localhost:3333/.

You should see a page with click2approve title.

Welcome to the click2approve service! 🎉🎉🎉

Architecture and Design Decisions

The application consists of the following microservices:

  • Client-side UI (React TypeScript v18.2).
  • Server-side API (ASP.NET Core v8.0).
  • Relational database (MySQL 8.3.0).

All microservises are containerized with Docker.

Client-side UI

It provides a graphic interface to allow users to interact with the application via a web browser.

It is written in TypeScript and uses:

The build transforms the TypeScript code into a JavaScripts single-page application (SPA). The ui container hosts Nginx web server that returns the SPA to the users. The SPA handles HTTP requests coming from the users and interacts with the Server-side API microservice.

Server-side API

It provides HTTP endpoints that implement the business logic.

It is written in C# and uses:

The build compiles the C# code into a self-hosted web API application that handles HTTP requests coming from the UI. The application interacts with the relational database and the filesystem to manage user data.

Relational Database

It provides the relational data storage required for system operation.