Thank you for your interest in contributing to eApps! This document provides guidelines and instructions for contributing.
- Fork the repository and clone your fork locally.
- Set up the development environment:
git clone https://github.com/embeddedos-org/eApps.git
cd eApps
git submodule update --init --recursive
cmake -B build -DEAPPS_PORT=sdl2 -DBUILD_TESTING=ON
cmake --build build- Run the tests to ensure everything works:
ctest --test-dir build --output-on-failure- Create a feature branch from
master:git checkout -b feature/your-feature - Use descriptive branch names:
feature/,fix/,docs/,refactor/,app/
- We use clang-format and clang-tidy for code quality
- Run before submitting:
clang-format -i core/**/*.c core/**/*.h apps/**/*.c apps/**/*.h
cmake --build build --target cppcheck- Write tests for all new functionality
- Place unit tests in
tests/ - Maintain test coverage above 70%
cmake -B build -DEAPPS_PORT=sdl2 -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build --output-on-failureUse conventional commit format:
type(scope): description
feat(ecal): add scientific notation display
fix(snake): fix wall collision at boundary
docs(readme): update build instructions
test(core): add string_utils edge case tests
app(ezip): add TAR extraction support
- Ensure all tests pass and linting is clean
- Update documentation if your changes affect the public API
- Add a changelog entry in
CHANGELOG.md - Run
cppcheckand resolve warnings - Request review from at least one maintainer
- Squash commits before merging
- Create
apps/<name>/withCMakeLists.txt,<name>.c, and<name>.h - Register the app in
core/common/src/registry.c - Add
add_subdirectory(apps/<name>)to the rootCMakeLists.txt - Add a row to the app table in
README.md - See Adding Apps Guide for details
- Use GitHub Issues for bug reports and feature requests
- Include reproduction steps, expected behavior, and actual behavior
- Tag issues appropriately:
bug,enhancement,documentation,app
See docs/architecture.md for the system design.
Key modules:
core/common/— Types, math, string, date, registry, expression parsercore/ui/— LVGL theme, widgets, canvas, game enginecore/storage/— Key-value preferences (file-backed)core/network/— HTTP client (POSIX/Win32/Web backends)core/platform/— Platform abstraction (Linux/Win32/EoS/Web)apps/— 38 application modulesport/— Display + input drivers per platform
By contributing, you agree that your contributions will be licensed under the MIT License.