{"id":20699866,"url":"https://github.com/gowhale/go-shopping-list","last_synced_at":"2026-07-15T14:32:54.773Z","repository":{"id":59263132,"uuid":"522653601","full_name":"gowhale/go-shopping-list","owner":"gowhale","description":"Do you find making shopping lists BORING? Because I sure do... This repo is to automate the creation of shopping lists and to practice my Golang skills!","archived":false,"fork":false,"pushed_at":"2022-10-25T16:23:16.000Z","size":70,"stargazers_count":0,"open_issues_count":14,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T03:44:47.868Z","etag":null,"topics":["cooking","golang","golint","mocking","revive","shopping","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"Go","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/gowhale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-08T17:55:23.000Z","updated_at":"2022-09-18T20:24:04.000Z","dependencies_parsed_at":"2023-01-20T14:18:32.264Z","dependency_job_id":null,"html_url":"https://github.com/gowhale/go-shopping-list","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/gowhale/go-shopping-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gowhale%2Fgo-shopping-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gowhale%2Fgo-shopping-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gowhale%2Fgo-shopping-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gowhale%2Fgo-shopping-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gowhale","download_url":"https://codeload.github.com/gowhale/go-shopping-list/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gowhale%2Fgo-shopping-list/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259420588,"owners_count":22854616,"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":["cooking","golang","golint","mocking","revive","shopping","unit-testing"],"created_at":"2024-11-17T00:32:35.585Z","updated_at":"2025-10-25T15:09:04.443Z","avatar_url":"https://github.com/gowhale.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-shopping-list\n\n## Summary\n\nDo you find making shopping lists BORING? Because I sure do... This repo is to automate the creation of shopping lists and to practice my Golang skills! \n\n## Table Of Contents\n\n- [go-shopping-list](#go-shopping-list)\n  * [Summary](#summary)\n  * [Table Of Contents](#table-of-contents)\n  * [Demos](#demos)\n    + [Excel](#excel)\n    + [Reminders](#reminders)\n    + [Terminal](#terminal)\n  * [How does it work?](#how-does-it-work)\n  * [Maintaining Professional Standards](#maintaining-professional-standards)\n  * [GitHub Actions](#github-actions)\n    + [Testing](#testing)\n    + [Linters](#linters)\n    + [Content Checking](#content-checking)\n    + [Project Management](#project-management)\n\n\u003csmall\u003e\u003ci\u003e\u003ca href='http://ecotrust-canada.github.io/markdown-toc/'\u003eTable of contents generated with markdown-toc\u003c/a\u003e\u003c/i\u003e\u003c/small\u003e\n\n## Demos\n\n### Excel \n\nIf no shopping workflow has been specified the code will create an excel sheet which users can print off to take shopping!\n\nhttps://user-images.githubusercontent.com/32711718/190857227-7b52b057-c60a-4650-a868-770b92e90f28.mov\n\n### Reminders\n\nWhen you are running on mac and have the shopping.workflow file present this is how the code operates:\n\nhttps://user-images.githubusercontent.com/32711718/189308917-77185ca7-6811-4a2f-b3c4-a85158703dde.mov\n\n### Terminal \n\nIf you are not running on a macbook and don't have the shopping.workflow present then the system will just print that it is pretending to add the ingredients so you can still use the system. See the terminal demo below:\n\nhttps://user-images.githubusercontent.com/32711718/189309910-072d7b0d-bffa-4661-ad5a-01fb5aaff30e.mov\n\n## How does it work? \n\n1. The codebase works by firstly reading all the JSON files in the recipes folder. \n2. Once the JSON's have been processed they are passed to the GUI and displayed in a list\n3. Once multiple recipes are selected and the submit button the workflow is ran.\n4. There are currently 3 workflows as demoed above.\n\n## Maintaining Professional Standards\n\nTo ensure code is professional and extendable the following rules should be followed:\n\n1. Apply unit testing wherever possible and aim for 80% coverage in packages\n2. Use `golangci-lint run` and the revive linter with all rules enabled: https://github.com/mgechev/revive \n3. Using Interfaces to mock results using the following module: https://github.com/vektra/mockery \n\nSee the PR Template fo more checks to follow.\n\n## GitHub Actions\n\n### Testing\n\nThe pkg-cov workflow runs all go tests and ensures pkg coverage is above 80%.\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/pkg-cov.yml/badge.svg?event=push)\n\nThe pages workflow publishes a test coverage website everytime there is a push to the main branch. The website can be found here: https://gowhale.github.io/go-shopping-list/#file0\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/pages.yml/badge.svg?event=push)\n\n### Linters\n\nThe revive workflow is executed to statically analsye go files: https://github.com/mgechev/revive\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/revive.yml/badge.svg?event=push)\n\nThe golangci-lint workflow runs the golangci-lint linter: https://github.com/golangci/golangci-lint\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/golangci-lint.yml/badge.svg?event=push)\n\n### Content Checking\n\nThe authenticate workflow checks that the recipe .json files are in the correct format.\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/authenitcate.yml/badge.svg?event=push)\n\n### Project Management\n\nThe issue workflow adds a new issue to the projects Kanban board: https://github.com/users/gowhale/projects/1\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/issue.yml/badge.svg?event=push)\n\nThe cut release workflow creates a binary executable everytime a release is published. The binary file is attached to the release.\n\n![example event parameter](https://github.com/gowhale/go-shopping-list/actions/workflows/cut-release.yml/badge.svg?event=push)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgowhale%2Fgo-shopping-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgowhale%2Fgo-shopping-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgowhale%2Fgo-shopping-list/lists"}