{"id":15151824,"url":"https://github.com/opplieam/buy-better","last_synced_at":"2026-01-21T10:36:16.027Z","repository":{"id":255424107,"uuid":"849566369","full_name":"opplieam/buy-better","owner":"opplieam","description":"This document serves as the entry point for the Buy Better System. The system comprises eight sub-repositories and employs a technology stack that includes Go, TypeScript, Kubernetes, ArgoCD, and other technologies.","archived":false,"fork":false,"pushed_at":"2024-12-30T12:53:46.000Z","size":374,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T10:39:27.363Z","etag":null,"topics":["docker","golang","grpc-go","kubernetes","openapi3","playwright","postgresql","protobuf","python","typescript"],"latest_commit_sha":null,"homepage":"","language":null,"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/opplieam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-08-29T20:30:11.000Z","updated_at":"2024-12-30T12:53:49.000Z","dependencies_parsed_at":"2024-08-29T23:12:36.422Z","dependency_job_id":"59aa04b3-0e09-420a-86d2-729c14018f23","html_url":"https://github.com/opplieam/buy-better","commit_stats":{"total_commits":17,"total_committers":1,"mean_commits":17.0,"dds":0.0,"last_synced_commit":"addb2c1932ad9f1140a6189cfd5caa9262c7ab3b"},"previous_names":["opplieam/buy-better"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/opplieam/buy-better","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opplieam%2Fbuy-better","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opplieam%2Fbuy-better/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opplieam%2Fbuy-better/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opplieam%2Fbuy-better/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opplieam","download_url":"https://codeload.github.com/opplieam/buy-better/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opplieam%2Fbuy-better/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28631936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"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":["docker","golang","grpc-go","kubernetes","openapi3","playwright","postgresql","protobuf","python","typescript"],"created_at":"2024-09-26T15:22:17.487Z","updated_at":"2026-01-21T10:36:16.006Z","avatar_url":"https://github.com/opplieam.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Buy Better Project\n\nThis is an entry point for Buy Better project. It contains the big picture of project.\n\nLooking for the source code ? Please visit [List of all repositories](#list-of-services)\n\n## Table of contents\n- [Overview](#overview)\n- [Overall Architect](#overall-architect)\n- [List of all repositories](#list-of-services)\n- [Overall CI/CD](#overall-cicd)\n- [Overall database diagrams](#overall-database-diagrams)\n- [Overall Tech stack](#overall-tech-stack)\n- [Design choice](#design-choice)\n- [To Learn List](#to-learn)\n\n## Overview\nWe are currently in an era of online shopping and ecommerce. Unfortunately, there are only 2 major ecommerce platforms \navailable in my country. This limits my options. The issue here is that the prices of products fluctuate from day to day \nor week to week. I find it difficult to determine if I am getting a fair price, and I can't tell if a product is more \nexpensive or cheaper than it was yesterday or last week. The prices shown in the application are not reliable, \nand there is no transparent or clear pricing information. Additionally, comparing the same item across different \necommerce applications is a tedious task to do manually.\n\nBuy Better aims to help users track the price of specific items. It allows users to compare the current price with \nthe price from last week, identify the lowest and highest prices, and when they occurred. Users can also set \nnotifications for when the price falls below a certain threshold, and compare prices between different sellers or \napplications.\n\nIn conclusion, Buy Better is an online shopping assistant. All you have to do is send the product URL, \nand the admin will set things up.\n\n`NOTE: This project is for learning purpose and not fully complete yet`\n\n## Overall architect\n![architect](https://raw.githubusercontent.com/opplieam/buy-better/refs/heads/main/diagram.drawio.png)\nThis is not a final design.\n\nThere are 3 big parts.\n1. Web scraping service \n\nTo keep prices up to date, web scraping is necessary to automate the task of collecting prices from the target website.\n\n2. Buy Better Admin \n\nThe user management, The matching (by hand for now) category, and products from various websites. In the future, \nIt will use machine learning to automate label data.\n\n3. Buy Better Core\n\nThis part is where the user interacts for both frontend and backend. I designed it to be scalable by using \ngRPC to communicate between the services.,\n\n## List of services\n- [Buy-Better Admin Backend](https://github.com/opplieam/bb-admin-api) * Go, Gin, SQL, Jet-db, Migration, k8s, OpenAPI, etc...\n- [Buy-Better Admin Frontend](https://github.com/opplieam/bb-admin-ui) * Typescript, React, Mantine, React-Query, Playwright\n- [Buy-Better Notification](https://github.com/opplieam/bb-dist-noti) * SSE, NATs, Distributed System, Raft\n- [Buy-Better Transform](https://github.com/opplieam/bb-transform) * AWS lambda, SQS, Go, Terraform, Supabase, Serverless\n- [Buy-Better Core Backend](https://github.com/opplieam/bb-core-api) * Otel, gRPC, Helm, Github Actions\n- [Buy-Better K8S Infrastructure](https://github.com/opplieam/bb-k8s-infra) ArgoCD, Terraform, GKE\n- [Buy-Better Core Frontend](https://github.com/opplieam/bb-core-ui)\n- [Buy-Better Centralized proto/gRPC](https://github.com/opplieam/bb-grpc) * Proto\n- [Buy-Better Product Service Backend](https://github.com/opplieam/bb-product-server)\n- ~~[Buy-Better web scraping]~~ I take down the service due to the banning issue\n\n## Overall CI/CD\n![img](https://github.com/opplieam/bb-k8s-infra/raw/main/k8s.drawio.png?raw=true)\n\n## Overall database diagrams\n![db-admin](https://github.com/opplieam/bb-admin-api/raw/main/Buy-Better-Admin.png?raw=true)\n![dbcore](https://github.com/opplieam/bb-core-api/blob/main/Buy-Better-Core.png?raw=true)\nThis is not a final design.\n\n## Overall Tech stack\n### Web scraping\n- Python\n  * Scrapy / Splash\n  * Playwright\n### Frontend\n- Typescript\n  * React\n    * React-query\n    * Mantine\n    * React-router\n  * Playwright\n### Infrastructure\n- Docker / docker-compose\n- Kubernetes\n- Helm\n- ArgoCD\n- Githubs Action\n- Terraform\n- AWS - Lambda, SQS\n- GCP - GKE\n### Backend\n- Go (Golang)\n- go-migrate\n- Mockery\n- Testify\n- Proto / gRPC\n- Postgres (supabase)\n- Otel\n- SSE\n- Raft, Serf\n- Goroutine\n- NATs Jetstream\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopplieam%2Fbuy-better","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopplieam%2Fbuy-better","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopplieam%2Fbuy-better/lists"}