Architecture overview
This section gives a short overview how NDM was build.
How is the NDM CLI build?
We used
and a library called "Commander" to build the command-line interface (CLI) tool.
Many other CLI tools have also been built with TypeScript.
- VS Code CLI
- Vercel CLI
- Netlify CLI
- Firebase CLI
- and many others
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.