koa-server

๐Ÿ—„๏ธ GraphQL Back-end Server with Relay, Koa, MongoDB and Mongoose

Stars
52
Committers
3

Note See Front-end project graphql-relay-web

Stack

  • Koa
  • MongoDB
  • Mongoose
  • GraphQL
  • Relay
  • Jest
  • SuperTest
  • Code Coverage(Coverall) see
  • Linter (Eslint)
  • Prettier

Project architecture

.
โ”œโ”€โ”€ graphql/
โ”‚   โ””โ”€โ”€ schema.graphql
โ”œโ”€โ”€ script
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __tests__
โ”‚   โ”œโ”€โ”€ database
โ”‚   โ”œโ”€โ”€ graphql
โ”‚   โ”œโ”€โ”€ modules/
โ”‚   โ”‚   โ”œโ”€โ”€ event/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ __tests__
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ fixure
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ mutations/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ __tests__
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventCreateMutation.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventDeleteMutation.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventUpdateMutation.ts
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventFilterInputType.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventLoader.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventModel.ts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ EventType.ts
โ”‚   โ”‚   โ””โ”€โ”€ node/
โ”‚   โ”‚       โ””โ”€โ”€ typeRegister.ts
โ”‚   โ”œโ”€โ”€ schema/
โ”‚   โ”‚   โ”œโ”€โ”€ MutationType.ts
โ”‚   โ”‚   โ”œโ”€โ”€ QueryType.ts
โ”‚   โ”‚   โ””โ”€โ”€ schema.ts
โ”‚   โ””โ”€โ”€ shared
โ””โ”€โ”€ test

Getting Started

  • clone this repo
# install dependencies
> yarn
# or
> yarn install

# copy .env file
> cp .env.example .env

# start project
> yarn start

# see on GraphiQL graphql interface on localhost link
http://localhost:9000/graphql

# or see graphql Playground
http://localhost:9000/playground

Generating the schema

> yarn schema

Create events manually

> yarn seed

to-do

demo

Mutations

  • Event Create Mutation
mutation {
  EventCreate(
    input: {
      eventId: 564654
      name: "nice event"
      start: "2022-07-01T00:00:00.000Z"
      end: "2022-07-01T23:59:59.000Z"
      allDay: false
    }
  ) {
    event {
      id
      name
      start
      end
      allDay
    }
    error
    success
  }
}
  • Event delete Mutation
mutation {
  EventDelete(input: { eventId: "629521641ff2c2c8f5f2e449" }) {
    eventId
    error
    success
  }
}
  • Event Update Mutation
mutation {
  EventUpdate(
    input: {
      eventId: "62952906f5c651ced019adf3"
      name: "nice event /o/"
      start: "2022-07-01T00:00:00.000Z"
      end: "2022-07-01T23:59:59.000Z"
      allDay: false
    }
  ) {
    event {
      id
      name
      start
      end
      allDay
    }
    error
    success
  }
}

Queries

  • Event queries
query {
  events {
    edges {
      node {
        name
        start
        end
        allDay
      }
    }
  }
}

contributions

Feel free to contribute to this project, if you find any bugs or improvements, open an issue and send a PR about it \o/