{"id":23050812,"url":"https://github.com/geta/package-shared","last_synced_at":"2026-01-15T22:10:08.613Z","repository":{"id":66329523,"uuid":"197429255","full_name":"Geta/package-shared","owner":"Geta","description":"Shared resources for Geta packages","archived":false,"fork":false,"pushed_at":"2019-09-07T06:24:26.000Z","size":72,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-03T03:42:32.323Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Geta.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-17T16:54:00.000Z","updated_at":"2019-09-07T06:23:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"563d8643-9f3e-4da4-beb8-821b6cc1887e","html_url":"https://github.com/Geta/package-shared","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Geta/package-shared","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geta%2Fpackage-shared","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geta%2Fpackage-shared/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geta%2Fpackage-shared/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geta%2Fpackage-shared/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Geta","download_url":"https://codeload.github.com/Geta/package-shared/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Geta%2Fpackage-shared/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T20:50:13.584Z","status":"ssl_error","status_checked_at":"2026-01-15T20:49:17.379Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2024-12-15T23:38:07.221Z","updated_at":"2026-01-15T22:10:08.597Z","avatar_url":"https://github.com/Geta.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geta Package Shared Repository\n\n## Purpose\n\nPurpose of this repository contains some shareable content for all our packages.\n\n## Local development set up\n\nEach application should contain a sample project which can be used for testing the package functionality. Docker is used to simplify the set up of the local development machine. With this approach every developer can pull the code from the repository and run it in Visual Studio without doing manual steps (restoring database, configuring IIS, etc).\n\n### Sample Sites\n\n- Package that only contains CMS features: [Alloy](https://github.com/episerver/AlloyDemoKit)\n- Package that contains CMS or/and Commerce features: [Quicksilver](https://github.com/episerver/Quicksilver)\n\n### Docker Prerequisites\n\n- Checkout the repository\n- Install Docker on your local machine: https://docs.docker.com/get-started/\n- Enabling virtualization in BIOS advanced CPU settings\n\nIf you don't enable virtualization in the BIOS you'll get this message when starting Docker:\n\n```\nHardware assisted virtualization and data execution protection must be enabled in the BIOS\n```\n\n### Configure Docker for Sample Project\n\nRight click sample project and select `Container Orchestrator Support`.\n\n![add container support](docs/images/add-container-support.png)\n\nThis will create a `Dockerfile` which contains a PowerShell script and a new project called `docker-compose`. The `docker-compose` project holds the server images configurations.\n\nThe sample project should have a reference to the package project.\n\n#### Windows Server Container(s)\n\nFor running either Alloy or Quicksilver a Windows container is used. For Quicksilver two containers are defined because commerce solutions also include the manager. The definition of the containers can be found in the `docker-compose.yml`. Example of the Quicksilver site:\n\n```\ngeta-[PACKAGENAME]-sample-web:\n  image: ${DOCKER_REGISTRY-}geta-[PACKAGENAME]-sample-web\n  build:\n    context: ..\\EPiServer.Reference.Commerce.Site\n    dockerfile: Dockerfile\n  networks:\n    geta-[PACKAGENAME]-network:\n      ipv4_address: 0.0.0.0\n  depends_on:\n    - geta-[PACKAGENAME]-sample-db\n  mac_address: 00-00-00-00-00-00\n  volumes:\n    - ../../../src/[PACKAGENAME]/module/:C:/data/\n```\n\nAs you can see in the definition it contains a volume mapping for the `App_Data`. In this folder, you can normally find all the blobs. Make sure to use the correct path in the `\u003cepiserver.framework /\u003e:\n\n```\n\u003cepiserver.framework\u003e\n  \u003cappData basePath=\"C:/appdata/\" /\u003e\n\u003c/episerver.framework\u003e\n```\n\nMore tips:\n\n- Specify a MAC address for the Episerver License\n- Define a static IP address (otherwise Docker uses a random IP)\n\nAnd for the manager:\n\n```\n geta-[PACKAGENAME]-sample-manager:\n    image: ${DOCKER_REGISTRY-}geta-[PACKAGENAME]-sample-manager\n    build:\n      context: ..\\EPiServer.Reference.Commerce.Manager\n      dockerfile: Dockerfile\n    networks:\n     geta-[PACKAGENAME]-network:\n        ipv4_address: 0.0.0.0\n    depends_on:\n     - geta-[PACKAGENAME]-sample-db\n```\n\n#### SQL Server Container\n\nA separate SQL container is used for the database(s). The volume mapping is used for the location of the database files (.mdf and .ldf).\n\n```\ngeta-[PACKAGENAME]-sample-db:\n    image: microsoft/mssql-server-windows-developer:1709\n    environment:\n     - ACCEPT_EULA=Y\n     - sa_password=SECRET\n     - attach_dbs=[{'dbName':'[PACKAGENAME].Quicksilver.Cms','dbFiles':['C:\\\\data\\\\[PACKAGENAME].Quicksilver.Cms.mdf','C:\\\\data\\\\[PACKAGENAME].Quicksilver.Cms_log.ldf']},{'dbName':'[PACKAGENAME].Quicksilver.Commerce','dbFiles':['C:\\\\data\\\\[PACKAGENAME].Quicksilver.Commerce.mdf','C:\\\\data\\\\[PACKAGENAME].Quicksilver.Commerce_log.ldf']}]\n    volumes:\n      - ../EPiServer.Reference.Commerce.Site/App_Data/:C:/data/\n    networks:\n      - geta-[PACKAGENAME]-network\n```\n\nThe connection string should point to the SQL container.\n\n```\n\u003cconnectionStrings\u003e\n    \u003cclear /\u003e\n    \u003cadd name=\"EPiServerDB\" connectionString=\"Data Source=geta-[PACKAGENAME]-sample-db;Initial Catalog=[PACKAGENAME].Quicksilver.Cms;Integrated Security=False;User ID=sa;Password=SECRET;MultipleActiveResultSets=True\" providerName=\"System.Data.SqlClient\" /\u003e\n    \u003cadd name=\"EcfSqlConnection\" connectionString=\"Data Source=geta-[PACKAGENAME]-sample-db;Initial Catalog=[PACKAGENAME].Quicksilver.Commerce;Integrated Security=False;User ID=sa;Password=SECRET;Connect Timeout=10;Application Name=ECApplication\" providerName=\"System.Data.SqlClient\" /\u003e\n  \u003c/connectionStrings\u003e\n```\n\n#### Network\n\nThe Windows and SQL container definition includes a `networks:` configuration. This is mandatory so that both servers are hosted in the same network. The `-subnet` configuration is used so we can use static IP addresses for the containers.\n\n```\nnetworks:\n  geta-[PACKAGENAME]-network:\n    ipam:\n      driver: default\n      config:\n         - subnet: '172.16.238.0/24'\n```\n\n#### Client resources\n\nIf the package includes client resources make sure that the files are grouped in one folder in the package project. In order to load them inside the sample site (Alloy or Quicksilver) define a virtual directory in the `Dockerfile`:\n\n```\nRUN New-WebVirtualDirectory -Site 'Default Web Site' -Name 'Episerver/[PACKAGENAME]/' -PhysicalPath c:\\data\\\n```\n\nIn the docker-compose project create a volume mapping. For example:\n\n```\ngeta-[PACKAGENAME]-sample-web:\n  image: ${DOCKER_REGISTRY-}geta-[PACKAGENAME]-sample-web\n  volumes:\n    - ../../../src/[PACKAGENAME]/module/:C:/data/\n```\n\nThis allows the developer to change the code in the package project without copying the files to the sample project.\n\nSee example implementations for [Geta.Tags](https://github.com/Geta/tags) and [Geta.SEO.Sitemaps](https://github.com/Geta/seo.sitemaps)\n\n### Get Started with Sample Project\n\nSet the `docker-compose` as default project (if not already by default). Now, the required images are downloaded (Windows server and SQL server), this will take some time. Note, this only happens the first time after that it cached on your local machine. See Output window (source Docker) to follow the progress. After you see the line 'Docker containers are ready', you are ready to run the project.\n\n![Docker output](docs/images/docker-output.PNG)\n\nAfter the images are downloaded just run the project and start debugging the code. The frontend and backend code can be found in the package project. The frontend code is available under the module folder.\n\nWhen the browser is not automatically opened, go to the docker output window and check the IP addresses.\n\n![Docker debugging output](docs/images/docker-debugging-output.PNG)\n\nYou can find the IP addresses also in the `docker-compose.yml` file.\n\n### QuickSilver login\n\nUse the default admin@example.com user for QuickSilver, see [installation](https://github.com/episerver/Quicksilver).\n\n### Alloy login\n\nUse the default epiadmin user for Alloy, see [logins](https://github.com/episerver/AlloyDemoKit/wiki/Logins).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeta%2Fpackage-shared","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeta%2Fpackage-shared","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeta%2Fpackage-shared/lists"}