/booking-app

nestjs app with auth0 and openapi, serverless deployment. openapi and auth0. Using this instead of the sam app

Primary LanguageTypeScript

Example of creating a nest app from scratch with openapi

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

Description

Nest framework TypeScript starter repository.

Installation

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.

Stay in touch

License

Nest is MIT licensed.

Running

npm run start:dev

Deploying

Check everything is running fine using npm run offline (not the base url doesn't work with serverless offline e.g '/' but will when deployed) then npm run deploy:fresh or npm run deploy if updating.

Swagger

After running the application, openapi.json will get created. You can then generate types from that using npm run gen-api-client to use in a front end application. You can also head to this url to look at the swagger docs. http://localhost:3333/docs/

Plan

Goal: Have a sellable generic booking model, A user can create a service and a customer can make bookings against the service. Front end will show one service at a time serviceName/book

  1. Have bookings and users. Can hardcode time slots and can show which ones have bookings
  2. Service and timeslots, 1 service has many time slots which will have many bookings.
  3. A business will have many services.
erDiagram
    SCHEDULES ||--o{ SERVICE : hasMany
    SCHEDULES {

    }
    SERVICE {
        id string
        serviceType string
        times DateList
        sections stringList
    }

    SERVICE ||--o{ TIMESLOTS : hasMany
    SERVICE {
        id string
        duration number
        serviceType string
        sections stringList
        createdAt Date
        updatedAt Date
    } 
    TIMESLOTS ||--o{ BOOKINGS : creates
    TIMESLOTS {
        id string
        time Date
    }
    BOOKINGS {
        time Date
        selectedMenuOptions List
        numOfPeople number
        customerNotes string
        managerNotes string
        created_at Date
        updated_at Date
    }
    CUSTOMER ||--o{ BOOKINGS : places
    CUSTOMER {
        id string PK
        firstName string
        lastName string
        email string
        phone string
    }
Loading

Todos

  1. pass auth0 params in -- maunally add to ssm, setup permissions, add key to provder.ts

  2. database

  3. domain name.