5.0.5 • Published 1 year ago

mlkpsymph-root v5.0.5

Weekly downloads
-
License
ISC
Repository
bitbucket
Last release
1 year ago

ML KP

Prerequisites

Setup

Clone the repository

HTTPS

git clone https://github.com/symphco/mlkpsymph.git

SSH

git clone git@github.com:symphco/mlkpsymph.git

In root of application, setup everything with one command (make sure you are using node version 14.19.3).

npm install

This installs 3 node_modules. In the root, code, and frontend.

Make sure Husky is working properly

After npm install, there should not be any errors about husky.

Check if husky is installed,

  1. cd to root
  2. nano .git/hooks/pre-commit

There should be codes in there mentioning words like husky

Git is outdated?

  1. Download https://sourceforge.net/projects/git-osx-installer/
  2. check version git —version, must be >= 2.13

Finally,

  1. npm uninstall husky
  2. npm install husky
  3. Do the “Check if husky is installed” above again

Running locally

For Mac: In root of application, run everything with one command. This will open 2 Terminal windows in OSX.

npm run dev

For Windows / Linux: In root of application, enter cd code in the terminal. Run the backend by entering the following command:

npm run dev

Open another terminal window, in root of application, enter cd frontend in the terminal. Run the frontend by entering the following command:

npm run start

First Login Via Google

Ask anyone from the ML team to create an account for you so you can login.

Building

In root of application, build everything with one command.

npm run build

Testing

In root of application, test everything with one command.

npm run test

Running e2e

Install and add ChromeDriver to your path first: https://chromedriver.chromium.org/home

In root of application, run e2e.

npm install
npm run test:e2e

Building Releases

git rebase origin/master

Create tag when creating a new tag make sure to use an annotated tag by passing -a parameter and add a tag message -m and always sign tags using -s List all tags

git tag

Create an annotated tag

git tag -a <the_tag> -m "<message>" (e.g. git tag -a v6.0.8 -m "This is the build")

With these we can see why we tagged that specific version and see who is the tagger is by using

git show <tag>

Push tag

git push --tags --no-verify

Check build history in Google Cloud Consle

https://console.cloud.google.com/cloud-build/builds?project=mlkpsymph

Confirm build's commit hash is equal to the latest merge commit in repo

Refer to

https://www.notion.so/Releasing-Build-to-ML-Docker-fc7130242ead48bc80414381a2b75669#97198693808445d185ba7d8b98669514

How to use the DB Service

import DbService from 'services/db/DbService';

const dbService = new DbService();
const result = await dbService.query('select 1 + 1 as solution');

Features

  • Billspay
  • KYC
  • Money Transfer
  • Partner Money Transfer
  • Express
  • Wallet
  • Core
  • Reports
  • Admin
  • Dashboard
  • Head Office

References

Conventions

  • Folders must be lowercase
  • Files and class names must be TitleCase
  • Controllers must have Controller suffix and object must be plural e.g. UsersController
  • Interfaces must have Interface suffix and object must be singular e.g. UserInterface
  • Route path resources must be plural e.g.:
    • /users for all users
    • /users/1 for specific user
    • /users/1/posts for specific user's posts
  • Follow standard REST API convention on methods:
    • GET - for retrieval
    • POST - for creation
    • PUT - for updates
    • DELETE - for deletion
  • For actions that don't fit in basic CRUD operations, the format of the path should be resource/id/verb. Resource should be plural, verb singular. Examples:
    • /messages/{id}/send
    • /messages/{id}/redirect
    • /messages/{id}/redirect-to-message
    • /messages/{id}/forward
  • Services must have Service suffix and object must be singular e.g. UserService
  • Test classes must have Test suffix and object must be singular e.g. UserServiceTest
  • JSON API response structure look here
    • Use sendApiResponse() from CustomResponse class, e.g.:
      (req: Request, res: CustomResponse, next: NextFunction) => {
        res.status(201);
        res.code = status.SUCCESS;
        res.sendApiResponse({
          data: data,
        });
      };
    • Response data must be in camelCase
  • Reusable frontend components must be placed in /src/components folder
  • Components specific to an app must be placed in /src/apps/<app>/components folder
  • Global styling with regards to bootstrap may be changed via specifying the bootstrap variable in the _variables.scss file. Refer to bootstrap repository in github for possible variables.
  • Styling unique to a component shoul be in the /src/assets/utils folder with the use of styled-components.
  • Redux actions and reducers per app should be placed in the functions component of each app.

💻 Contributing

  1. Create a branch off of master
    • feature/branch-name - For code that adds features. May include tests.
    • fix/branch-name - For code that fixes a broken feature.
    • fixtest/branch-name - For code that fixes a broken test.
    • misc/branch-name - For code clean up and refactoring changes that don't fix bugs or add new features.
    • test/branch-name - For code that only adds tests.
    • adjustment/branch-name - For code that changes an existing working feature.
  2. Do your stuff Make commits according to its purpose. For example, if you are building a new feature, don't do code cleanup. Do code cleanup in a separate commit (or better separate branch) Commit message template: [Feature][Albert] Add user login. Commit types are:
    • Feature
    • Fix
    • Fix Test
    • Misc
    • Test
    • Adjustment
    • Hotfix
  3. Push to Bitbucket often. Rebase often. Pushing and rebasing often reduces the chance of conflicts and being out of sync. Try to do this a few times a day.
  4. When ready, create a Pull Request from your branch to master branch. Tag the reviewers to review your PR. Mention the reviewers in Discord along with a link to your PR. Also, follow the guidelines for Code Review
  5. Respond or address reviewers' feedback to your PR. Be receptive to feedback, keep an open mind, and always assume positive intent. ❤️
  6. Merge when approved 🎉