# BMS Repository An extremely simple serverless application that manages BMS Zip files. Clients can request download URLs by providing either `md5` or `sha256` of the requested chart. This service also offers a basic admin dashboard for managing charts in the system. The system is **not designed** to provide any UI/UX to end users for listing and downloading charts. This README will be updated as the application is developed. --- **Request:** ```sh curl --request POST \ --url https:///chart/public \ --header 'Content-Type: application/json' \ --data '{ "md5": [], "sha256": [] }' ``` **Response Type:** ```ts interface Chart { chartId: string; // Internal to system name: string; md5: string; sha256: string; resourceUri?: string; // URI of the chart zip file parentChart?: string; // Internal Id of parent chart (chartId) comment?: string; // Note from maintainers } interface Response { md5: Record; // keyed by md5 sha256: Record; // keyed by sha256 parents: Chart[]; // If any parent charts are required } ``` --- ## Local Requirements These must be installed before following the setup instructions. - Macos/Linux OS/Windows Subsystem for Linux - Node.js v20 (v20 or higher) & npm@10.5.0 or higher [(we suggest installing and using nvm)](https://github.com/nvm-sh/nvm#install--update-script) follow instructions in the link to install, you will generally need to create a new terminal session after installing. If you already have nvm update it before proceeding. - If nvm is installed you can switch versions with `nvm install 20 && nvm use 20 && nvm alias default 20 && nvm install-latest-npm` - If not using nvm you can manually install node and npm, download from alternatively use the operating system package manager or any other appropriate tool to install node - Current versions can be checked with `node -v`, `npm -v` - pnpm version 9, version can be checked with `pnpm -v`, install with `npm install -g pnpm@9` [or other methods](https://pnpm.io/installation) - [AWS CLI v2](https://aws.amazon.com/cli) - Homebrew, for Mac users only, follow install instructions [here](https://brew.sh/) - [jq](https://stedolan.github.io/jq/download/) for extracting Cloudformation outputs - Install on mac `brew install jq` - Install on Linux `sudo yum install jq` or `sudo apt-get install jq`, or other appropriate methods - Java Runtime Environment (JRE) version 8.x or newer, it is only required for [DynamoDB local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html) - Install on mac `brew install java` - Install on linux `sudo yum install java` or `sudo apt-get install openjdk-8-jdk`, or other appropriate methods - DynamoDB local will automatically install in the project when the api is started, java needs to installed before this occurs - curl which is used in some of the bash scripts, [curl install instructions](https://everything.curl.dev/get) - An IDE such as [Visual Studio Code](https://code.visualstudio.com/) - Internet connectivity - AWS Account - IAM credentials be sure to follow [Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) ## Run Locally If the project is already setup and you are trying run the project locally make sure you run `pnpm run aws:profile` first so that you have the correct credentials for AWS configured locally. ### Commands Start the api, admin and web in their own terminal windows/tabs with the following commands. 1. `pnpm run generate:env:local` to generate the env files for the frontend clients 2. `pnpm run start:api` 3. `pnpm run start:admin` ### Running locally Limitations - API, Web & Admin: No S3, you will need to rely on AWS staging S3 - API: No local Cognito Authorizer, the deployed staging cognito can be used (see `packages/api/serverless.yml`) or the payload set by `AUTHORIZER` in `packages/api/scripts/run-api-local.sh`. - Admin: Cognito UI relies on an active AWS Cognito user pool, use deployed staging ## Deploy a Change Swap `staging` to `prod` to deploy to production. All environment variables will be automatically set in the process. 1. `pnpm run deploy:staging` to deploy api/web/admin ## Remove Stack To destroy the deployed cloudformation stacks so it is no longer on AWS run `pnpm run remove:staging`. This will likely destroy all data associated with the application. # Built using BaselineJS ![1688515420018](https://github.com/Baseline-JS/core/assets/151841910/620fa869-4bca-418d-af2c-3a3f8b2d2719) BaselineJS is an open-source, fullstack TypeScript, serverless first framework designed to make building cloud native applications easier. Our framework utilizes a combination of modern technologies, architectures and operational processes to help teams to efficiently build and deploy robust applications If you like BaselineJS give us a ⭐️ [Website](https://baselinejs.com/) | [Documentation](https://docs.baselinejs.com/) | [Discord](https://discord.gg/beCj9VDeMm) | [LinkedIn](https://www.linkedin.com/company/baselinejs) | [YouTube](https://www.youtube.com/@Baseline-JS) Startups, want $10k USD of AWS Credits to Get Started? [Apply Here](https://share.hsforms.com/1P6p_G9Q_Q-SJAESAYtLftgqm3as)