https://github.com/luarvic/click2approve
Free, open-source, cross-platform document approval system with a responsive UI
https://github.com/luarvic/click2approve
approval-process approval-workflow document-management electronic-document file-uploader sign-documents website
Last synced: 5 months ago
JSON representation
Free, open-source, cross-platform document approval system with a responsive UI
- Host: GitHub
- URL: https://github.com/luarvic/click2approve
- Owner: luarvic
- License: mit
- Created: 2024-01-27T08:33:08.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-26T13:40:01.000Z (6 months ago)
- Last Synced: 2024-12-26T14:27:57.399Z (6 months ago)
- Topics: approval-process, approval-workflow, document-management, electronic-document, file-uploader, sign-documents, website
- Language: TypeScript
- Homepage: https://click2approve.com
- Size: 3.05 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README

# Table of Contents
1. [Click2approve specification.](#click2approve-specification)
2. [Demo.](#demo)
3. [How to run locally.](#how-to-run-locally)
4. [Architecture and design decisions.](#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, visit [click2approve.com](https://click2approve.com/) to check how it works.
# How to Run Locally
## Prerequisites
- You have installed the latest version of [Docker Desktop](https://docs.docker.com/get-docker/).
- You have installed a [Git client](https://git-scm.com/downloads).## Getting Started
### 1. Clone the Repository
Run in terminal:
```bash
git clone [email protected]:luarvic/click2approve.git
```### 2. Open `click2approve` Directory
Run in terminal:
```bash
cd click2approve
```### 3. Build and Run Docker Images
Run in terminal:
```bash
docker-compose up -d
```### 4. Verify Running Docker Containers
Run in terminal:
```bash
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](#architecture-and-design-decisions).)
### 5. Open the Web Page
In the web browser open [http://localhost:3333/](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](https://docs.docker.com/).
## Client-side UI
It provides a graphical interface, allowing users to interact with the application via a web browser.
It is written in [TypeScript](https://www.typescriptlang.org/) and uses:
- [React](https://react.dev/) library;
- [Material UI](https://mui.com/material-ui/) CSS framework;
- [MobX](https://mobx.js.org/react-integration.html) state management framework.The build transforms the TypeScript code into a JavaScript single-page application (SPA). The `ui` container hosts [Nginx](https://www.nginx.com/) 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#](https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/) and uses:
- [ASP.NET Core](https://dotnet.microsoft.com/en-us/apps/aspnet) framework.
- [Entity Framework](https://learn.microsoft.com/en-us/ef/).
- [ASP.NET Identity](https://learn.microsoft.com/en-us/aspnet/core/security/authentication/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.## Relational Database
It provides the relational data storage required for system operation.