E-Label
Solution for electronic labels, with QR Codes, on wine bottles sold within the European Union.
Solution for electronic labels, with QR Codes, on wine bottles sold within the European Union.
<div align="center"> <img src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/img/icon.png" width="100" height="100" alt="Open E-Label icon"> </div> <br/> [](https://github.com/filipecarneiro/ELabel/blob/main/LICENSE.txt) [](https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-8.0) [](https://hub.docker.com/repository/docker/fcarneiro/elabel/general) [](https://app.lokalise.com/public/811531676572f985a58773.20133510/) [](https://makeapullrequest.com) # Open E-Label Open-source solution for **electronic labels** on **wine** bottles. The Open E-Label project aims to provide a standardized and open-source solution for **QR Code** labeling on products sold within the European Union. This initiative seeks to enhance transparency, efficiency, and information accessibility in the wine industry. Electronic labels provide ***allergy***, ***energy***, ***ingredient*** and ***nutritional information*** to consumers. We believe that technology to provide non-commercial nutrition information to benefit consumers should be made available for free. [<img title="Bulgarian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/bg.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=781) [<img title="Croatian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/hr.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=793) [<img title="Czech" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/cz.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=765) [<img title="Danish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/dk.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=767) [<img title="Dutch" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/nl.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=737) [<img title="English" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/gb.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=640) [<img title="Estonian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/ee.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=10154) [<img title="Finnish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/fi.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=768) [<img title="French" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/fr.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=673) [<img title="German" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/de.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=666) [<img title="Greek" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/gr.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=761) [<img title="Hungarian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/hu.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=773) [<img title="Irish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/ie.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=949) [<img title="Italian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/it.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=734) [<img title="Latvian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/lv.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=10153) [<img title="Lithuanian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/lt.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=10152) [<img title="Maltese" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/mt.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=882) [<img title="Polish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/pl.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=748) [<img title="Portuguese" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/pt.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=1057) [<img title="Romanian" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/ro.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=770) [<img title="Slovak" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/sk.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=799) [<img title="Slovene" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/si.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=10159) [<img title="Spanish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/es.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=1056) [<img title="Swedish" width="32" height="18" src="https://raw.githubusercontent.com/filipecarneiro/ELabel/main/wwwroot/lib/flag-icons/flags/4x3/se.svg" target="_blank" />](https://app.lokalise.com/project/811531676572f985a58773.20133510/?view=single&reference_lang_id=640&single_lang_id=754) ## 🧾 Features - **Electronic Labeling**: Replacing traditional paper labels with electronic labels, promoting sustainability and reducing waste. - **Multilingual Support**: Ensuring labels can be displayed in multiple languages to accommodate diverse consumers within the EU. - **Regulatory Compliance**: Adhering to EU regulations regarding wine labeling, providing a platform that streamlines compliance for wineries. ## 📖 EU Regulations Regulations (EU) of the European Parliament and of the Council: - [EU 2021/2117](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02021R2117-20211206) amending Regulations: - [EU 1308/2013](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02013R1308-20231208&qid=1701283989850) establishing a common organisation of the markets in agricultural products - [EU 1151/2012](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02012R1151-20220608&qid=1701284230571) on quality schemes for agricultural products and foodstuffs - [EU 251/2014](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02014R0251-20231208&qid=1701284265305) on the definition, description, presentation, labelling and the protection of geographical indications of aromatised wine products (**aromatised wine labelling**) - [EU 228/2013](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02013R0228-20211207&qid=1701284298071) laying down specific measures for agriculture in the outermost regions of the Union - [EU 1169/2011](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02011R1169-20180101&qid=1701362311604) provision of food information to consumers (**food labelling**) - [EU 2019/934](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32019R0934&qid=1701362513497) regards wine-growing areas where the alcoholic strength may be increased... - [EU 2019/33](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02019R0033-20231208) regards applications for protection of designations of origin, geographical indications and traditional terms in the wine sector ### Notes - [C/2023/1190](https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=OJ:C_202301190) Questions and answers on the implementation of new EU wine labelling provisions - [Guidance document](https://food.ec.europa.eu/system/files/2016-10/labelling_nutrition-vitamins_minerals-guidance_tolerances_1212_en.pdf) Guidance document on the tolerances for nutrition labelling purposes - [Guidance table](https://food.ec.europa.eu/system/files/2016-10/labelling_nutrition-vitamins_minerals-guidance_tolerances_summary_table_012013_en.pdf) Guidance document tolerances: Simplified summary table ## 📱How to Use 1. Scan the QR code on the wine bottle with a QR code scanner. 2. The E-label for the wine will be displayed on your device. 3. You can switch between languages using the language selection option on the E-label. ## 🏃 Build & Run locally To build the Open E-Label project using Visual Studio, follow these steps: 1. Clone this repository to a local folder 1. Open `ELabel.sln` solution with Visual Studio 1. Build and start the project ## 🚀 Deployment The web app can be deployed using the [published Docker image](https://hub.docker.com/r/fcarneiro/elabel). Here are the steps to run it with Docker compose: 1 Create a new directory and download `docker-compose.yml` sample: ```shell mkdir elabel && cd elabel wget https://raw.githubusercontent.com/filipecarneiro/ELabel/main/docker-compose.yml ``` 2 Write your passwords to an .env file (change to your own passwords!): ```shell echo "MSSQL_SA_PASSWORD=MyStrongPassword" >> .env echo "ADMIN_PASSWORD=MyAdminPassword" >> .env ``` 3 Start all containers: ```shell docker compose pull docker compose up -d ``` 4 View Logs: ```shell docker compose logs -f ``` `db` will take some time in the first start, so the app will restart a couple of times. Be patient! When you see something like `Now listening on: http://[::]:8080` on the log, open your browser with the server name or IP address. ## 🙋 Contributing Contributions are welcome! Please read our [contributing guidelines](CONTRIBUTING.md) before getting started. ### Translation Translations for Open E-Label are managed through [Lokalise](https://lokalise.com/), an online translation management tool. Click the link below to join the project! Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate. - [Join the E-Label translation team](https://app.lokalise.com/public/811531676572f985a58773.20133510/) For more information about the translation editor and tools, please see the [Lokalise translate and collaborate documents](https://docs.lokalise.com/en/collections/2909016-translate-and-collaborate). Translations are downloaded from Lokalise on every release. Check the current [localization statistics](https://app.lokalise.com/statistics/811531676572f985a58773.20133510/). ## ⚖️ License Open E-Label is open-source under the MIT license. See the [LICENSE file](LICENSE.txt) for more information.
CSA administration. Manage members, subscriptions, deliveries, drop-off locations, member participation, invoices and emails (documentation in French).
User-friendly software for food-coops.
Straightforward realtime kanban boards management for intuitive task tracking. Featuring an elegant dark mode, collapsible todo lists, and multitasking tools to supercharge your team's productivity.
No-code business automation tool like Zapier or Tray. For example, you can send a Slack notification for each new Trello card.
Local-first personal finance tool based on zero-sum budgeting, supporting synchronization across devices, custom rules, manual transaction importing (from QIF, OFX, and QFX files), and optional automatic synchronization with many banks.