{"id":28955867,"url":"https://github.com/sayandedotcom/refhired.com-microservices","last_synced_at":"2026-04-10T11:32:35.867Z","repository":{"id":299222458,"uuid":"1002188905","full_name":"sayandedotcom/refhired.com-microservices","owner":"sayandedotcom","description":"Refhired.com with micro-service implementation","archived":false,"fork":false,"pushed_at":"2025-06-25T20:33:31.000Z","size":1533,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-03T16:43:09.254Z","etag":null,"topics":["docker","gcp","kubernetes","mongodb","nextjs15","nodejs","postgresql","prisma","react-query","skaffold"],"latest_commit_sha":null,"homepage":"https://blogs.sayande.com/building-a-microservice-application","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/sayandedotcom.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,"zenodo":null}},"created_at":"2025-06-14T22:56:28.000Z","updated_at":"2025-07-14T18:10:42.000Z","dependencies_parsed_at":"2025-08-03T16:47:24.308Z","dependency_job_id":null,"html_url":"https://github.com/sayandedotcom/refhired.com-microservices","commit_stats":null,"previous_names":["sayandedotcom/refhired.com-microservices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sayandedotcom/refhired.com-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayandedotcom%2Frefhired.com-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayandedotcom%2Frefhired.com-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayandedotcom%2Frefhired.com-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayandedotcom%2Frefhired.com-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sayandedotcom","download_url":"https://codeload.github.com/sayandedotcom/refhired.com-microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayandedotcom%2Frefhired.com-microservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31641114,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"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":["docker","gcp","kubernetes","mongodb","nextjs15","nodejs","postgresql","prisma","react-query","skaffold"],"created_at":"2025-06-23T20:11:55.394Z","updated_at":"2026-04-10T11:32:35.849Z","avatar_url":"https://github.com/sayandedotcom.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Info\n\nThis github reopository is minimal (not all features) mictoservice implementation of [this project](https://github.com/sayandedotcom/refhired.com).\n\n\u003c!-- You can read more about this in [this blog](https://github.com/sayandedotcom/refhired.com) --\u003e\n\n## Tech Stack List\n\n| Tech Stack                      | Info.                                                                                         |\n| ------------------------------- | --------------------------------------------------------------------------------------------- |\n| **Next.js 15**                  | A React framework for building server-side rendered applications.                             |\n| **TailwindCSS**                 | A utility-first CSS framework for styling the front-end.                                      |\n| **Shadcn**                      | A component library for building user interfaces with React.                                  |\n| **Node.js**                     | A JavaScript runtime for building server-side applications.                                   |\n| **Express.js**                  | A web application framework for Node.js, used for building APIs.                              |\n| **NATS Streaming**              | A lightweight messaging system for microservices communication.                               |\n| **Prisma**                      | An ORM (Object-Relational Mapping) tool for Node.js, used for database interactions.          |\n| **PostgreSQL**                  | A relational database management system used for storing data.                                |\n| **Mongoose**                    | An ODM (Object Data Modeling) library for MongoDB, used for database interactions.            |\n| **MongoDB**                     | A NoSQL database used for storing data in a flexible, JSON-like format.                       |\n| **Stripe**                      | A payment processing platform for handling payments and subscriptions.                        |\n| **Kubernetes**                  | A container orchestration platform for deploying and managing microservices.                  |\n| **Docker**                      | A platform for developing, shipping, and running applications in containers.                  |\n| **Skaffold**                    | A tool for continuous development and deployment of Kubernetes applications.                  |\n| **GitHub Actions**              | A CI/CD tool for automating workflows, such as building, testing, and deploying applications. |\n| **Google Cloud Platform (GCP)** | A cloud computing platform for hosting and managing applications and services.                |\n\n## Kubernetes Features used\n\n| Feature                      | Info.                                                                                                    |\n| ---------------------------- | -------------------------------------------------------------------------------------------------------- |\n| **Pods**                     | The smallest deployable units in Kubernetes, used to run microservices.                                  |\n| **ReplicaSets**              | Used to ensure that a specified number of pod replicas are running at any given time.                    |\n| **Deployments**              | Used to manage the deployment of microservices, ensuring they are running and updated.                   |\n| **Services**                 | Used to expose microservices and enable communication between them.                                      |\n| **Ingress-Nginx Controller** | Used to manage external access to the microservices, routing traffic to the appropriate services.        |\n| **Jobs**                     | Used to run one-time tasks, such as database migrations or data processing.                              |\n| **CronJobs**                 | Used to schedule recurring tasks, such as cleaning up expired posts in the `posts-cleanup-corn` service. |\n| **ConfigMaps**               | Used to manage configuration data for microservices, such as environment variables.                      |\n| **Secrets**                  | Used to manage sensitive information, such as API keys and database credentials.                         |\n| **Persistent Volumes**       | Used to manage persistent storage for microservices, such as databases.                                  |\n| **Resource Quotas**          | Used to limit the resources (CPU, memory) that microservices can consume within a namespace.             |\n| **CornJob**                  | Used to schedule tasks, such as cleaning up expired posts in the `posts-cleanup-corn` service.           |\n\n## Services List\n\nThese folder contains the individual services for microservices for the project. Each service is a separate package that can be developed, tested, scales and deployed independently.\n\n| Index No. | Folder               | Services                            | Tech Stack                                                      |\n| --------- | -------------------- | ----------------------------------- | --------------------------------------------------------------- |\n| 1         | `apply`              | Feature to apply for referrals      | Node.js, Express.js, NATS Streaming, Prisma, PostgreSQL         |\n| 2         | `auth`               | Centeralised authentication service | Node.js, Express.js, NATS Streaming, Mongoose, MongoDB          |\n| 3         | `client`             | Front-end                           | Next.js 15, TailwindCSS, Shadcn, React Query                    |\n| 4         | `payments`           | Payment Service                     | Stripe, Node.js, Express.js, NATS Streaming, Prisma, PostgreSQL |\n| 5         | `posts`              | To create or update posts           | Node.js, Express.js, NATS Streaming, Prisma, PostgreSQL         |\n| 6         | `posts-cleanup-corn` | Cron Job to delete expired posts    | Node.js, Express.js, NATS Streaming, Prisma, PostgreSQL         |\n\n## Important Folders\n\n### 1. `infra` folder\n\nThe `infra` folder contains the infrastructure YAML files for Kubernetes deployments, service, and ingress files. It is used to set up the necessary infrastructure for the microservices to run in a Kubernetes environment.\n\n| Index No. | Folder Name       | Info.                                              | Folder     | Info.                                      |\n| --------- | ----------------- | -------------------------------------------------- | ---------- | ------------------------------------------ |\n| 1         | `infra/k8s-gcp`   | K8s files for cloud ( GCP ) deployement            | `k8s`      | K8s deployement files for all services     |\n|           |                   |                                                    | `k8s-dev`  | File for ingress nginx for development env |\n|           |                   |                                                    | `k8s-prod` | File for ingress nginx for production env  |\n| 2         | `infra/k8s-local` | K8s files for local ( docker desktop ) deployement | `k8s`      | K8s deployement files for all services     |\n|           |                   |                                                    | `k8s-dev`  | File for ingress nginx for development env |\n|           |                   |                                                    | `k8s-prod` | File for ingress nginx for production env  |\n\n### 2. `packages` folder\n\nThe `packages` folder contains the common packages to be used by each services in microservices for the project.\n\n| Index No. | Folder Name                       | Info.                                                                 |\n| --------- | --------------------------------- | --------------------------------------------------------------------- |\n| 1         | `packages/common`                 | For shared nats events, route middlewares (error, authentication) etc |\n| 2         | `packages/eslint-config-custom`   | For shared eslint config                                              |\n| 3         | `packages/prettier-config-custom` | For shared prettier config                                            |\n\n### 3. `skaffold` folder\n\nThe `skaffold` folder contains the Skaffold configuration files for the project. Skaffold is a tool that facilitates continuous development for Kubernetes applications.\n\n| Index No. | Folder Name                    | Info.                                    |\n| --------- | ------------------------------ | ---------------------------------------- |\n| 1         | `skaffold/skaffold-gcp.yaml`   | For cloud ( GCP ) deployement            |\n| 2         | `skaffold/skaffold-local.yaml` | For local ( docker desktop ) deployement |\n\n### 4. `.github` folder\n\nThe `.github` folder contains the GitHub Actions workflows for the project. These workflows automate various tasks such as building, testing, and deploying the microservices.\n\n| Index No. | Folder Name                       | Info.                  |\n| --------- | --------------------------------- | ---------------------- |\n| 1         | `.github/workflows/test-*.yaml`   | For testing services   |\n| 2         | `.github/workflows/deploy-*.yaml` | For deploying services |\n\n## Important Files\n\n| Index No. | File Name     | Info.                                                                             |\n| --------- | ------------- | --------------------------------------------------------------------------------- |\n| 1         | skaffold.yaml | This is the main skaffold.yaml file copy and pasy any file from `skaffold` folder |\n\n## How to run\n\n1. Clone the repository\n\n   ```bash\n   git clone https://github.com/sayandedotcom/refhired.com-microservices\n   ```\n\n2. Navigate to `deploy guide` folder, it containes the deployment guide for local ( [local.md](https://github.com/sayandedotcom/refhired.com-microservices/blob/main/deploy-guide/local.md)) and cloud ( google-cloud.md ) deployement.\n   Folow the instructions in the respective file to deploy the services. and then run:\n\n   ```bash\n   skaffold dev\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayandedotcom%2Frefhired.com-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsayandedotcom%2Frefhired.com-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayandedotcom%2Frefhired.com-microservices/lists"}