SelfHost Hub SelfHost Hub
中文
← Back to all services

GitHub repository information

Fetched · June 5, 2026
★ 38 Latest: v1.4.6 Updated: May 23, 2026
README
<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/>

[![GitHub License](https://img.shields.io/github/license/filipecarneiro/ELabel)](https://github.com/filipecarneiro/ELabel/blob/main/LICENSE.txt)
[![ASP.NET Core](https://img.shields.io/badge/ASP.NET_Core-8.0-blue)](https://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-8.0)
[![Docker Image](https://img.shields.io/badge/Docker-Image-blue?link=https%3A%2F%2Fhub.docker.com%2Fr%2Ffcarneiro%2Felabel)](https://hub.docker.com/repository/docker/fcarneiro/elabel/general)
[![Lokalise progress](https://img.shields.io/badge/Lokalise-100%25-FF6336)](https://app.lokalise.com/public/811531676572f985a58773.20133510/)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](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.

Discover more

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.

6/5/2026 Details →