SOA-based distributed online payment system. Intended for generic educational institutions transactions.

Although Paidify should ideally be mounted in distributed servers accross a network, here is a guide to run it locally.
This process is guided by the run-local
app. It will start 11 terminals, one for each service instance.
- Node.js.
- Docker along with Docker Compose.
-
Clone
run-local
repository.git clone https://github.com/Paidify/run-local.git
-
Install dependencies and start the application.
npm install && npm start
-
Follow the steps shown in the application.

You will press enter to confirm launching each terminal. It is recommended to leave a reasonable amount of time between each service, so that your PC can run them properly.

- Bank Database: Representation of both East Bank and Western Bank databases. MongoDB with Docker.
- East Bank API: Representation of API provided by East Bank. Node.js.
- Western Bank API (same code as East Bank API): Representation of API provided by Western Bank. Node.js.
- Paidify DB and University DB: Paidify central database, including University database schema. MySQL with Docker.
- Monitor DB: Database for monitoring service instances. Used for Circuit Breaker pattern. MySQL with Docker.
- Gateway: API Gateway to handle incoming request from client application. Node.js.
- Authentication Service: Service for user authentication. Node.js.
- Queries Service: Service for handling general queries from client application. Node.js.
- Payment Service: Service for handling payment transactions. Node.js.
- Card Balance Service: Service for handling card balance queries. Node.js.
- Client application: Client application for Paidify. Next.js.


+----------------+ +----------------+ +---------------+
| Owner | | CardFranchise | | CardType |
|----------------| |----------------| |---------------|
| owner_id (PK) | | franchise_id(PK)| | type_id (PK) |
| name | | franchise | | type |
| email | +----------------+ +---------------+
| DNI |
+----------------+
|
|
+-------v--------+ +---------------+
| Card | | Deal |
|----------------| |---------------|
| card_id (PK) | | deal_id (PK) |
| owner_id (FK) | | ref_number(UQ)|
| exp_month | | successful |
| exp_year | | eff_date |
| cvv | | amount |
| franchise_id(FK)| | balance |
| type_id (FK) | | dues_number |
| amount | | fulfilled |
| card_number(UQ)| +---------------+
+----------------+






If Nodemailer is set up in Payment Gateway, an email will be sent to the desired email address.

