Nexus Account is an API which can be used to perform different accounting tasks such as creating Journal, Ledger, Trial Balance, Profit & Loss Account and Balance Sheet. It is also useful to create Flexible Budget or an Inventory.
To work with the api you must have to install the following:
- NodeJS - Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
- MongoDB Server - NoSql Database and server
- Postman - API development environment
Before doing anything you have to clone or download(and unzip) the project folder, open terminal and navigate to the project folder and run:
npm install
This will install all the dependencies required by the project.
To start using this API, start your local database server, open terminal and navigate to the project folder and run:
npm run start
If an error occur, check your database server or check if you have installed the prerequisites correctly.
If there was no error, open Postman and create and send a new get request to:
http://localhost:3000/
Expected Output:
{
message: "Welcome!"
}
Firstly, you have to create a new user for working with the API.
Send a post request to:
http://localhost:3000/user/register
Along with 'id' and 'password' field in the 'x-www-form-urlencoded' option for the body of the request in postman:
id | demouserid |
password | demo |
Expected Output:
{
"success": "User registered and Logged In!"
}
Once you get this message, you are ready to work with the api.
Url for all these routes is http://localhost:3000
and parameters for POST request are sent through 'x-www-form-urlencoded' method.
URL | Parameters | Method | Description |
---|---|---|---|
/user/register |
|
POST | Register a user |
/user/login |
|
POST | Login a user |
/user/logout |
|
POST | Logout a user |
URL | Parameters | Method | Description |
---|---|---|---|
/journal/add |
|
POST | Add new entry into journal |
/journal |
|
GET | Get all journal entry |
/journal/update |
|
POST | Update a journal entry |
/ledger/update |
|
GET | Update the ledger |
/ledger |
|
GET | Get ledger |
/trial |
|
Get | Get trial balance |
/final/pnl |
|
GET | Get Profit and Loss Account |
/final/balance |
|
GET | Get Balance Sheet |
URL | Parameters | Method | Description |
---|---|---|---|
/flexBudget/add |
|
POST | Add an entry to budget |
/flexBudget |
|
POST | Get the flexible budget |
URL | Parameters | Method | Description |
---|---|---|---|
/inventory/add |
|
POST | Add an item to inventory |
/inventory/update |
|
POST | Update an item in inventory |
/inventory |
|
GET | Get the inventory |
- Budget API
- Inventory-Debit
- Inventory
- Maps API
- Ledger
- Transaction
- Journal
- Balance Sheet
- Trail Balance
- Profit and Loss Account
- Login Signup
I used express-session to manage sessions to authenticate. We have isUserLoggedIn, isUserLoggedOut middleware function which checks if the user is authenticated or not. The session token is stored in the database using connect-mongo package and is deleted when the user logout
async function isUserLoggedIn (req, res, next) {
try {
if (!(req.session && req.session.user)) {
return res.status(401).send({
error: "Unauthorized Access!"
});
}else {
const user = await User.findOne({ _id : req.session.user._id })
if(user) {
next();
} else {
req.session.user = null;
return res.status(401).send({
error: "Unauthorized Access!"
});
}
}
} catch(e) {
res.status(400).send({
error: e
})
}
}
// Function to check whether the user is logged out
function isUserLoggedOut (req, res, next) {
if (req.session && req.session.user) {
return res.status(200).send({
message: "User already Logged In!"
});
}
next();
}
module.exports = {
isUserLoggedIn,
isUserLoggedOut
}
Note: some of the APIs which are mentionted above are not authenticate so please remember to add it. So it will help to proctect the private routes.
This api can be hosted on platform like heroku, aws, and others. MongoDB Atlas or Matlab can be used for remote database.
For instance, the application can be deployed on Heroku by creating and registering an account. Following, create a new app and choose a deployment method (terminal or github) and follow the instruction there. Remote database can be created using Mongodb Atlas or Matlab.
For Mongodb Atlas, you need to just to create your account and make a new cluster and link the cluster to your application through a URL. Following the given steps, you would have a remote application up and running.
If you are the helping and contributing one, your efforts and suggestion are always welcomed.