koa-server icon indicating copy to clipboard operation
koa-server copied to clipboard

🗄️ GraphQL Back-end Server with Relay, Koa, MongoDB and Mongoose

trafficstars

image

koa-server

GraphQL Back-end Server with Relay, Koa, MongoDB and Mongoose

Tests Passing Coverage Status follow on Twitter

🚧 WIP 🚧

Note See Front-end project graphql-relay-web

Stack

  • [x] Koa
  • [x] MongoDB
  • [x] Mongoose
  • [x] GraphQL
  • [x] Relay
  • [x] Jest
  • [x] SuperTest
  • [x] 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

  • 🔗 https://koa-server-production.up.railway.app/
  • 🔗 https://koa-server-production.up.railway.app/graphql
  • 🔗 https://koa-server-production.up.railway.app/playground

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/