{"id":41465749,"url":"https://github.com/paulwizviz/lotterystat","last_synced_at":"2026-01-23T16:29:36.219Z","repository":{"id":157233286,"uuid":"294816500","full_name":"paulwizviz/lotterystat","owner":"paulwizviz","description":"The purpose of this project is to demonstrate the development of an application to enable a user perform simple statistical based in past draws using *Golang concurrency* and *SQL DB*. Note, the emphasis of this project to demonstrate software engineering principles.","archived":false,"fork":false,"pushed_at":"2026-01-21T13:17:58.000Z","size":699,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-22T01:25:16.171Z","etag":null,"topics":["concurrency","docker","docker-compose","go","golang","sql","sqlite3"],"latest_commit_sha":null,"homepage":"","language":"Go","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/paulwizviz.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-11T21:34:46.000Z","updated_at":"2024-12-19T15:32:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"33d9154d-f3a6-4836-8732-5df9abc9443c","html_url":"https://github.com/paulwizviz/lotterystat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"paulwizviz/go-web","purl":"pkg:github/paulwizviz/lotterystat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulwizviz%2Flotterystat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulwizviz%2Flotterystat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulwizviz%2Flotterystat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulwizviz%2Flotterystat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulwizviz","download_url":"https://codeload.github.com/paulwizviz/lotterystat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulwizviz%2Flotterystat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28695532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T15:57:05.722Z","status":"ssl_error","status_checked_at":"2026-01-23T15:56:27.656Z","response_time":59,"last_error":"SSL_read: 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":["concurrency","docker","docker-compose","go","golang","sql","sqlite3"],"created_at":"2026-01-23T16:29:34.316Z","updated_at":"2026-01-23T16:29:36.206Z","avatar_url":"https://github.com/paulwizviz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![build](https://github.com/paulwizviz/go-web/workflows/build/badge.svg)\n# Overview\n\nThe objective of this project is to demonstrate software engineering principles by developing an example application in Go that applies *concurrent programming* and *database integration* techniques.\n\nThe example application, named `ebz`, extracts UK national lottery results in CSV format, persists data into SQLite and PostgreSQL, and performs simple statistical analyses, such as frequency analysis (see Figure 1). SQLite is the primary database whilst PostgreSQL is the secondary database.\n\n![ebz functionality](./assets/img/ebz.png)\n\u003cfigcaption\u003eFigure 1 - ebz Functionalities\u003c/figcaption\u003e\n\n## Project Layout and Setup\n\nThe layout of this project is based on the principles articulated in [this article](https://paulwizviz.github.io/go/2022/12/23/go-proverb-architecture.html).\n\nThe project requires the following environmental variables:\n\n```sh\nexport SQLITE_DB=\u003cpath to sqlite file\u003e\n\nexport PGADMIN_DEFAULT_EMAIL=\u003cemail\u003e\nexport PGADMIN_DEFAULT_PASSWORD=\u003cpassword\u003e\n\nexport POSTGRES_USER=\u003cusername\u003e\nexport POSTGRES_PASSWORD=\u003cpassword\u003e\nexport POSTGRES_HOST=localhost\nexport POSTGRES_PORT=5432\nexport POSTGRES_DBNAME=default\n```\n\n## Architecture Patterns\n\nThis project has incorporated the following architecture patterns:\n\n* [Fan-in and Fan-out](./docs/fan-in-out.md)\n\n## Disclaimer\n\nThis project uses UK National Lottery draws for illustrative purposes only. It is intended to demonstrate software engineering principles, **not** to predict lottery results.\n\nPlease note that this is an evolving project and is subject to changes without prior notice.\n\n## Copyright notice\n\nUnless otherwise specified, the copyright of this project is assigned as follows.\n\nCopyright 2023 Paul Sitoh\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulwizviz%2Flotterystat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulwizviz%2Flotterystat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulwizviz%2Flotterystat/lists"}