Skip to content

Free, open-source, cross-platform document approval system with a responsive UI

License

Notifications You must be signed in to change notification settings

luarvic/click2approve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

233 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dev build status

Table of Contents

  1. Product overview.
  2. Demo.
  3. How to run locally.
  4. Architecture and design decisions.

Product Overview

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 by specifying a list of approvers' email addresses.
  • Notify requesting and approving parties via email.
  • Keep track of approval requests.

Demo

Please visit click2approve.com to see how it works.

⭐ If you find this project useful, please give the repository a star to support ongoing development and visibility.

How to Run Locally

Prerequisites

Getting Started

1. Clone the Repository

Run in a terminal:

git clone git@github.com:luarvic/click2approve.git

2. Open click2approve Directory

Run in a terminal:

cd click2approve

3. Build and Run Docker Images

Run in a terminal:

docker compose build --no-cache
docker compose up -d

Wait until you see:

 ✔ Network click2approve_default Created
 ✔ Container click2approve-db-1  Created
 ✔ Container click2approve-api-1 Created
 ✔ Container click2approve-ui-1  Created

4. Verify Running Docker Containers

Run in a terminal:

docker ps -a

Make sure all of the following containers are up and running:

  • click2approve-api-1.
  • click2approve-db-1.
  • click2approve-ui-1.

(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 the 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 microservices are containerized with Docker.

Client-side UI

It provides a graphical interface, allowing 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 JavaScript 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 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.