Case study · Node.js API & React

A membership platform for professional bodies

A multi-tenant membership system I work on full-stack for the Hong Kong Institution of Engineers (HKIE) and other Hong Kong professional bodies: a Koa and MongoDB API, a React member portal and a React back office for staff.

  • Node.js
  • Koa
  • MongoDB
  • Redis
  • React
  • Docker
  • Kubernetes
Start a project

From application to e-card.

One codebase serves several organisations, each with its own database. Members apply, renew, reinstate, add disciplines, log CPD and carry a digital e-card in the portal; staff review applications, manage members, committees, discipline panels and assessors, and run reports in the back office. I work across all three parts: the Koa 2 API with MongoDB and Redis, and the two React apps.

Application workflow diagram: draft, submit, approve, accept or reject
Platform overview: the member portal and staff back office, the API modules, the connected document, invoice, email, form and CPD services, and the infrastructure

Key features

Portal, back office, API.

Koa 2, MongoDB (Mongoose) and Redis, with JWT, two-factor OTP and refresh tokens; React with Redux, Formik and DevExtreme; PDF reports with Puppeteer and Excel exports; Docker on Kubernetes with Elastic APM. The images are diagrams, not screenshots.

Member portal

Online applications with supporter verification, renewals, reinstatement, CPD records, certificate reprints and a digital membership e-card.

Member portal features: application, renewal, reinstatement, additional discipline, supporter verification, CPD records, e-card, certificate reprint, subscriptions and task list

Staff back office

Application review with office-use sections, membership records, committees, discipline panels, assessors, a KPI report, audit logs and PDF and Excel reports.

Back office modules: applications, membership records, reinstatements, committees, discipline panels, assessors, KPI report, online users, audit log and reports

Multi-tenant API & jobs

Each organisation gets its own database. Scheduled jobs sync invoices, CPD and member files, and time out stale renewals.

Three organisations, each with its own database, and the scheduled jobs: invoice sync, batch invoicing, member FTP sync, CPD sync, renewal time-outs and status updates

More work

Explore more projects.

Other web apps and APIs I’ve built.

Plegium – Personal-Safety Platform

Backend, APIs and admin panels for a personal-safety app: Twilio call and SMS alerts with retries, live location and IoT devices, on AWS.


View case study
Plegium banner: the Plegium logo with its pepper spray, keychain and IoT alarm devices

Poof – Dispensary Marketplace

Laravel API and Vue admin for a Canadian delivery and pickup marketplace, synced with Greenline and Cova POS.


View case study
Poof banner: the leaf logo and the admin product list

Let’s work together

Have a web app, plugin or integration in mind?

Tell me about your project and I’ll get back to you with the next steps.

Find me on

Freelance platforms.

You can also hire me through these freelance marketplaces.

  • Upwork profile
  • Fiverr profile
  • Freelancer.com profile
  • Guru profile
  • PeoplePerHour profile

Contact

Let’s work together on your next project!

Share a few details about your project using the form and I’ll get back to you. You can also message me on LinkedIn.

Number without the country code

Your details are only used to reply to your enquiry.