{"id":16002694,"url":"https://github.com/danstarns/idio-graphql-realworld-example-app","last_synced_at":"2026-03-04T11:32:11.710Z","repository":{"id":42924381,"uuid":"244011785","full_name":"danstarns/idio-graphql-realworld-example-app","owner":"danstarns","description":"Node.js GraphQL example server built with modules, authentication, pagination, and more.","archived":false,"fork":false,"pushed_at":"2023-01-07T18:26:51.000Z","size":1498,"stargazers_count":4,"open_issues_count":18,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T09:11:51.239Z","etag":null,"topics":["apollo-server","codebase","example","graphql","graphql-api","idio-graphql","modular","modules","node-js","nodejs","realworld"],"latest_commit_sha":null,"homepage":"https://danstarns.github.io/idio-graphql/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danstarns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-29T17:31:45.000Z","updated_at":"2023-07-27T12:06:18.000Z","dependencies_parsed_at":"2023-02-07T20:32:13.197Z","dependency_job_id":null,"html_url":"https://github.com/danstarns/idio-graphql-realworld-example-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/danstarns/idio-graphql-realworld-example-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danstarns%2Fidio-graphql-realworld-example-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danstarns%2Fidio-graphql-realworld-example-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danstarns%2Fidio-graphql-realworld-example-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danstarns%2Fidio-graphql-realworld-example-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danstarns","download_url":"https://codeload.github.com/danstarns/idio-graphql-realworld-example-app/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danstarns%2Fidio-graphql-realworld-example-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apollo-server","codebase","example","graphql","graphql-api","idio-graphql","modular","modules","node-js","nodejs","realworld"],"created_at":"2024-10-08T10:03:01.185Z","updated_at":"2026-03-04T11:32:11.690Z","avatar_url":"https://github.com/danstarns.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IdioGraphQL RealWorld Example App\n[![CircleCI](https://circleci.com/gh/danstarns/idio-graphql-realworld-example-app/tree/master.svg?style=svg)](https://app.circleci.com/pipelines/github/danstarns/idio-graphql-realworld-example-app?branch=master)\n[![CircleCI](https://img.shields.io/github/license/danstarns/idio-graphql)](https://github.com/danstarns/idio-graphql-realworld-example-app/blob/master/LICENSE)\n\n\u003e ### Node.js GraphQL example server built with modules, authentication, pagination, and more.\n\n\n# Docs\nhttps://danstarns.github.io/idio-graphql/\n\n\n# About\n\nThis codebase was created to demonstrate a Node.js server built with [**idio-graphql**](https://danstarns.github.io/idio-graphql/) including modules, authentication, pagination, and more. \n\n\u003e There is a React frontend that works with this server [here](https://github.com/dostu/react-apollo-realworld-example-app)\n\n\n# Contributing\n\n\u003e All PR's are welcome\n\n1. [Eslint](https://eslint.org/) =\u003e `./eslintrc`\n2. `PR|\u003emaster`\n3. [Tests](#testing)\n\n# Getting started\n\n## Docker\n1. `docker-compose up`\n\n## Without Docker \n\n\u003e Node \u003e= v12.0.0\n\n1. `npm install`\n2. Get or start a MongoDB server `MONGODB_URI`\n3. Configure your environment: `COPY` `./.env.example` =\u003e `./.env`, update `MONGODB_URI` and `PORT` if need\n4. `npm run start`\n\n# Environment Variables\n\n```\nPORT=3000\nMONGODB_URI=mongodb://localhost/test\nDEBUG=@Conduit:*\nSECRET=supersecret\nNODE_ENV=develop\n```\n\n# GraphQL Schema\n\nThe foundations of this schema were ported from [rails-graphql-realworld-example-app](https://github.com/dostu/rails-graphql-realworld-example-app), although changes have been made, both for simplicity \u0026 to lean on features provided by `idio-graphql` such as [Inter-Schema Execution](https://danstarns.github.io/idio-graphql/docs/inter-schema-execution).\n\n\u003e Graphs generated from [Graphql Voyager](https://github.com/APIs-guru/graphql-voyager) available @ http://localhost:3000/voyager\n\n### Query\n![GraphQL Voyager Mutation View](./assets/query.jpg)\n### Mutation\n![GraphQL Voyager Mutation View](./assets/mutation.jpg)\n### SDL\n```graphql\ndirective @Auth(input: AuthInput) on FIELD_DEFINITION\n\ninput AddCommentInput {\n  articleId: ID!\n  body: String!\n}\n\ntype AddCommentPayload {\n  comment: Comment\n  errors: [UserError!]!\n}\n\ntype Article {\n  id: ID!\n  author: User!\n  body: String!\n  comments: [Comment!]!\n  description: String!\n  favoritesCount: Int!\n  slug: String!\n  tagList: [String!]!\n  title: String!\n  viewerHasFavorited: Boolean!\n  updatedAt: DateTime!\n  createdAt: DateTime!\n}\n\ntype ArticleConnection {\n  edges: [ArticleEdge]\n  pageInfo: PageInfo!\n}\n\ntype ArticleEdge {\n  cursor: String!\n  node: Article\n}\n\ninput AuthInput {\n  required: Boolean!\n  populate: Boolean = false\n}\n\ntype Comment {\n  id: ID!\n  article: Article\n  author: User\n  body: String!\n  createdAt: DateTime!\n  updatedAt: DateTime!\n}\n\ninput CreateArticleInput {\n  title: String!\n  description: String!\n  body: String!\n  tagList: [String!]!\n}\n\ntype CreateArticlePayload {\n  article: Article\n  errors: [UserError!]!\n}\n\ninput CreateUserInput {\n  username: String!\n  email: String!\n  password: String!\n}\n\ntype CreateUserPayload {\n  errors: [UserError!]!\n  user: User\n}\n\n\"\"\"\nA date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the\n`date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO\n8601 standard for representation of dates and times using the Gregorian calendar.\n\"\"\"\nscalar DateTime\n\ninput DeleteArticleInput {\n  id: ID!\n}\n\ntype DeleteArticlePayload {\n  article: Article!\n}\n\ninput DeleteCommentInput {\n  id: ID!\n}\n\ntype DeleteCommentPayload {\n  comment: Comment\n}\n\ninput FavoriteArticleInput {\n  id: ID!\n}\n\ntype FavoriteArticlePayload {\n  article: Article\n}\n\ntype FollowersConnection {\n  totalCount: Int!\n}\n\ninput FollowUserInput {\n  id: ID!\n}\n\ntype FollowUserPayload {\n  user: User\n}\n\ntype Mutation {\n  createUser(input: CreateUserInput!): CreateUserPayload\n  signInUser(input: SignInUserInput!): SignInUserPayload\n  followUser(input: FollowUserInput!): FollowUserPayload\n  unfollowUser(input: UnfollowUserInput!): UnfollowUserPayload\n  updateUser(input: UpdateUserInput!): UpdateUserPayload\n  createArticle(input: CreateArticleInput!): CreateArticlePayload\n  deleteArticle(input: DeleteArticleInput!): DeleteArticlePayload\n  updateArticle(input: UpdateArticleInput!): UpdateArticlePayload\n  favoriteArticle(input: FavoriteArticleInput!): FavoriteArticlePayload\n  unfavoriteArticle(input: UnfavoriteArticleInput!): UnfavoriteArticlePayload\n  addComment(input: AddCommentInput!): AddCommentPayload\n  deleteComment(input: DeleteCommentInput!): DeleteCommentPayload\n}\n\ntype PageInfo {\n  endCursor: String\n  hasNextPage: Boolean\n}\n\ntype Query {\n  user(username: String!): User\n  article(slug: String!): Article\n  tags: [String!]!\n  viewer: Viewer\n  articles(first: Int = 10, after: String = \"1\", tag: String, forUser: Boolean, feed: Boolean, ids: [String]): ArticleConnection!\n}\n\ninput SignInUserInput {\n  email: String!\n  password: String!\n}\n\ntype SignInUserPayload {\n  errors: [UserError!]!\n  token: String\n  viewer: Viewer\n}\n\ninput UnfavoriteArticleInput {\n  id: ID!\n}\n\ntype UnfavoriteArticlePayload {\n  article: Article\n}\n\ninput UnfollowUserInput {\n  id: ID!\n}\n\ntype UnfollowUserPayload {\n  user: User\n}\n\ninput UpdateArticleInput {\n  id: ID!\n  title: String!\n  description: String!\n  body: String!\n  tagList: [String!]!\n}\n\ntype UpdateArticlePayload {\n  article: Article\n  errors: [UserError!]!\n}\n\ninput UpdateUserInput {\n  email: String!\n  username: String!\n  bio: String\n  image: String\n  password: String\n}\n\ntype UpdateUserPayload {\n  errors: [UserError!]!\n  user: User\n}\n\ntype User {\n  id: ID!\n  image: String\n  username: String!\n  bio: String\n  email: String!\n  followedByViewer: Boolean!\n  articles(first: Int = 10, after: String = \"1\"): ArticleConnection!\n  favoriteArticles(first: Int = 10, after: String = \"1\"): ArticleConnection!\n  followers: FollowersConnection!\n}\n\ntype UserEdge {\n  cursor: String!\n  node: User\n}\n\ntype UserError {\n  message: String!\n  path: String\n}\n\ntype Viewer {\n  feed(first: Int, after: String): ArticleConnection!\n  user: User\n}\n```\n\n# Testing\n\n1. [`mocha`](https://www.npmjs.com/package/mocha)\n2. [`chai`](https://www.npmjs.com/package/chai)\n3. [`nyc`](https://www.npmjs.com/package/nyc)\n4. [`mongodb-memory-server`](https://www.npmjs.com/package/mongodb-memory-server)\n5. [`apollo-server-testing`](https://www.npmjs.com/package/apollo-server-testing)\n\nYou can run this projects test suite with `$ npm run test`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanstarns%2Fidio-graphql-realworld-example-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanstarns%2Fidio-graphql-realworld-example-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanstarns%2Fidio-graphql-realworld-example-app/lists"}