The goal of this project is to access my proficiency in software engineering that is related to the daily work that is done at Fastamoni.
Clone or download this repo into your local machine and follow the instructions below to configure the server or you can use this link to view the project https://fastamoni-inc-coding-exercise.onrender.com
Please note that the LIVE URL might not still be active when you visit this project some time in the future. As at now 17/04/2024, it is active.
-
Import
schema.sql
into your SQL server to create the Database and necessary Tables -
Rename
.env.sample
to.env
and provide values to the variables that are defined in this file -
Run
npm install
to install the dependencies -
Start the server with
npm run start
and make a call tohttp://127.0.0.1:5000
in your browser to confirm if installation is successful.
Below you can see the available endpoints and what they do.
Please note that all endpoints have this base URL
http://127.0.0.1:5000/api
-
/auth/signup
This endpoint enables a user to sign up on the server. It does not require authentication.- Request Method:
POST
- Request Method:
-
/auth/login
This endpoint enables a user to login to his account on the server. It does not require authentication.-
Request Method:
POST
-
Once a user is logged in, an
accessToken
will be returned and you need to pass in this token to the request header as a bearer token in order to be authenticated. For example:Bearer uytrFGBVCDRUI7654567yGBN8754rg...
-
-
/account/createPIN
This endpoint enables a loggedIn user to create a transaction PIN. It requires authentication.-
Request Method:
POST
-
With this PIN, the user can be able to donate some money to a beneficiary (another user)
-
-
/wallets/getBalance
This endpoint enables a user to retrieve his wallet balance. It requires authentication.-
Request Method:
GET
-
Once a user signs up on the server, an
NGN
wallet is automatically created with a default balance of500,000
and this is enough to test donations to a different user.
-
-
/donations/create
This endpoint enables a user to create a donation to a different user (beneficiary). It requires authentication-
Request Method:
POST
-
Before a donation is created, you must set up a PIN because this PIN will be used to verify and authenticate the user as funds are about to leave his wallet.
-
-
/donations/getAll
This endpoint enables a user to get the records of all donations he has made.-
Request Method:
GET
-
You can filter the records by the date and it supports pagination too. Please refer to
fastaMoni.postman_collection.json
for more information
-
-
/donations/getSingle
This endpoint enables a user to retrieve a single donation using the ID of the donation.- Request Method:
GET
- Request Method:
-
/donations/total
This endpoint enables a user to get the total donations he has made- Request Method:
GET
- Request Method:
Import the collection fastaMoni.postman_collection.json
into POSTMAN and follow the instructions below
-
Signup on the server by creating 2 accounts, one for yourself and the other for a beneficiary.
-
Log into your own account and create a PIN
-
Once you have created your PIN, head over to the donations endpoint and create a new donation to your beneficiary and when you create 2 or more donations, you will receive an email, with a special thank you message.
-
Check your NGN wallet balance to confirm the funds you have left and then login as your beneficiary and check the wallet balance to confirm the funds he received.
- NodeJS
- Express
- MySQL
- JWT (for authentication)
- Artillery (for testing)
Please use this link to learn more about the exercise.