{"id":15011577,"url":"https://github.com/nuget/nugetgallery","last_synced_at":"2025-05-12T15:23:48.532Z","repository":{"id":37610842,"uuid":"2180736","full_name":"NuGet/NuGetGallery","owner":"NuGet","description":"NuGet Gallery is a package repository that powers https://www.nuget.org. Use this repo for reporting NuGet.org issues.","archived":false,"fork":false,"pushed_at":"2025-05-11T19:14:51.000Z","size":104928,"stargazers_count":1576,"open_issues_count":828,"forks_count":653,"subscribers_count":118,"default_branch":"main","last_synced_at":"2025-05-12T15:23:17.348Z","etag":null,"topics":["dotnet","hacktoberfest","nuget"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NuGet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2011-08-09T17:57:32.000Z","updated_at":"2025-05-08T05:12:20.000Z","dependencies_parsed_at":"2023-09-27T03:53:02.800Z","dependency_job_id":"b984c3f5-0741-4803-a5c5-199d9d8e0901","html_url":"https://github.com/NuGet/NuGetGallery","commit_stats":{"total_commits":9078,"total_committers":231,"mean_commits":"39.298701298701296","dds":0.8808107512667989,"last_synced_commit":"febd3fb35bbf25b4a4d40f56859693e0bbf5d6f0"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuGet%2FNuGetGallery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuGet%2FNuGetGallery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuGet%2FNuGetGallery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuGet%2FNuGetGallery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NuGet","download_url":"https://codeload.github.com/NuGet/NuGetGallery/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253764020,"owners_count":21960498,"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":["dotnet","hacktoberfest","nuget"],"created_at":"2024-09-24T19:41:17.331Z","updated_at":"2025-05-12T15:23:48.510Z","avatar_url":"https://github.com/NuGet.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿[NuGet Gallery](https://www.nuget.org/) — Where packages are found \n=======================================================================\n\nThis project powers [nuget.org](https://www.nuget.org), the home for .NET's open-source ecosystem. For information about NuGet, visit the [Home repository](https://github.com/nuget/home).\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.\n\n## Getting started\n\nFirst install prerequisites:\n\n1. Visual Studio 2022 - Install the following [`Workloads`](https://docs.microsoft.com/visualstudio/install/modify-visual-studio) and individual components:\n    * ASP.NET and web development\n    * Azure development\n    * Just web UI functional tests: \"Web performance and load testing tools\" individual component\n\nVisual Studio 2019 may work but Visual Studio 2022 is recommended.\n\nThe \"Azure development\" workload installs SQL Server Express LocalDB which is the database configured for local development.\n\n### Run the gallery website locally\n\nThis repository contains both the gallery web app (what runs www.nuget.org) as well as background jobs and shared libraries.\n\nLet's focus on running the gallery web app locally, first.\n\n1. Clone the repository with `git clone https://github.com/NuGet/NuGetGallery.git`\n2. Navigate to `.\\NuGetGallery`\n3. Build with `.\\build.ps1`\n4. Create the database and enable HTTPS with `.\\tools\\Setup-DevEnvironment.ps1`\n5. Open `.\\NuGetGallery.sln` using Visual Studio\n6. Ensure the `NuGetGallery` project is the StartUp Project and [press `F5` to run the site](https://docs.microsoft.com/visualstudio/get-started/csharp/run-program)\n\nRefer to [our documentation](./docs/) for information on how to develop the frontend, use AAD, and more.\n\n### Shared libraries\n\nThere are a set of shared libraries used across the NuGet server repositories, including:\n\n* NuGet.Services.Configuration\n* NuGet.Services.KeyVault\n* NuGet.Services.Logging\n* NuGet.Services.Owin\n* NuGet.Services.Cursor\n* NuGet.Services.Storage\n\nTo edit them, follow these steps:\n\n1. Build with `.\\build.ps1`\n2. Open `.\\NuGet.Server.Common.sln` using Visual Studio\n3. Create the validation database:\n   - Open Package Manager Console, set `NuGet.Services.Validation` as default project, then run `Update-Database`.\n\nNote that many of these shared projects are also referenced by the other solution (e.g. in `NuGetGallery.sln`) files in the root of the repository, to simplify modification.\n\n### Background jobs\n\nThis repository also contains nuget.org's implementation of the [NuGet V3 API](https://docs.microsoft.com/en-us/nuget/api/overview)\nas well as many other back-end jobs for the operation of nuget.org.\n\n1. Open `.\\NuGet.Jobs.sln` using Visual Studio\n2. Each job would be an exe with 2 main classes `Program` and `Job`\n3. `Program.Main` should simply do the following and nothing more\n\n    ```\n    var job = new Job();\n    JobRunner.Run(job, args).Wait();\n    ```\n    \n4. Job class must inherit `JsonConfigurationJob`. This job based provides some dependency injection setup and has you set configuration in a JSON file.\n\nMost jobs can be run locally with a `-Configuration {path_to_json}` command line argument. Not all follow this pattern.\nCheck the implementation in `Program.cs` or the `README.md` next to the `.csproj` project file for job-specific information.\n\n## Deploy\n### Deploy to Azure\n\nYou will find instructions on how to deploy the Gallery to Azure [here](docs/Deploying/README.md).\n\n### Deploy locally\nAfter you succeed in running the NuGet Gallery, you can create a publish profile to deploy locally (such as your local Windows computer). \n\nThe steps are:\n1. Select the `NuGetGallery` project in Solution Explore of Visual Studio. \n2. Right click the project, and then click `Publish` in the pop-up menu. Create a publish profile and make sure the Target is set to `Folder`.\n3. Copy the contents of the `Target Location` to any folder you want. For the following example, assume the folder is `C:\\ContosoSoftware\\NuGetGallery`.\n4. Execute the command below to start the web app (note that the parameter `/path` of iisexpress.exe only supports absolute paths on Windows).\n    ```cmd\n    \"C:\\Program Files\\IIS Express\\iisexpress.exe\" /path:C:\\ContosoSoftware\\NuGetGallery\n    ```\n\nNow you can access the local website with a web browser. The URL is `https://localhost`.\n\nAfter you deploy it, you don't need using Visual Studio to run it anymore.\n\n## Contribute\n\nIf you find a bug with the gallery, please visit the [Issue tracker](https://github.com/NuGet/NuGetGallery/issues) and \ncreate an issue. If you're feeling generous, please search to see if the issue is already logged before creating a \nnew one.\n\nWhen creating an issue, clearly explain\n* What you were trying to do.\n* What you expected to happen.\n* What actually happened.\n* Steps to reproduce the problem.\n\nAlso include any information you think is relevant to reproducing the problem such as the browser version you used. \nDoes it happen when you switch browsers. And so on.\n\n## Submit a patch\nBefore starting work on an issue, either create an issue or comment on an existing issue to ensure that we're all \ncommunicating. We have a list of items that are [good first issue](https://github.com/NuGet/NuGetGallery/labels/good%20first%20issue) and you can start working on (but always ping us beforehand).\n\nTo contribute to the gallery, make sure to create a fork first. Make your changes in the fork following \nthe Git Workflow. When you are done with your changes, send us a pull request.\n\n## Copyright and License\nCopyright .NET Foundation\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this work except in compliance with \nthe License. You may obtain a copy of the License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed under the License is distributed on \nan \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the \nspecific language governing permissions and limitations under the License.\n\n## Trademarks\n\nThis project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark \u0026 Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.\n\n## The Git Workflow\n\nThis is the Git workflow we're currently using:\n\n### Setting up\n\nClone and checkout the `dev` branch.\n\nVisual Studio may modify the `applicationhost.config` file. You can force git to ignore changes to this file\nwith:\n\n    git update-index --assume-unchanged .vs/config/applicationhost.config\n\nYou can undo this with this command:\n\n    git update-index --no-assume-unchanged .vs/config/applicationhost.config\n\nThis should help prevent unwanted file commits.\n\n### When starting a new feature/unit of work.\n    \n1.  __Pull the latest.__\n    Begin by pulling to make sure you are up-to-date before creating a branch to do your work \n    This assumes you have no local commits that haven't yet been pushed (i.e., that you were \n    previously up-to-date with origin).\n    \n        git checkout dev\n        git pull dev\n    \n2.  __Create a topic branch to do your work.__\n    You must work in topic branches to help us keep our features isolated and easily moved between branches.\n    Our policy is to start all topic branches off of the 'dev' branch. \n    Branch names should use the following format '[user]-[bugnumber]'. If there is no bug yet,\n    create one and assign it to yourself!\n\n        git checkout dev\n        git checkout -b billg-123\n    \n3.  __Do your work.__\n    Now, do your work using the following highly accurate and efficient algorithm :)\n\n    1. Make changes.\n    2. Test your changes (you're practicing TDD, right?)\n    3. Add your changes to git's index.\n        \n            git add -A\n\n    4. Commit your changes.\n        \n            git commit -m \"\u003cdescription of work\u003e\"\n        \n    5. if (moreWorkToDo) go to #3.1 else go to #4.\n\n4.  __Start a code review.__\n    Start a code review by pushing your branch up to GitHub (```git push origin billg-123```) and\n    creating a Pull Request from your branch to ***dev***. Wait for at least someone on the team to approve the PR.\n\n5.  __Merge your changes in to dev.__\n    Click the bright green \"Merge\" button on your pull request! Don't forget to delete the branch afterwards to keep our repo clean.\n\n    If there isn't a bright green button... well, you'll have to do some more complicated merging:\n\n        git checkout dev\n        git pull origin dev\n        git merge billg-123\n        ... resolve conflicts ...\n        git push origin dev\n    \n6.  __Be ready to guide your change through our deployed environments.__\n    Your change will make its way through the DEV (dev.nugettest.org), INT (int.nugettest.org) and finally PROD (www.nuget.org). Be prepared to fix additional bugs!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuget%2Fnugetgallery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuget%2Fnugetgallery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuget%2Fnugetgallery/lists"}