Skip to content

System Architecture

zechajw edited this page Jun 29, 2022 · 4 revisions

The tech stack chosen for this project is the following

Technology Role
Next.js (React) Front end framework
Express.js Back end framework
Node.js Runtime environment for back end
Postgresql Relational database

also known as PERN


System Architecture

1. Client

  • The Skylab Client (Frontend) is written in Next.js, React
  • For the initial development period (May to August 2022), the website was hosted on Vercel for development.

2. Authentication

  • To remove concurrency issues and increase the consistency of our database, we decided to forgo the use of third-party authentication services (e.g. Firebase, Supabase) and store the authentication information directly on the database.
  • Passwords are encrypted using BCrypt and authorization is handled using JWT Tokens

3. Server

  • The Skylab Server (Backend) uses the Express.js framework available for Node.js

4. Database

  • The application uses a PostgreSQL databases
  • Our application also uses Prisma for Object-Relational Mapping (ORM), which enables faster and easier development without the need to write raw SQL queries.
  • Prisma also allows for type-safe code on Typescript.

5. Third-Party Services

  1. SendInBlue

Our application uses the SendInBlue email service to send emails. This includes password reset emails, notifications, and other emails that are sent to users of Skylab.

NUS Skylab v2 - Backend

Introduction

Project Organization

Project Requirements

Endpoints

Clone this wiki locally