{"id":22062425,"url":"https://github.com/bkinsey808/graphql-fullstack-seed","last_synced_at":"2025-08-11T05:14:52.715Z","repository":{"id":146653810,"uuid":"81031510","full_name":"bkinsey808/graphql-fullstack-seed","owner":"bkinsey808","description":"A seed project to help you get quickly started with a fullstack angular or vue GraphQL app","archived":false,"fork":false,"pushed_at":"2017-06-25T03:48:28.000Z","size":1462,"stargazers_count":21,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-12T22:44:14.584Z","etag":null,"topics":["angular","apollo","graphql","jwt","ngrx","offline-first","postgresql","service-worker","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bkinsey808.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-06T00:07:47.000Z","updated_at":"2023-10-22T09:26:08.000Z","dependencies_parsed_at":"2023-04-30T11:37:18.358Z","dependency_job_id":null,"html_url":"https://github.com/bkinsey808/graphql-fullstack-seed","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bkinsey808/graphql-fullstack-seed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkinsey808%2Fgraphql-fullstack-seed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkinsey808%2Fgraphql-fullstack-seed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkinsey808%2Fgraphql-fullstack-seed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkinsey808%2Fgraphql-fullstack-seed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bkinsey808","download_url":"https://codeload.github.com/bkinsey808/graphql-fullstack-seed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bkinsey808%2Fgraphql-fullstack-seed/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269833133,"owners_count":24482390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["angular","apollo","graphql","jwt","ngrx","offline-first","postgresql","service-worker","typescript"],"created_at":"2024-11-30T18:19:58.599Z","updated_at":"2025-08-11T05:14:52.690Z","avatar_url":"https://github.com/bkinsey808.png","language":"TypeScript","readme":"# Angular GraphQL Fullstack Seed\n\n## Not done yet!\n\nThis project does not currently do anything offline yet.\nStill, this project does enough interesting stuff (persisted queries, jwt authentication, lazy loading, etc) that it may be worth taking a look at.\n\n## Purpose for this project\n\nThis is super experimental. GraphQL brings many advantages to the client-server API and the architecture of client-server applications.\nUnfortunately, it seems like GraphQL ecosystem does not have a good solution for offline-first at the moment.\nThe goal of this project is to build a solid example of a GraphQL offline-first application using angular and server service worker\nrunning Apollo GraphQL server. \nEntire project is architected in TypeScript. Not really sure how possible all of this is. Your feedback is most welcome.\n\n## Getting started\nThis project uses postgres as the db. Set up the db username and password in server/db.js .\n\n## Client\nAngular CLI, Apollo Client. Goal is to keep GraphQL queries co-located with container components.\n\n## Service worker\nApollo Graphql server with pouchdb?\n\n## Server\nApollo GraphQL Server with Postgres backend db. As currently envisioned, Couchdb instances will be created for each client. Or maybe there is a better solution I haven't thought of yet?\n\n## Goals\nThe architecture I am envisioning works as follows:\n\nClient will combine apollo angular client  such that graphql queries will be co-located with container components. \nIf no service worker, server will serve graphql response.\nIf service worker, we will set up an apollo graphql server with pouchdb, sync'd with a couchdb on the server side.\nQueries will be cached by the server in the couchdb instance, which will get sync'd to the client. \nGraphql queries will be executed both client side and server side. Server response will take precendence.\n\nIf no service worker, mutations will be served by the server as normal.\nIf service worker, mutations will be executed against the service worker pouchdb,\nwhich will get sync'd with the server pouchdb which will get sync'd with the Postgres db.\n\nSubscriptions will also be handled since all the db's involved support pubsub.\n\n## todo\n\n* display server-side errors on the client\n* mark fields as required\n* authentication, including routes\n* authorization, role-based security\n* abstract resolvers to keep isPgp check DRY\n* graphql subscriptions\n* support persisted query whitelisting\n* support NODE_ENV production or development\n* refactor according to https://dev-blog.apollodata.com/the-anatomy-of-a-graphql-query-6dffa9e9e747#.clu5rbnxc\n* testing!\n* https\n* http2?\n* offline\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkinsey808%2Fgraphql-fullstack-seed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbkinsey808%2Fgraphql-fullstack-seed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbkinsey808%2Fgraphql-fullstack-seed/lists"}