109 lines
5.4 KiB
Markdown
109 lines
5.4 KiB
Markdown
# 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://<API_URL>/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<string, Chart>; // keyed by md5
|
|
sha256: Record<string, Chart>; // 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 <https://nodejs.org/en/download/> 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 <https://aws.amazon.com/getting-started/>
|
|
- IAM credentials <https://docs.aws.amazon.com/cli/latest/userguide/getting-started-prereqs.html#getting-started-prereqs-iam> 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
|
|
|
|

|
|
|
|
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)
|