{"id":21252583,"url":"https://github.com/cartercobb/parkyourpooch","last_synced_at":"2026-04-13T22:32:24.003Z","repository":{"id":48256767,"uuid":"392395360","full_name":"CarterCobb/ParkYourPooch","owner":"CarterCobb","description":"Service-Based Software Architecture Project - Park Your Pooch dog daycare web client + API","archived":false,"fork":false,"pushed_at":"2021-08-30T23:16:11.000Z","size":6021,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-21T21:07:28.158Z","etag":null,"topics":["eureka-server","microservices","nodejs","react","rest-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CarterCobb.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":"2021-08-03T17:14:00.000Z","updated_at":"2021-08-30T23:16:13.000Z","dependencies_parsed_at":"2022-09-03T08:01:44.513Z","dependency_job_id":null,"html_url":"https://github.com/CarterCobb/ParkYourPooch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarterCobb%2FParkYourPooch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarterCobb%2FParkYourPooch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarterCobb%2FParkYourPooch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CarterCobb%2FParkYourPooch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CarterCobb","download_url":"https://codeload.github.com/CarterCobb/ParkYourPooch/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243690124,"owners_count":20331726,"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","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":["eureka-server","microservices","nodejs","react","rest-api"],"created_at":"2024-11-21T03:47:59.895Z","updated_at":"2026-04-13T22:32:18.959Z","avatar_url":"https://github.com/CarterCobb.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Park Your Pooch\n\nBuilt by Carter J. Cobb\n\n## Details\n\nThis project uses Node.js, Express.js, React.js, MongoDB, Redis, Redux, JSON Web Token, Eureka, NGINX, and Docker to build a microserviced api and client. Requirements this project satifies are as follows:\n\n### Business Requirements\n\nPark your Pooch is a system for a dog daycare center where customers can book a pooch parking at the facility (daycare for their dog). Customers will login and reserve rooms for their dogs. Rooms will be reserved for the booked time after successfully paying for the booking. Employees can login to see booking and rooms as well as dogs assigned to those rooms.\n\nThe application is targeted towards working professionals or families planning vacation time who need a place to keep their dog while they are away from home. This group of people need the application to quickly and easily plan to take care of their dog while they are away. They would want to use this because they can book rooms in advance and plan for the future through an online interface over calling a daycare center or requiring a loved one to care for the dog during their absence.\n\n### Technical Requirements\n\n- Appropriate service boundaries that encapsulate areas of responsibility and discourage \"chatty\" service communications.\n- At least one instance of every service.\n- For at least two services have at least two instances.\n- At least two different data storage classifications as backing databases (i.e. not all backing databases can be SQL-based. For clarity: Both MariaDB and SQLServer are SQL-based data stores.\n- A service registration/discover service is required and all services must register regardless of communication needs.\n- All external request (UI clients) must route through an edge service.\n- Each service should have it's own suite of automated test cases that can be run independently in a mock environment.\n- Your entire system (databases, services, etc.) must be deployed using a single docker compose file (except your external client/UI).\n- The external client/UI must be either a web (SPA) or mobile client.\n\n### Requirements To Start\n\n- Node.js installed [download link](https://nodejs.org/en/download/)\n- Docker insalled [download link](https://www.docker.com/products/docker-desktop)\n- WSL2 installed (WindowsOS Only) [download link](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)\n\n### Recommended But Not Required Items\n\n- MongoDB Compass installed [download link](https://www.mongodb.com/try/download/compass)\n- Postman installed [download link](https://www.postman.com/downloads/)\n- RedisInsight installed [download link](https://redislabs.com/redis-enterprise/redis-insight/)\n\n## Pre Run\n\n- add a `.env` file in the root directory.\n- .env file keys:\n  - HOST_PATH=~/path/to/local/directory\n\n### Customer Microservice Requirements\n\n- add a `.env` file in the root of the `customer` directory (`./services/customer/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - MONGO_URL=mongodb://mongo:27017\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n  - REFRESH_TOKEN_SECRET=FNrNvfYraHCdPWC2qV2dfbgXoD3d1rKxeZ8VjSiA\n\n### Employee Microservice Requirements\n\n- add a `.env` file in the root of the `employee` directory (`./services/employee/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - MONGO_URL=mongodb://mongo:27017\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n  - REFRESH_TOKEN_SECRET=FNrNvfYraHCdPWC2qV2dfbgXoD3d1rKxeZ8VjSiA\n\n### Gateway Microservice Requirements\n\n- add a `.env` file in the root of the `gateway` directory (`./services/gateway/.env`)\n- .env file keys:\n  - NODE_ENV=development\n\n### Order Microservice Requirements\n\n- add a `.env` file in the root of the `order` directory (`./services/order/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - MONGO_URL=mongodb://mongo:27017\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n\n### Pooch Microservice Requirements\n\n- add a `.env` file in the root of the `pooch` directory (`./services/pooch/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - MONGO_URL=mongodb://mongo:27017\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n\n### Room Microservice Requirements\n\n- add a `.env` file in the root of the `room` directory (`./services/room/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - MONGO_URL=mongodb://mongo:27017\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n\n### API Gateway Service Requirements\n\n- add a `.env` file in the root of the `gateway` directory (`./services/gateway/.env`)\n- .env file keys:\n  - NODE_ENV=development\n  - ACCESS_TOKEN_SECRET=yzQnI8Y2lGxrvNe6TObEt53HDDapxnBTuvts58dL\n  - REFRESH_TOKEN_SECRET=FNrNvfYraHCdPWC2qV2dfbgXoD3d1rKxeZ8VjSiA\n\n## Run\n\n- Simply run `docker-compose up -d --build` in the terminal on the root directory\n\nTo add an employee to test with:\n\n```shell\ndb.employee.insert(\n  {\n    name: \"admin\",\n    password: \"$2a$10$sCZid8ACGmCmrV0pGOXNOuDwMyU8jOQfG9vefZmf69KfmYs..i9Re\",\n    role: \"EMPLOYEE\"\n  })\n```\n\n### Accessible localhost Items\n\n- Front end will be accessible at \u003chttp://localhost:7777\u003e\n- API Gateway will be accessable at \u003chttp://localhost:1000\u003e\n- Eureka Web Client will be accessible at \u003chttp://localhost:8080\u003e\n- Containerized MongoDB data store will be accessible at \u003chttp://localhost:8989\u003e\n- Containerized Redis data store will be accessible at \u003chttp://localhost:6379\u003e\n\n## Test\n\n- Each service has independent unit tests. While inside the root directory of a service run `npm test`.\n\n## Additional Details\n\nThis was built as an assignment for a college class at Neumont College of Computer Science. Please do not use any part of this project in any way that would be considered plagiarism.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartercobb%2Fparkyourpooch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcartercobb%2Fparkyourpooch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcartercobb%2Fparkyourpooch/lists"}