Допринесите
Пројекат је отвореног кода. Ево како можете да допринесете.
Начини доприноса #
- Пријавите грешку — LibreCelik пријаве, LibreMiddleware пријаве
- Предложите функционалност — отворите issue на одговарајућем репозиторијуму
- Пошаљите Pull Request — погледајте упутства испод
Развојно окружење #
Оба пројекта се граде помоћу CMake 3.24+. LibreMiddleware захтева C++23 компајлер (GCC 13+ / Clang 17+); LibreCelik и даље циља C++20 (прелазак на C++23 је на 4.x роадмапи).
# Клонирајте оба репозиторијума
git clone https://github.com/LibreSCRS/LibreCelik.git
git clone https://github.com/LibreSCRS/LibreMiddleware.git
# Изградња LibreMiddleware
cd LibreMiddleware
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
# Изградња LibreCelik са локалним LibreMiddleware
cd ../LibreCelik
cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DFETCHCONTENT_SOURCE_DIR_LIBREMIDDLEWARE=../LibreMiddleware
cmake --build build
За детаље, погледајте Изградња из изворног кода.
Стандарди кодирања #
- LibreMiddleware: C++23. Користите
std::span,std::format,std::expected, паметне показиваче. LibreCelik: C++20. - Упозорења компајлера:
-Wall -Wextra -Wpedantic - Именовање:
camelCaseза променљиве,PascalCaseза типове. Без завршних доњих црта на члановима класе. - SPDX заглавља лиценце на свим изворним фајловима.
- Свака промена мора да укључује тестове.
Процес за Pull Request #
- Fork-ујте репозиторијум
- Направите feature грану
- Направите промене са тестовима
- Push-ујте и отворите Pull Request
- Опишите шта промена ради и зашто
- CI мора да прође
- Code review пре merge-а
Додавање подршке за нову картицу #
Ако желите да додате подршку за нови тип смарт картице:
Анализирајте картицу — користите
card_mapperCLI алат (део LibreMiddleware-а) за истраживање фајл система картице и APDU одговора. Ово је корисан први корак за разумевање садржаја картице.Middleware плагин — имплементирајте
CardPluginинтерфејс у LibreMiddleware-у. Ово обрађује детекцију картице (ATR подударање или провера на живој конекцији) и читање података.GUI плагин — имплементирајте
CardWidgetPluginинтерфејс у LibreCelik-у. Ово обезбеђује Qt6 widget који приказује податке са картице.
Погледајте Преглед архитектуре за детаље о систему плагинова и интерфејсима.
Развојни процес #
- Развој уз помоћ вештачке интелигенције — користимо AI алате као део развојног процеса
- Развој вођен тестовима (TDD)
- Code review на сваком pull request-у
- CI pipeline покреће тестове на свим подржаним платформама