diff --git a/nft_mirror/oracle_server/.env.sample b/nft_mirror/oracle_server/.env.sample new file mode 100644 index 0000000000000..632be64b8cbf4 --- /dev/null +++ b/nft_mirror/oracle_server/.env.sample @@ -0,0 +1,5 @@ +# Set to production when deploying to production +NODE_ENV=development + +# Node.js server configuration +SERVER_PORT=8000 \ No newline at end of file diff --git a/nft_mirror/oracle_server/.gitignore b/nft_mirror/oracle_server/.gitignore index 4904d718f81f6..910caef2a9b2d 100644 --- a/nft_mirror/oracle_server/.gitignore +++ b/nft_mirror/oracle_server/.gitignore @@ -10,10 +10,7 @@ /build # misc -.env.local -.env.development.local -.env.test.local -.env.production.local +.env npm-debug.log* yarn-debug.log* diff --git a/nft_mirror/oracle_server/README.md b/nft_mirror/oracle_server/README.md index 1ed08453ae7fc..e985880d07654 100644 --- a/nft_mirror/oracle_server/README.md +++ b/nft_mirror/oracle_server/README.md @@ -8,7 +8,14 @@ As shown in the graph below, the main job of the oracle is to validate the user ![user flow](./docs/flow.png 'User Flow') -## Development +## Get Started + +1. Set up the `.env` file through `cp .env.sample .env` +2. Install the dependencies through `npm i` +3. Start the server through `npm run dev` +4. The easiest way to test out an endpoint is through [http://localhost:8000/docs](http://localhost:8000/docs) by clicking on "Try it out". No need to manually write curl command or example data. + +## Useful Commands for Development **Requirements**: Node 14.0.0 or later version diff --git a/nft_mirror/oracle_server/package-lock.json b/nft_mirror/oracle_server/package-lock.json index 8e6e511996fa2..ab1bbf69d2830 100644 --- a/nft_mirror/oracle_server/package-lock.json +++ b/nft_mirror/oracle_server/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "body-parser": "^1.19.2", + "dotenv": "^16.0.0", "express": "^4.17.3", "morgan": "^1.10.0", "swagger-ui-express": "^4.3.0", @@ -17,6 +18,7 @@ }, "devDependencies": { "@types/body-parser": "^1.19.2", + "@types/dotenv": "^8.2.0", "@types/express": "^4.17.13", "@types/morgan": "^1.9.3", "@types/node": "^17.0.21", @@ -255,6 +257,16 @@ "@types/node": "*" } }, + "node_modules/@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "dotenv": "*" + } + }, "node_modules/@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -1378,6 +1390,14 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", + "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==", + "engines": { + "node": ">=12" + } + }, "node_modules/duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -4793,6 +4813,15 @@ "@types/node": "*" } }, + "@types/dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==", + "dev": true, + "requires": { + "dotenv": "*" + } + }, "@types/express": { "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", @@ -5624,6 +5653,11 @@ "is-obj": "^2.0.0" } }, + "dotenv": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz", + "integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==" + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", diff --git a/nft_mirror/oracle_server/package.json b/nft_mirror/oracle_server/package.json index 2a719a5c814ad..579f2eeb72ba6 100644 --- a/nft_mirror/oracle_server/package.json +++ b/nft_mirror/oracle_server/package.json @@ -27,6 +27,7 @@ "description": "", "devDependencies": { "@types/body-parser": "^1.19.2", + "@types/dotenv": "^8.2.0", "@types/express": "^4.17.13", "@types/morgan": "^1.9.3", "@types/node": "^17.0.21", @@ -43,6 +44,7 @@ }, "dependencies": { "body-parser": "^1.19.2", + "dotenv": "^16.0.0", "express": "^4.17.3", "morgan": "^1.10.0", "swagger-ui-express": "^4.3.0", diff --git a/nft_mirror/oracle_server/src/index.ts b/nft_mirror/oracle_server/src/index.ts index 45d7982a0c70a..b60f549670cd0 100644 --- a/nft_mirror/oracle_server/src/index.ts +++ b/nft_mirror/oracle_server/src/index.ts @@ -12,6 +12,10 @@ import morgan from 'morgan'; import bodyParser from 'body-parser'; import { RegisterRoutes } from '../build/routes'; import swaggerUi from 'swagger-ui-express'; +import dotenv from 'dotenv'; + +// initialize configuration +dotenv.config(); const PORT = process.env.PORT || 8000;