create-gemforce-web-api
v1.0.3
Published
Build REST or GraphQL Web APIs by executing a single command
Downloads
7
Maintainers
Readme
create-gemforce-web-api
Build REST/GraphQL APIs with single command
Typescript REST/GraphQL code generator with JWT authentication
npx create-gemforce-web-api <project-name>
then
cd <project-name>
yarn install or npm install
yarn build or npm run build
yarn start or npm start
Example
to see what this generator creates for you checkout this project
Used libraries
Graphql
REST
Commands
Starting app:
yarn start or npm start
Starting with nodemon
yarn startd or npm run startd
Debuging:
yarn debug or npm run debug
Typescript build:
yarn build or npm run build
Typescript build (watch mode):
yarn watch or npm run watch
Creating typeorm migration
yarn migration:create or npm run migration:create
Environment Variables
The environment variables file can be found and modified in the .env
in root of porject.
# Port number
PORT=4000
# JWT
# JWT access token secret key
ACCESS_TOKEN_SECRET=ajlkqowieuqowueoi
# JWT refresh token secret key (use different secrets for refresh and access tokens)
REFRESH_TOKEN_SECRET=qopwieioque1
# access token expiry (default 15 minutes)
ACCESS_TOKEN_EXPIRY=15m
# refresh token expiry (default 7 days)
REFRESH_TOKEN_EXPIRY=7d
# refresh token cookie name
REFRESH_TOKEN_COOKIE_NAME=jid
# CORS
# you can set cors for client your application
CORS_CLIENT_HOST=http://localhost:3000
Project Structure
src\
|--entities\ # data layer (model)
|--dataAccess\ # data access layer (repos and migrations)
|--services\ # service layer (pure app logic)
|--services.contracts\ # types and interfaces for service layer
|--host\ # application host layer
|--auth\ # authentication system with jwt
|--graphql\ # all files related to graphql (if selected in cli)
|--restApi\ # all files related to rest (if selected in cli)
|--app.ts # express app
|--ormconfig.json # database config file
|--Dockerfile # docker file
|--.nev # environment variables file
|--index.ts # application entry point
Routes
POST /refresh_token
- get new tokensPOST /revoke_refresh_token
- revoke refresh token
RESTPOST /register body:{username,password,confirmPassword}
- registers new user and sends access_tokenPOST /login body:{username,password}
- authenticates user and sends access_tokenGET /login
- current user informationDELETE /login
- logout current user
GraphQLPOST /graphql
- graphql api (see graphql docs for register, login, logout)