{"id":21023181,"url":"https://github.com/tkssharma/apollo-federation-with-microservices","last_synced_at":"2026-04-25T15:35:12.094Z","repository":{"id":151800262,"uuid":"491656277","full_name":"tkssharma/apollo-federation-with-microservices","owner":"tkssharma","description":"Apollo Federation with set of Microservices ","archived":false,"fork":false,"pushed_at":"2022-06-12T11:49:04.000Z","size":1159,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-12-31T01:58:49.197Z","etag":null,"topics":["apollo-client","apollo-federation","apollo-federation-subgrapgh","nestjs-backend","nestjs-graphql","postgresql"],"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/tkssharma.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":"2022-05-12T20:20:01.000Z","updated_at":"2024-02-21T02:02:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2e848cb-d80a-4e62-8e99-77778f6541e7","html_url":"https://github.com/tkssharma/apollo-federation-with-microservices","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tkssharma/apollo-federation-with-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkssharma%2Fapollo-federation-with-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkssharma%2Fapollo-federation-with-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkssharma%2Fapollo-federation-with-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkssharma%2Fapollo-federation-with-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tkssharma","download_url":"https://codeload.github.com/tkssharma/apollo-federation-with-microservices/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tkssharma%2Fapollo-federation-with-microservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32267710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: 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-client","apollo-federation","apollo-federation-subgrapgh","nestjs-backend","nestjs-graphql","postgresql"],"created_at":"2024-11-19T11:17:07.840Z","updated_at":"2026-04-25T15:35:12.072Z","avatar_url":"https://github.com/tkssharma.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Atlas Fractional\n\n\n#### example diagram to talk about gateway and other micro services\n![](https://romankudryashov.com/blog/2020/12/graphql-rust/images/architecture.png)\n\nAtlas Fractional\n================\nLerna monorepo that holds common platform code and all packages\n\n## Getting Started\n\nInstall dependencies\n\n```\nnpm ci\nnpm run bootstrap\n```\n\nBuild\n\n```\nnpm run build\n```\n### Setting up the whole platform Locally \n\nThis platform contains all these components \n\n- User Manegement service\n- Home Manager service\n- Gateway Service\n- Home Manager Service\n- File Manager Service\n- Notification Manager\n\n### Running all these services \n\n\u003e we are using docker-compose to bootstrap all container only (database containers)\n\u003e in the root of the project run\n```\ngit clone https://github.com/MobileLeapLabs/atlas-fractional.git\ncd atlas-fractional\ndocker-compose up\n\n➜  atlas-fractional git:(intergrations-and-notifications) docker-compose up\natlas-fractional_postgres-notification-manager_1 is up-to-date\natlas-fractional_postgres-auth_1 is up-to-date\natlas-fractional_postgres-home-manager_1 is up-to-date\natlas-fractional_postgres-file-manager_1 is up-to-date\natlas-fractional_postgres-booking-manager_1 is up-to-date\nAttaching to atlas-fractional_postgres-notification-manager_1, atlas-fractional_postgres-auth_1, atlas-fractional_postgres-home-manager_1, atlas-fractional_postgres-file-manager_1, atlas-fractional_postgres-booking-manager_1\n```\n\nNote:  make sure docker-utils script should have 777 permission on local to get executed \n\u003e check the logs and make sure databases has been created \n\n```\nas example ::\npostgres-notification-manager_1  | server started\npostgres-notification-manager_1  | CREATE DATABASE\npostgres-notification-manager_1  |\npostgres-notification-manager_1  |\npostgres-notification-manager_1  | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/postgres-database.sh\npostgres-notification-manager_1  | Multiple database creation requested: \"notification-manager-api\",\"notification-manager-api-testing\"\npostgres-notification-manager_1  |   Creating user and database '\"notification-manager-api\"'\npostgres-notification-manager_1  | CREATE ROLE\npostgres-notification-manager_1  | CREATE DATABASE\npostgres-notification-manager_1  | GRANT\npostgres-notification-manager_1  |   Creating user and database '\"notification-manager-api-testing\"'\npostgres-notification-manager_1  | CREATE ROLE\npostgres-notification-manager_1  | CREATE DATABASE\npostgres-notification-manager_1  | GRANT\npostgres-notification-manager_1  | Multiple databases created\n\n```\n\nAll services follow same pattern for running locally, now we just need to populate .env and run `npm run start:dev` command \n\n### Running Auth service\n\n```sh\ncd auth-service\nvi .env\n```\nNote: You cna take reference from Heroku App setting to know any missing env variables\n\nupdate env with this content \n```\nDATABASE_URL= postgres://api:development_pass@localhost:5431/auth-api\nSENDGRID_API_KEY=23456754324567854324567\nSENDGRID_VERIFIED_SENDER_EMAIL=ack@gmail.com\nDEBUG=\"qapi:*\"\nLOG_LEVEL=http\nPORT=5006\nNODE_ENV=local\nJWT_SECRET=HELLODEMO\nJWT_EXPIRE_IN=3600*24\nNOTIFICATION_API_URL=https://notification-manager-api-dev.herokuapp.com/api/v1\n```\nNow run application in watch mode it will be live on localhost:5006 \n```sh\nnpm run start:dev\n```\n\n\n### Running Home Manager\n\n```sh\ncd home-manager\nvi .env\n```\nupdate env with this content \n```\nNODE_ENV=local\nLOG_LEVEL=http\nPORT=5003\nSECRET_KEY=HELLODEMO\nNEW_RELIC_KEY=\nDATABASE_URL=postgres://api:development_pass@localhost:5433/home-manager-api\nNODE_ENV=local\nJWT_SECRET=HELLODEMO\nJWT_EXPIRE_IN=3600*24\n```\nNow run application in watch mode it will be live on localhost:5003 \n```sh\nnpm run start:dev\n```\n\n### Running Booking Manager\n\n```sh\ncd booking-manager\nvi .env\n```\nupdate env with this content \n```\nNODE_ENV=local\nLOG_LEVEL=http\nPORT=5004\nJWT_SECRET=HELLODEMO\nJWT_EXPIRE_IN=3600*24\nDATABASE_URL=postgres://api:development_pass@localhost:5434/booking-manager-api\n```\nNow run application in watch mode it will be live on localhost:5004\n```sh\nnpm run start:dev\n```\n\n### Running File Manager\n\n```sh\ncd file-manager\nvi .env\n```\nupdate env with this content \n```\nNODE_ENV=local\nLOG_LEVEL=http\nPORT=5009\nDATABASE_URL=postgres://api:development_pass@localhost:5439/file-manager-api\nNODE_ENV=local\nJWT_SECRET=HELLODEMO\nJWT_EXPIRE_IN=3600*24\nAWS_BUCKET_NAME=atlas-fractional-home-ownership\nAWS_ACCESS_KEY=AKIAZGLBBDEH7JMRHCWI\nAWS_SECRET_ACCESS=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\nAWS_REGION=us-east-1\n```\nNow run application in watch mode it will be live on localhost:5009\n```sh\nnpm run start:dev\n```\n\n\n### Running Notification Manager\n\n```sh\ncd notification-manager\nvi .env\n```\nupdate env with this content \n```\nNODE_ENV=local\nPORT=3010\nAUTH_PROVIDER=auth0\nAUTH_SECRET=HELLODEMO\nDATABASE_URL= postgres://api:development_pass@localhost:5435/notification-manager-api\nROLLBAR_TOKEN=\nNEW_RELIC_LICENSE_KEY=\nLOG_LEVEL=http\nSWAGGER_USERNAME=money-moves\nSWAGGER_PASSWORD=money-moves\nSENDGRID_USER=hello\nSENDGRID_PASSWORD=hello\n\n\n```\nNow run application in watch mode it will be live on localhost:5010\n```sh\nnpm run start:dev\n```\n\n\n### Running Gateway Service\n\n```sh\ncd gateway-service\nvi .env\n```\nupdate env with this content \n```\nNODE_ENV=local\nLOG_LEVEL=info\nPORT=5002\nNEW_RELIC_KEY=\nSECRET_KEY=HELLODEMO\nHOME_MANAGER_API=http://localhost:5003/graphql\nAUTH_API=http://localhost:5006/graphql\nBOOKING_MANAGER_API=http://localhost:5004/graphql\nFILE_MANAGER_API=http://localhost:5009/graphql\n```\nNow run application in watch mode it will be live on localhost:5002 \n```sh\nnpm run start:dev\n```\nOnce all services are up we can use gateway service to connect with all apis\n```sh\nhttp://localhost:5002/graphql\n```\n\n## Helpful command for Lerna\n\nFull list of commands\n\n```\nlerna add \u003cpkg\u003e [globs..]  Add a single dependency to matched packages\nlerna bootstrap            Link local packages together and install remaining package dependencies\nlerna changed              List local packages that have changed since the last tagged release [aliases: updated]\nlerna clean                Remove the node_modules directory from all packages\nlerna create \u003cname\u003e [loc]  Create a new lerna-managed package\nlerna diff [pkgName]       Diff all packages or a single package since the last release\nlerna exec [cmd] [args..]  Execute an arbitrary command in each package\nlerna import \u003cdir\u003e         Import a package into the monorepo with commit history\nlerna init                 Create a new Lerna repo or upgrade an existing repo to the current version of Lerna.\nlerna link                 Symlink together all packages that are dependencies of each other\nlerna list                 List local packages [aliases: ls, la, ll]\nlerna publish [bump]       Publish packages in the current project.\nlerna run \u003cscript\u003e         Run an npm script in each package that contains that script\nlerna version [bump]       Bump version of packages changed since the last release.\n```\n\n## Reference\n\n- [Lerna versioning](https://github.com/lerna/lerna/blob/main/commands/version/README.md)\n- [Lerna bootstrap command](https://github.com/lerna/lerna/tree/main/commands/bootstrap#readme)\n- [Issue. Lerna bootstrap does not install all dependencies](https://github.com/lerna/lerna/issues/1457)\n- [Issue. bootstrap removes node_modules from root (during hoist)](https://github.com/lerna/lerna/issues/2361)\n- [Blog. Multi-Package Repos with Lerna](https://www.christopherbiscardi.com/post/multi-package-repos-with-lerna)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkssharma%2Fapollo-federation-with-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftkssharma%2Fapollo-federation-with-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftkssharma%2Fapollo-federation-with-microservices/lists"}