Hypercolor Create Express Server
Table of Contents
Introduction
This tool is used by the team at Hypercolor Digital to quickly spin up a new backend server using our standard infrastructure practices. This tool uses TypeScript, Express, Postgres, AWS SQS and MongoDB.
Installation
Install this package using your package manager of choice.
- NPM
npm i -g @hypercolor/create-hc-server
- Yarn
yarn global add @hypercolor/create-hc-server
Usage
Step 1: Create Your New App
After installing the package, you can run the following command to create a new project.
npx create-hc-server my-server-name
Step 2: Finalize your configuration
Now that the package has been initialized, we need to either connect our datasbases and workers, or remove them from the package.
- If you are not using an AWS SQS worker instance, delete the
/src/worker
directory and remove theSQS_URL_ASYNC_WORKER
declaration in/src/util/config.ts
.- open the
.env
file at the root of the project, and add the URL strings for your MongoDB and Postgres databases.- NOTE: The keys in the
.env
file need to exactly match the declarations in/src/util/config.ts
.
- NOTE: The keys in the
- open the
Step 3: Add an API Endpoint
Visit /src/routes/api/v1/hello/get.ts
to see an example of how to add a new API endpoint controller class. The pattern for this server architecture is that requests pass through a controller, into a service file to do some work, and then return back out of the same controller it was entered through.
Example:
import { Controller } from "../../../classes/controller";
import { UserService } from "../../../services/user-service";
import { Mapper } from "../../../util/mapper";
export class GetUsersController extends Controller {
public async handleRequest() {
const users = await UserService.getUsers();
return Mapper.mapOutput(users, UserDto);
}
}
Step 4: Run your server
Build your server:
nvm use && yarn build
Run your server:
yarn start
Misc Info
Toolchain
- TypeScript
- MongoDB
- Postgres
- AWS SQS
- Express