Skip to main content

Architecture overview

This section gives a short overview how NDM was build.

How is the NDM CLI build?

We used TypeScript and a library called "Commander" to build the command-line interface (CLI) tool.

Many other CLI tools have also been built with TypeScript.

Dev

We mainly use ’pnpm’ because it is safer and faster than ’npm’. We declared that all dependencies must be older than three days. This is for safety reasons. Most infected packages are taken down after around three days.

We use Git and GitHub for version control.

Frontend

We used React to build our webpage. For more information, see the Frontend Docs.

Backend

We used Python to build the backend and the entire server. For more information, see the Backend Docs.

Why is this the structure?

We decided to split NDM into parts.

  • The CLI tool
  • The backend/server

This is because we need to run the package in a sandbox. Setting up the sandbox requires extra steps. Also, when the package is executed in a sandbox on a server, it is impossible for the package to affect your device.

This adds trust and safety to NDM compared to running the sandbox on your device.

The CLI tool is the client, and the server is where the package is executed and everything happens.