{"id":19472255,"url":"https://github.com/jakuj/quantum-explorer","last_synced_at":"2025-02-25T15:24:08.322Z","repository":{"id":107245263,"uuid":"277878157","full_name":"JakuJ/quantum-explorer","owner":"JakuJ","description":"Bachelor's project: Compiler Explorer for Q#","archived":false,"fork":false,"pushed_at":"2021-07-12T17:33:50.000Z","size":4706,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-02-24T09:40:21.015Z","etag":null,"topics":["qsharp","quantum-computing"],"latest_commit_sha":null,"homepage":"https://qexplorer.herokuapp.com","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/JakuJ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2020-07-07T17:15:25.000Z","updated_at":"2023-01-26T11:07:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"9b5b00ce-4ea1-40f7-89a8-27e114c9cb1e","html_url":"https://github.com/JakuJ/quantum-explorer","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakuJ%2Fquantum-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakuJ%2Fquantum-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakuJ%2Fquantum-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakuJ%2Fquantum-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakuJ","download_url":"https://codeload.github.com/JakuJ/quantum-explorer/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240692345,"owners_count":19842235,"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":["qsharp","quantum-computing"],"created_at":"2024-11-10T19:13:45.111Z","updated_at":"2025-02-25T15:24:08.290Z","avatar_url":"https://github.com/JakuJ.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"./Explorer/wwwroot/images/QE-logo-192x192.png\" alt=\"Quantum Explorer\" width=\"96\"\u003e\n  \u003cbr\u003e\n  Quantum Explorer\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003eAn interactive, web-based IDE/playground for the \u003ca href=\"https://docs.microsoft.com/en-us/azure/quantum/\"\u003eQ#\u003c/a\u003e quantum computing language.\n\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\nDeveloped by \u003ca href=\"https://github.com/Adam-Kowalczyk\"\u003eAdam Kowalczyk\u003c/a\u003e, \u003ca href=\"https://github.com/JakuJ\"\u003eJakub Janaszkiewicz\u003c/a\u003e and \u003ca href=\"https://github.com/skdw\"\u003eKamil Górzyński\u003c/a\u003e as part of a bachelor's thesis at the Faculty of Mathematics and Information Science, Warsaw University of Technology.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/JakuJ/quantum-explorer/workflows/.NET%20Core/badge.svg\" alt=\".NET Core\"/\u003e\n\n\u003ca href=\"https://codecov.io/gh/JakuJ/quantum-explorer\"\u003e\n\u003cimg src=\"https://codecov.io/gh/JakuJ/quantum-explorer/branch/develop/graph/badge.svg?token=D74R7H1V3O\" alt=\"Codecov\" /\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#key-features\"\u003eKey features\u003c/a\u003e •\n  \u003ca href=\"#building\"\u003eBuilding\u003c/a\u003e •\n  \u003ca href=\"#deployment\"\u003eDeployment\u003c/a\u003e\n\u003c/p\u003e\n\n![Screenshot](./docs/screenshot.png)\n\n# Key features\n\n* Edit Q# code with live language server support\n* Compile and simulate your programs locally or in the cloud\n* View quantum circuits corresponding to your operations in a graphical composer\n* Visualize register state at every point of the simulation\n* Share code with other users using a link\n* Explore a small built-in library of example quantum algorithms\n\n# Building\n\nTo build the app locally, make sure you have the following installed:\n\n- .NET 5 SDK and runtime\n- .NET Core 3.1 SDK and runtime\n- npm\n\nand use the `dotnet` CLI:\n\n```shell\ndotnet run --project Explorer\n```\n\nAlternatively, use Docker with the provided `Dockerfile`.\n\nThe `docker-compose` file included in this repository allows you to run the containerized version of the app along with the [language server](https://github.com/JakuJ/qsharp-compiler-mirror) and a database.\n# Deployment\n\nThe production version of the app is meant to be deployed on **Azure**. The development version is running on a free-tier Heroku instance.\n\n## Development\n\nThe development version of the app, tracking the `develop` branch is running at https://qexplorer.herokuapp.com. The\ndeployment happens automatically using a push hook configured in Heroku.\n\nThe runtime config involves setting **config vars** as follows:\n\n| Variable | Value |\n|---|---|\n| ASPNETCORE_ENVIRONMENT | Development |\n| LANGUAGE_SERVER_URL | wss://qexplorer-ls.herokuapp.com |\n\nThis version of the application executes Q# compilation and simulation on the same server as the app itself. \n\n**NOTE**: Simulating quantum circuits requires substantial amounts of memory and the free-tier instance is prone to rebooting if too many simulations are scheduled at the same time.\n\n## Production\n\nThe production version of the app is meant to be deployed to an Azure Web App for Containers.\n\n**NOTE**: The names for Azure services in the configuration below are such as we had set up during development.\n\nThe deployment is performed manually by pushing the Docker container (or rather, its build context, the build is remote)\nto Azure Container Repository (ACR). Run the following Azure CLI commands from the root folder of the repository:\n\n```shell \naz acr build --registry QuantumExplorer --image explorer:\u003ctag\u003e --build-arg NODE_ENV=production --verbose .\n```\n\nwhere `\u003ctag\u003e` is the docker image tag for the release (e.g. `latest` or `1.0`).\n\nThe runtime config involves setting **application settings** as follows:\n\n| Variable | Value |\n|---|---|\n| ASPNETCORE_ENVIRONMENT | Production |\n| LANGUAGE_SERVER_URL | wss://language-server.azurewebsites.net  |\n| FUNCTION_ENDPOINT | https://qs-compiler.azurewebsites.net/api/CompilerFunction |\n| FUNCTION_KEY | \\\u003cdefault key from the Azure Function \"App keys\" panel\u003e |\n\nThis version of the application executes Q# compilation and simulation using the Azure Function from\nthe `Compiler.AzureFunction` project.\n\nIn order to access the production endpoint, the `FUNCTION_KEY` environment variable has to be provided. Otherwise,\nthe `401 Unauthorized` status code is returned.\n\n### Azure Functions app\n\nThe Q# compiler module used in production is deployed to Azure Functions. In order to push a new version of the app,\nopen this repository in VS Code with the Azure Functions extension installed. Rebuild the `Compiler.AzureFunction`\nproject and deploy from the extension to the `qs-compiler` Azure Functions app.\n\nTo test the function locally run the following command in the `Compiler.AzureFunction` directory:\n\n```shell\nfunc host start --port 7071 --pause-on-error --verbose --csharp\n```\n\nand set the `FUNCTION_ENDPOINT` environment variable to the link it gives you.\nAlso, the `ASPNETCORE_ENVIRONMENT` variable has to be set to \"Production\".\n\n### Database\n\nTo set up a local database from migrations you should\nhave [Entity Framework Core tools](https://docs.microsoft.com/en-us/ef/core/cli/dotnet) installed.\n\nIf you want to use MS SQL Server in a Docker container, run:\n\n```shell\ndocker pull microsoft/mssql-server-linux:2017-latest\ndocker run -e \"ACCEPT_EULA=Y\" -e \"MSSQL_SA_PASSWORD=YourStrong!Passw0rd\" -p 1433:1433 -d microsoft/mssql-server-linux:2017-latest\n\n# or\n\ndocker-compose up --build database\n```\n\nThen change the `ConnectionString` in `Explorer/appsetting.json` to:\n`\"Server=127.0.0.1,1433;Database=CodeDatabase;User Id=SA;Password=YourStrong!Passw0rd;\"`\n\nNext, from the root folder of the repository, run:\n\n```shell\ndotnet ef database update --startup-project Explorer\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakuj%2Fquantum-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakuj%2Fquantum-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakuj%2Fquantum-explorer/lists"}