{"id":29406377,"url":"https://github.com/amielcyber/dotnetpetsearch","last_synced_at":"2025-07-10T23:20:12.360Z","repository":{"id":297492041,"uuid":"996395560","full_name":"AmielCyber/DotnetPetSearch","owner":"AmielCyber","description":"Pet Search API ported to MVC Controllers","archived":false,"fork":false,"pushed_at":"2025-07-04T20:07:09.000Z","size":18386,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-04T21:21:34.932Z","etag":null,"topics":["asp-net-core","c-sharp","mapbox-api","petfinder-api","web-api"],"latest_commit_sha":null,"homepage":"https://pet-search.azurewebsites.net","language":"C#","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/AmielCyber.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-04T22:25:40.000Z","updated_at":"2025-07-04T20:07:12.000Z","dependencies_parsed_at":"2025-06-05T19:39:04.330Z","dependency_job_id":"96680776-4d50-46cb-9327-dcebd9d35687","html_url":"https://github.com/AmielCyber/DotnetPetSearch","commit_stats":null,"previous_names":["amielcyber/dotnetpetsearch"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AmielCyber/DotnetPetSearch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmielCyber%2FDotnetPetSearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmielCyber%2FDotnetPetSearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmielCyber%2FDotnetPetSearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmielCyber%2FDotnetPetSearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AmielCyber","download_url":"https://codeload.github.com/AmielCyber/DotnetPetSearch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AmielCyber%2FDotnetPetSearch/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264686802,"owners_count":23649565,"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":["asp-net-core","c-sharp","mapbox-api","petfinder-api","web-api"],"created_at":"2025-07-10T23:20:09.376Z","updated_at":"2025-07-10T23:20:12.337Z","avatar_url":"https://github.com/AmielCyber.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotnet Pet Search\n\nA user-friendly API allows for the search of available pets for adoption within a specific zip code. Users can also input a zip code or a set of coordinates to obtain the city’s information, enabling them to search for available pets in that area.\n\nThe Web application was developed using ASP.NET Web API and .NET 8. This application has been rewritten and updated to .NET 8 from .NET 7 for better performance and to utilize Object-Oriented Design principles for easier maintenance.\n\n[Original Repository](https://github.com/AmielCyber/PetSearch)\n\nThe Angular application is hosted on Vercel, the React application is hosted on Netlify, and the ASP.NET Web API is hosted on Microsoft Azure.\n\n[Pet Search Angular Application GitHub Repository](https://github.com/AmielCyber/pet-search-angular)\n\n[Pet Search React Application GitHub Repository](https://github.com/AmielCyber/pet-search-react)\n\n## Live Demo\n\n**Note:**\nServer response may take around 10 seconds during a\n[cold start](https://azure.microsoft.com/en-us/blog/understanding-serverless-cold-start/cold) when the server is\nreactivated after 10 minutes of inactivity. I'm considering upgrading the server to 'always on' on Microsoft Azure in\nthe future.\n\n[ASP.NET API Library Specification with Swagger UI](https://pet-search.azurewebsites.net)\n\n[Angular Application Live Demo](https://pet-search-angular.vercel.app)\n\n[React Application Live Demo](https://pet-search-react.netlify.app)\n\n## Preview\n\n![Desktop Preview](/.github/images/DesktopPreview.gif)\n\n![Mobile Preview](/.github/images/MobilePreview.gif)\n\n## Technology Stack\n\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 5px\"\u003e\n    \u003cimg alt=\"C Sharp\" width=\"30px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/csharp/csharp-original.svg\"/\u003e\n    \u003cimg alt=\"Dotnet Core\" width=\"30px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/dotnetcore/dotnetcore-original.svg\"/\u003e\n    \u003cimg alt=\"Azure\" width=\"30px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/azure/azure-original.svg\"/\u003e\n    \u003cimg alt=\"MySQL\" width=\"30px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/mysql/mysql-original.svg\"/\u003e\n\u003c/div\u003e\n\n* Developed with C# and [ASP.NET](https://dotnet.microsoft.com/en-us/apps/aspnet) Web API\n* Tested with [Xunit](https://xunit.net/)\n* Hosted at [Microsoft Azure Web App Deployment](https://azure.microsoft.com/en-us/products/app-service/web)\n* Token storage with [MySQL](https://www.mysql.com/)\n* API Documentation with [OpenApi/Swagger](https://www.openapis.org)\n* Adoptable pet retrieval with [PetFinder API](https://www.petfinder.com/developers/v2/docs/)\n* Location authentication with [MapBox Geolocation API](https://www.mapbox.com)\n\n## Angular Application\n\n[Angular GitHub Source Code](https://github.com/AmielCyber/pet-search-angular)\n\n## React Application\n\n### Note:\nI am no longer serving the React files from ASP.NET. I have decided to host the React application at Netlify instead for\na better user experience and separation of concerns. I have also stopped providing updates for the React application.\nAll client updates will be done through the Angular application.\n\n[React GitHub Source Code](https://github.com/AmielCyber/pet-search-react)\n\n## Local Development Set Up\n\n*Note: This set up assumes you have obtained keys from PetFinder API and MapBox API.*\n\n### Required Dependencies\n\n* [.NET SDK](https://dotnet.microsoft.com/en-us/download)\n* [Docker Container for MySQL](https://hub.docker.com/_/mysql)\n\n### Running the Production Build\n\n1. Clone this repository:\n\n```bash\ngit clone https://github.com/AmielCyber/DotnetPetSearch\n```\n\n2. After cloning this repository, go to the repository directory:\n\n```bash\ncd DotnetPetSearch\n```\n#### MySql Setup\nYou must set a MySQL database and create a username and password. You can do that with a docker container with a MySQL 8.0. To set up the container enter the following in your terminal:\n```Bash\ndocker run -d - e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=petsearchdb --name petsearchdb -p 3307:3306 mysql: 8.0\n```\nYou may replace the password and the database name to your own like, but you will also need to update those values in appsettings.Development.json\n\n#### Get API Tokens\nYou must get access tokens from MapBox and PetFinder API\n\n[PetFinder API](https://www.petfinder.com/developers/v2/docs/)\n\n[MapBox Geolocation API](https://www.mapbox.com)\n\n#### ASP.NET Setup\n1. Go to the API application of the ASP.NET project:\n```bash\ncd ./DotnetPetSearch.API\n```\n2. Register **your** PetFinder and MapBox keys using [user-secrets](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0\u0026tabs=windows)\n```bash\ndotnet user-secrets init\ndotnet user-secrets set \"PetFinderCredentials:ClientId\" \"your_client_id\"\ndotnet user-secrets set \"PetFinderCredentials:ClientSecret\" \"your_client_secret\"\ndotnet user-secrets set \"MapBox:AccessToken\" \"your_access_token\"\n```\n3. Download and install NuGet dependencies:\n    ```bash\n    dotnet restore\n    ```\n4. Build the .NET application:\n   ```bash\n   dotnet build\n   ```\n5. Create MySQL database:\n   ```bash\n   dotnet ef database update -p ../DotnetPetSearch.Data\n   ```\n6. Run tests:\n   ```bash\n   dotnet test\n   ```\n7. Run the application:\n   ```bash\n   dotnet run\n   ```\n    * In the terminal check what port the application is using and click or copy the link and it should direct you to the Swagger UI Application\n   ```\n   http://localhost:{port}\n   ```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famielcyber%2Fdotnetpetsearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famielcyber%2Fdotnetpetsearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famielcyber%2Fdotnetpetsearch/lists"}