{"id":13724141,"url":"https://github.com/frontendnetwork/veganify","last_synced_at":"2026-05-02T13:06:17.345Z","repository":{"id":37105130,"uuid":"398542590","full_name":"frontendnetwork/veganify","owner":"frontendnetwork","description":"Veganify is a modern webapp that allows you to easily scan EAN barcodes to check if a product is vegan-friendly. With a database of over 3 million products, you can quickly find out if your favorite foods and products are suitable for a vegan diet. ","archived":false,"fork":false,"pushed_at":"2025-04-25T03:04:16.000Z","size":115372,"stargazers_count":59,"open_issues_count":16,"forks_count":8,"subscribers_count":3,"default_branch":"staging","last_synced_at":"2025-04-27T13:04:57.281Z","etag":null,"topics":["barcode","barcode-scanner","html5","javascript","nextjs","nodejs","nutriscore","nutrition","nutrition-information","nutrition-services","openbeautyfacts","openfoodfacts","progressive-web-app","pwa","react","scanner","vegan","vegan-dishes","vegan-ingredients"],"latest_commit_sha":null,"homepage":"https://veganify.app","language":"TypeScript","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/frontendnetwork.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"philipbrembeck","ko_fi":"veganify","issuehunt":"JokeNetwork"}},"created_at":"2021-08-21T11:39:20.000Z","updated_at":"2025-04-25T07:41:45.000Z","dependencies_parsed_at":"2023-09-21T19:31:23.010Z","dependency_job_id":"c7de50f3-9fb5-4351-bd2a-499cae7fe71a","html_url":"https://github.com/frontendnetwork/veganify","commit_stats":{"total_commits":1364,"total_committers":16,"mean_commits":85.25,"dds":0.217741935483871,"last_synced_commit":"4e361a407fcbf9f1a9149ddd03a845b4e6e01088"},"previous_names":["jokenetwork/vegancheck.me","frontendnetwork/veganify","frontendnetwork/vegancheck.me"],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontendnetwork%2Fveganify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontendnetwork%2Fveganify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontendnetwork%2Fveganify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frontendnetwork%2Fveganify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frontendnetwork","download_url":"https://codeload.github.com/frontendnetwork/veganify/tar.gz/refs/heads/staging","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251320418,"owners_count":21570573,"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":["barcode","barcode-scanner","html5","javascript","nextjs","nodejs","nutriscore","nutrition","nutrition-information","nutrition-services","openbeautyfacts","openfoodfacts","progressive-web-app","pwa","react","scanner","vegan","vegan-dishes","vegan-ingredients"],"created_at":"2024-08-03T01:01:51.034Z","updated_at":"2026-05-02T13:06:17.339Z","avatar_url":"https://github.com/frontendnetwork.png","language":"TypeScript","funding_links":["https://github.com/sponsors/philipbrembeck","https://ko-fi.com/veganify","https://issuehunt.io/r/JokeNetwork","https://ko-fi.com/vegancheck","https://www.paypal.com/donate/?hosted_button_id=J7TEA8GBPN536"],"categories":["react","Food-related projects","Consumption"],"sub_categories":["Agriculture and Nutrition"],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"128px\" src=\"https://user-images.githubusercontent.com/4144601/233675806-32769506-f311-416b-80f4-2e8aff0a85a9.svg\" alt=\"Veganify Logo\"\u003e\n\n# Veganify\n\nCheck if a product is vegan or not with \u003ca href=\"https://veganify.app\"\u003e\u003cstrong\u003e» Veganify.app\u003c/strong\u003e\u003c/a\u003e\n\n\u003cbr/\u003e\n\u003ca href=\"https://veganify.app\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/4144601/233676587-c0b1f89a-9e1f-49f9-b4b9-fdbf1e592f5f.png\" alt=\"Veganify Hero\" align=\"center\"\u003e\u003c/a\u003e\n\u003cbr\u003e\u003cbr\u003e\n\u003ca href=\"https://www.producthunt.com/products/vegancheck-me?utm_source=badge-featured\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-topic-badge.svg?post_id=396704\u0026theme=neutral\u0026period=weekly\u0026topic_id=43\" alt=\"Veganify - Check\u0026#0032;if\u0026#0032;a\u0026#0032;product\u0026#0032;if\u0026#0032;vegan\u0026#0047;vegetarian\u0026#0032;easily\u0026#0032;and\u0026#0032;fast | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.producthunt.com/products/vegancheck-me?utm_source=badge-featured\" target=\"_blank\"\u003e\u003cimg src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-topic-badge.svg?post_id=396704\u0026theme=neutral\u0026period=weekly\u0026topic_id=204\" alt=\"Veganify- Check\u0026#0032;if\u0026#0032;a\u0026#0032;product\u0026#0032;if\u0026#0032;vegan\u0026#0047;vegetarian\u0026#0032;easily\u0026#0032;and\u0026#0032;fast | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Overview\n\nVeganify checks the barcode (EAN or UPC) of a food- or non-food-product and tells you if it is vegan or not. It is an useful tool for vegans and vegetarians - Developed with usability and simplicity in mind, so without distracting irrelevant facts or advertising.\nVeganify combines the Databases of OpenFoodFacts, OpenBeautyFacts and Open EAN Database, as well as our very own ingredient checker in one tool.\n\n\u003cdetails\u003e\n  \u003csummary\u003eSee an example of how it works!\u003c/summary\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/4144601/198900839-8dc58d58-fdb8-48b6-93e4-a4662ae64954.mov\" width=\"300\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/4144601/198900861-49ef1a5f-0663-4d73-b72d-d147cddaabd3.MP4\" width=\"300\"\u003e\n\u003c/details\u003e\n\nThe [Veganify Ingredients API](https://github.com/frontendnetwork/Veganify-API) checks the products ingredients against a list of thousands of non-vegan items.\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://veganify.app\"\u003eOpen PWA in browser\u003c/a\u003e | \u003ca href=\"https://frontendnet.work/#projects\"\u003eProduct page on FrontEndNetwork\u003c/a\u003e | \u003ca href=\"https://frontendnet.work/veganify-api\"\u003eUse the API\u003c/a\u003e | \u003ca href=\"https://shareshortcuts.com/shortcuts/2224-vegancheck.html\"\u003eiOS Shortcut\u003c/a\u003e | \u003ca href=\"https://stats.uptimerobot.com/LY1gRuP5j6\"\u003eUptime Status\u003c/a\u003e\n\u003c/p\u003e\n\n## Developer Guide\n\n\u003e [!TIP]\n\u003e We're using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages. Please follow this convention when making changes.\n\n### Prerequisites\n\n- Node.js 20 or later\n- pnpm (enabled via corepack)\n\nTo enable pnpm using corepack:\n\n```bash\ncorepack enable\ncorepack prepare pnpm@latest --activate\n```\n\n### Getting Started\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/frontendnetwork/veganify.git\n   cd veganify\n   ```\n2. Install dependencies \u0026 start dev server:\n\n   ```bash\n   pnpm install\n   pnpm dev\n   ```\n\n### Project Structure\n\n```\nsrc/\n├── @components/\n│   ├── shared/\n│   ├── ComponentName/\n│   │   ├── hooks/      \t\t\t# Component-specific hooks\n│   │   ├── utils/      \t\t\t# Component-specific utilities\n│   │   │\t├── util.ts\n│   │   │\t└──\tutil.test.ts\t\t# Utility specify tests\n│   │   ├── models/     \t\t\t# Component-specific types/interfaces\n│   │   ├── componentPart.tsx\t\t# Component files\n│   │   └── index.tsx\t\t\t\t# Component files\n├── @models/        # Global type definitions\n├── styles/         # CSS styles\n├── tests/          # Only test setup files \u0026 Playwright tests\n└── locales/        # next-intl translation files\n```\n\n### Development Commands\n\n```bash\n# Start development server\npnpm dev\n\n# Run linting\npnpm lint\n\n# Run type checking\npnpm check-types\n\n# Run unit tests\npnpm test\n\n# Run end-to-end tests\npnpm test:e2e\n\n# Build for production\npnpm build\n```\n\n### Development Guidelines\n\n\u003e [!NOTE]  \n\u003e We're aware not everything in this repo follows those standards. This is because of how the project was started and evolved. We're working on improving this.\n\n#### Component Structure\n\n- Break down components into smaller, reusable pieces\n- Each significant component should have its own directory with the following structure:\n  - `hooks/` for component-specific hooks\n  - `utils/` for component-specific utilities\n  - `models/` for component-specific types\n- Small, simple components can be single files\n\n#### Testing\n\n- All utility functions must have 100% test coverage\n- Tests are written using Jest for unit testing\n- Components currently don't require test coverage\n- Playwright is used for end-to-end testing but currently only coversa few basics use cases. More tests are needed.\n\n#### TypeScript\n\n- TypeScript is mandatory\n- The `any` type is not acceptable unless absolutely necessary\n- Always define proper interfaces and types in the appropriate `models` folder\n- Use type inference when possible\n\n#### Internationalization\n\n- Use `next-intl` for translations\n- Add new translations to all language files in `/locales`\n- Follow the existing translation key structure\n\n#### Code Style\n\n- Follow Node.js, React, and Next.js best practices\n- Use the App Router pattern for routing\n- Keep components pure and functional when possible\n- Use hooks for state management and side effects\n- Follow the DRY (Don't Repeat Yourself) principle\n- Use meaningful variable and function names\n- Write comments for complex logic\n- Keep functions small and focused\n\n#### Styling\n\n- Place all styles in the `styles` folder\n- Keep styles modular and scoped to components when possible\n- Be sure to use SCSS for styling\n- Use CSS variables for theming and repeated values\n\nWhen making a contribution, please follow these guidelines to ensure consistency and maintainability.\n\nRemember that every contribution, no matter how small, is valuable to the project. Thank you for helping make Veganify better!\n\n## Support\n\nPlease refer to our issue trackers to see where you could help:\n\n- [[Tasks] Code Improvements](https://github.com/frontendnetwork/veganify/issues/52)\n- [[Tasks] Localization](https://github.com/frontendnetwork/veganify/issues/59)\n\n\u003ca href=\"https://fink.inlang.com/github.com/frontendnetwork/veganify?ref=badge\"\u003e\u003cimg src=\"https://img.shields.io/badge/Translate_Veganify-on_inlang-ccc?labelColor=fff\u0026logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMjU2LjAwMDAwMHB0IiBoZWlnaHQ9IjI1Ni4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDI1Ni4wMDAwMDAgMjU2LjAwMDAwMCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgcG90cmFjZSAxLjE0LCB3cml0dGVuIGJ5IFBldGVyIFNlbGluZ2VyIDIwMDEtMjAxNwo8L21ldGFkYXRhPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDAwMCwyNTYuMDAwMDAwKSBzY2FsZSgwLjEwMDAwMCwtMC4xMDAwMDApIgpmaWxsPSIjMDAwMDAwIiBzdHJva2U9Im5vbmUiPgo8cGF0aCBkPSJNOTUgMjU0NiBjLTQxIC0xOCAtODMgLTY5IC05MCAtMTA5IC0zIC0xOCAtNCAtNTUwIC0zIC0xMTg0IDMgLTExNDUKMyAtMTE1MiAyNCAtMTE3OSAxMSAtMTUgMzMgLTM3IDQ4IC00OCAyNyAtMjEgMzEgLTIxIDEyMDYgLTIxIDExNzUgMCAxMTc5IDAKMTIwNiAyMSAxNSAxMSAzNyAzMyA0OCA0OCAyMSAyNyAyMSAzMSAyMSAxMjA2IDAgMTE3NSAwIDExNzkgLTIxIDEyMDYgLTExIDE1Ci0zMyAzNyAtNDggNDggLTI3IDIxIC0zMyAyMSAtMTE5NCAyMyAtOTU1IDIgLTExNzMgMCAtMTE5NyAtMTF6IG01NzAgLTYzMApjODEgLTM0IDk3IC0xMzMgMzEgLTE5MyAtMjkgLTI3IC00NCAtMzMgLTgxIC0zMyAtODMgMCAtMTM1IDQ3IC0xMzUgMTIyIDAgNDAKMjEgNzMgNjQgOTkgMzcgMjMgNzQgMjQgMTIxIDV6IG0xNDM1IC02MzYgbDAgLTU4MCAtMTIwIDAgLTEyMCAwIDAgNTgwIDAgNTgwCjEyMCAwIDEyMCAwIDAgLTU4MHogbS01NjYgMjcwIGM2MyAtMzIgMTA5IC04OSAxMzUgLTE2NyAyMCAtNTggMjEgLTg0IDIxCi0zNzMgbDAgLTMxMCAtMTIwIDAgLTEyMCAwIDAgMjc4IGMwIDI1MiAtMiAyODEgLTIwIDMxOSAtMjQgNTUgLTcwIDgzIC0xMzQKODMgLTY2IDAgLTEyMCAtMzIgLTE0NiAtODUgLTE5IC0zOCAtMjAgLTYyIC0yMCAtMzE4IGwwIC0yNzcgLTEyMCAwIC0xMjAgMCAwCjQzNSAwIDQzNSAxMTUgMCAxMTQgMCAzIC03NyBjMiAtNTggNiAtNzMgMTIgLTU4IDI3IDU4IDc5IDEwMyAxNTEgMTMyIDE3IDcKNjYgMTEgMTE1IDEwIDY4IC0yIDk1IC03IDEzNCAtMjd6IG0tODA0IC00MTUgbDAgLTQzNSAtMTIwIDAgLTEyMCAwIDAgNDM1IDAKNDM1IDEyMCAwIDEyMCAwIDAgLTQzNXoiLz4KPC9nPgo8L3N2Zz4K\" alt=\"Veganify on Inlang\" style=\"border-radius: 5%;\"\u003e\u003c/a\u003e\n\nor if you find something else you could improve, just open a new issue for it!\n\n### Support us\n\n\u003ca href=\"https://github.com/sponsors/philipbrembeck\"\u003e\u003cimg src=\"https://img.shields.io/badge/Sponsor%20on%20GitHub-white.svg?logo=githubsponsors\" alt=\"Consider Sponsoring\"\u003e\u003c/a\u003e\n\u003ca href=\"https://ko-fi.com/vegancheck\"\u003e\u003cimg src=\"https://img.shields.io/badge/Buy%20us%20a%20coffee-white.svg?logo=kofi\" alt=\"Buy us a coffee\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.paypal.com/donate/?hosted_button_id=J7TEA8GBPN536\"\u003e\u003cimg src=\"https://shields.io/badge/Donate%20with%20PayPal-blue?style=flat\u0026logo=Paypal\" alt=\"Donate\"\u003e\u003c/a\u003e\n\n### Premium Supporters\n\n\u003ca href=\"https://uptimerobot.com\"\u003e\n\t\u003cpicture\u003e\n\t  \u003csource srcset=\"https://github.com/user-attachments/assets/2ae2e9eb-5099-4962-87fb-a99a0b069e29\" media=\"(prefers-color-scheme: dark)\" width=\"120\"\u003e\n\t  \u003cimg src=\"https://github.com/user-attachments/assets/638da2ff-755d-4343-acc1-330e41fbda95\" width=\"120\"\u003e\n\t\u003c/picture\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://veganism.social/@mvtracing\"\u003e\n\t\u003cpicture\u003e\n\t  \u003csource srcset=\"https://user-images.githubusercontent.com/4144601/218593453-28333f8a-3e24-46d2-8bc9-856eb2e4a390.png\" media=\"(prefers-color-scheme: dark)\" width=\"120\"\u003e\n\t  \u003cimg src=\"https://user-images.githubusercontent.com/4144601/218593448-cde11d35-97ec-498d-8aa9-6613ed5471bd.png\" width=\"120\"\u003e\n\t\u003c/picture\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://philip.media\"\u003e\n\t\u003cpicture\u003e\n\t  \u003csource srcset=\"https://user-images.githubusercontent.com/4144601/218594015-e28f4b94-c6ac-4ad7-842f-83296adc9d74.svg\" media=\"(prefers-color-scheme: dark)\" width=\"160\"\u003e\n\t  \u003cimg src=\"https://user-images.githubusercontent.com/4144601/218594012-3a5968bc-5145-4f7a-aeed-e411164ddb71.svg\" width=\"160\"\u003e\n\t\u003c/picture\u003e\n\u003c/a\u003e\n\n## Dependencies \u0026 Credits\n\nThis repo uses:\n\n- [Quagga.js](https://serratus.github.io/quaggaJS/)\n- [OpenFoodFacts API](https://openfoodfacts.org/) \u0026 [OpenBeautyFacts API](https://openbeautyfacts.org/) [@openfoodfacts](https://github.com/openfoodfacts)\n- [Open EAN Database](https://opengtindb.org)\n\n## License\n\nAll text and code in this repository is licensed under [MIT](https://github.com/frontendnetwork/veganify/blob/main/LICENSE), © 2024 Philip Brembeck, © 2024 FrontEndNetwork.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrontendnetwork%2Fveganify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrontendnetwork%2Fveganify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrontendnetwork%2Fveganify/lists"}