- api: HTTP JSON API written with Node, Express, and MongoDB
- cli: C++ utility written with libcurl and nlohmann/json
First, run the API server:
cd api
npm install
npm run start
Then, to run the CLI:
cd cli
make
./client
- bcrypt - password hashing
- express - webserver
- moment - date formatting
- mongodb - database (requires mongodb server to be installed)
- mongoose - modeling for MongoDB
- node and npm
- libcurl - interacting with API
- nlohmann/json - JSON object interaction (.hpp included in cli/)
- LOG/REG
- LOG: login to an existing user profile
- REG: create a new user
- LS: list files associated with the currently logged in user
- VC: view contents of a file
- DL: Download a config file from the server
- UP: Upload a config file to the server. If the file has not been uploaded before, a profile for the config will be created
- EXIT: Exit CLI
- GET /listconfs/:json: List names of configs associated with a user profile
- Input: {username, password}
- Output: {result, [name]}
- GET /config/:json: Get info associated with a config profile
- Input: {username, password, name}
- Output: {result, name, created, modified, content}
- POST /addconfig: Add a config to a user's profile. If a config with that name already exists, update its contents
- Input: {username, password, name, path, content}
- Output: {result}
- POST /deleteconfig: Delete a config from a user's profile
- Input: {username, password, name}
- Output: {result}
- POST /newuser: Create a new user profile
- Input: {username, password, email}
- Output: {result}
- GET /validuser/:json: Check if a user with a specific username and password exists
- Input: {username, password}
- Output: {result}
- Postman - for testing API calls
- Robo3T - for interacting with MongoDB
- Vim, VS Code - editors