Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/frontendnetwork/veganify
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.
https://github.com/frontendnetwork/veganify
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
Last synced: about 1 month ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/frontendnetwork/veganify
- Owner: frontendnetwork
- License: mit
- Created: 2021-08-21T11:39:20.000Z (over 3 years ago)
- Default Branch: staging
- Last Pushed: 2024-11-13T02:22:38.000Z (about 1 month ago)
- Last Synced: 2024-11-13T02:36:13.574Z (about 1 month ago)
- 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
- Language: TypeScript
- Homepage: https://veganify.app
- Size: 110 MB
- Stars: 45
- Watchers: 3
- Forks: 6
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- open-sustainable-technology - Veganify - A multilingual progressive web app, which scans the EAN or UPC codes of over 3.000.000 food- or non-food-products and simply tells you if it they're vegan or not. (Consumption / Agriculture and Nutrition)
README
## Overview
Veganify 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.
Veganify combines the Databases of OpenFoodFacts, OpenBeautyFacts and Open EAN Database, as well as our very own ingredient checker in one tool.See an example of how it works!
The [Veganify Ingredients API](https://github.com/frontendnetwork/Veganify-API) checks the products ingredients against a list of thousands of non-vegan items.
Open PWA in browser | Product page on FrontEndNetwork | Use the API | iOS Shortcut | Uptime Status## Developer Guide
> [!TIP]
> We're using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages. Please follow this convention when making changes.### Prerequisites
- Node.js 20 or later
- pnpm (enabled via corepack)To enable pnpm using corepack:
```bash
corepack enable
corepack prepare pnpm@latest --activate
```### Getting Started
1. Clone the repository:
```bash
git clone https://github.com/frontendnetwork/veganify.git
cd veganify
```
2. Install dependencies & start dev server:```bash
pnpm install
pnpm dev
```### Project Structure
```
src/
├── @components/
│ ├── shared/
│ ├── ComponentName/
│ │ ├── hooks/ # Component-specific hooks
│ │ ├── utils/ # Component-specific utilities
│ │ │ ├── util.ts
│ │ │ └── util.test.ts # Utility specify tests
│ │ ├── models/ # Component-specific types/interfaces
│ │ ├── componentPart.tsx # Component files
│ │ └── index.tsx # Component files
├── @models/ # Global type definitions
├── styles/ # CSS styles
├── tests/ # Only test setup files & Playwright tests
└── locales/ # next-intl translation files
```### Development Commands
```bash
# Start development server
pnpm dev# Run linting
pnpm lint# Run type checking
pnpm check-types# Run unit tests
pnpm test# Run end-to-end tests
pnpm test:e2e# Build for production
pnpm build
```### Development Guidelines
> [!NOTE]
> 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.#### Component Structure
- Break down components into smaller, reusable pieces
- Each significant component should have its own directory with the following structure:
- `hooks/` for component-specific hooks
- `utils/` for component-specific utilities
- `models/` for component-specific types
- Small, simple components can be single files#### Testing
- All utility functions must have 100% test coverage
- Tests are written using Jest for unit testing
- Components currently don't require test coverage
- Playwright is used for end-to-end testing but currently only coversa few basics use cases. More tests are needed.#### TypeScript
- TypeScript is mandatory
- The `any` type is not acceptable unless absolutely necessary
- Always define proper interfaces and types in the appropriate `models` folder
- Use type inference when possible#### Internationalization
- Use `next-intl` for translations
- Add new translations to all language files in `/locales`
- Follow the existing translation key structure#### Code Style
- Follow Node.js, React, and Next.js best practices
- Use the App Router pattern for routing
- Keep components pure and functional when possible
- Use hooks for state management and side effects
- Follow the DRY (Don't Repeat Yourself) principle
- Use meaningful variable and function names
- Write comments for complex logic
- Keep functions small and focused#### Styling
- Place all styles in the `styles` folder
- Keep styles modular and scoped to components when possible
- Be sure to use SCSS for styling
- Use CSS variables for theming and repeated valuesWhen making a contribution, please follow these guidelines to ensure consistency and maintainability.
Remember that every contribution, no matter how small, is valuable to the project. Thank you for helping make Veganify better!
## Support
Please refer to our issue trackers to see where you could help:
- [[Tasks] Code Improvements](https://github.com/frontendnetwork/veganify/issues/52)
- [[Tasks] Localization](https://github.com/frontendnetwork/veganify/issues/59)or if you find something else you could improve, just open a new issue for it!
### Support us
### Premium Supporters
## Dependencies & Credits
This repo uses:
- [Quagga.js](https://serratus.github.io/quaggaJS/)
- [OpenFoodFacts API](https://openfoodfacts.org/) & [OpenBeautyFacts API](https://openbeautyfacts.org/) [@openfoodfacts](https://github.com/openfoodfacts)
- [Open EAN Database](https://opengtindb.org)## License
All text and code in this repository is licensed under [MIT](https://github.com/frontendnetwork/veganify/blob/main/LICENSE), © 2024 Philip Brembeck, © 2024 FrontEndNetwork.