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.
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.
- You have installed the latest version of Docker Desktop.
- You have installed a Git client.
Run in a terminal:
git clone git@github.com:luarvic/click2approve.gitRun in a terminal:
cd click2approveRun in a terminal:
docker compose build --no-cache
docker compose up -dWait until you see:
✔ Network click2approve_default Created
✔ Container click2approve-db-1 Created
✔ Container click2approve-api-1 Created
✔ Container click2approve-ui-1 Created
Run in a terminal:
docker ps -aMake 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.)
In the web browser open http://localhost:3333/.
You should see a page with the 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 microservices 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.