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.
Please, visit click2approve.com to check how it works.
- You have installed the latest version of Docker Desktop.
- You have installed a Git client.
Run in terminal:
git clone git@github.com:luarvic/click2approve.git
Run in terminal:
cd click2approve
Run in terminal:
docker-compose up -d
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.)
In the web browser open http://localhost:3333/.
You should see a page with click2approve
title.
Welcome to the click2approve
service! 🎉🎉🎉
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.
It provides a graphical interface, allowing users to interact with the application via a web browser.
It is written in TypeScript and uses:
- React library;
- Material UI CSS framework;
- MobX state management framework.
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.
It provides HTTP endpoints that implement business logic.
It is written in C# and uses:
- ASP.NET Core framework.
- Entity Framework.
- ASP.NET Identity framework.
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.
It provides the relational data storage required for system operation.