Spica QMS Documentation

Application Architecture

The application is divided into four parts each part is an independent node application operating in its own container. Four parts are as below:

  1. Resource Server
  2. CMS Application
  3. Frontend Application (QMS Website)
  4. Database Server (PostgreSQL)

Technical Expertise Required

Before diving deeper into this document or making changes to source code, you should have the following technical expertise:

Please Note

Understanding of the above technologies is mandatory before reading further in detail.
Without prior knowledge of the above technologies, you will not be able to understand the code and make changes to it or understand the architecture of the project and documentation.

Resource Server

Resource server is responsible for connecting to the database and providing the data to the other applications. It is developed using the NestJS framework using TypeORM as ORM and developed with the TypeScript language.

You can find more details about NestJS in the NestJS Official Website.

Directory Structure—NestJS

We follow the standard NestJS directory structure. All the source code is available in the /src directory.

All the modules are available in the /src/modules directory. Each module has its own directory, and all the source code is available in the /src/modules/module_name directory.

Each module has the below parts:

  • /controllers
  • /entities
  • /services
  • .module.ts

Other common entities, controllers, guards, interceptors, etc. are located in the /src/common directory.

You can refer to NestJS Documentation for more information about Controller, Entity, Service and, Module, Guards, Interceptors, etc.

CMS Application

CMS application is from where you can manage the content of the website. The application internally connects to the Resource Server to fetch, update the data to the database. The CMS application provides User Interface to manage the content of the website and is described in detail in this entire document.

All the modules and their functionality are described in detail in this document.

The CMS Application is developed using the Next.js, App Router and React framework.

You can find more details about Next.js in the Next.js Official Website.

For the component library, we are using ShadCnUI component library.

You can find more details about ShadCN in the ShadCN Official Website.

Directory Structure—CMS Application

We follow the standard Next.js directory structure. All the source code is available in the /src directory.

You can refer to Next.js Project Structure Documentation for more information about Next.js source code structure.

Frontend Application (QMS Website)

Frontend application is the user-facing application. It is developed using the Next.js framework.

You can find more details about Next.JS in the NextJS Official Website.

For the component library, we are using ShadCnUI component library.

You can find more details about ShadCN in the ShadCN Official Website.

Directory Structure—Frontend Application

We follow the standard Next.js directory structure. All the source code is available in the /src directory.

You can refer to Next.js Project Structure Documentation for more information about Next.js source code structure.

Database Server (PostgreSQL)

We are using PostgreSQL as the database server.

You can find more details about PostgreSQL in the PostgreSQL Official Website.

Next Steps

You can open the source code in your favorite IDE and start educating yourself about the code.

We strongly recommend you to start with the Resource Server and then move on to the CMS Application and then the Frontend Application.

Please Note

Please note that the we are not responsible for any breaking changes caused by the changes in the code.
We are only responsible for the code that is available in the repository till the commit we created at the time of handing over the project to you.

Please Note

Any new module introduced by the Spica Group is not covered in this document and will not be covered by us in the future. We are only responsible for the code that is available in the repository till the commit we created at the time of handing over the project to you.

Libraries Used

Below are all the libraries and frameworks used in the project:

On this page