First off, thank you for taking the time to contribute! Contributions from the community help make the DailyDash task manager more comprehensive, stable, and helpful for everyone.
By participating in this project, you agree to abide by our Code of Conduct.
- Contributing to DailyDash
We use structured GitHub Issue Forms to track bug reports. Before submitting a bug report, please:
- Check the existing issues to ensure it hasn't been reported or resolved already.
- Verify that it is reproducible on a clean database without custom local overrides.
- Open a GitHub Issue and fill out the form completely, including:
- Project version
- OS information (Windows, macOS, Linux)
- Step-by-step instructions to reproduce the issue
- Screenshots or error stack traces if applicable
If you have ideas for new features, UI improvements, or automation additions:
- Search the issues to verify your suggestion hasn't been discussed before.
- Open a Feature Request describing the functionality, the problem it solves, and how it might be implemented.
If you find inaccurate information, typos, or outdated content in documentation:
Please open a Documentation Issue or submit a pull request with your improvements.
To submit code changes:
- Fork the repository and create your branch from
main(e.g.,feature/your-feature-nameorbugfix/issue-description). - Make your changes, keeping them focused. Avoid unrelated changes.
- Write clean, readable code following our guidelines.
- Ensure your changes compile and pass all tests locally.
- Submit a Pull Request (PR) with a clear description of the changes and references to any related issues.
This project is built with JavaFX, Maven, and SQLite.
- Java Development Kit (JDK) 21 or higher: Ensure you have JDK 21 installed and configured in your environment variables.
- Maven 3.9.0 or higher: We use Maven for dependency management and build orchestration.
- Git: Installed and configured on your system.
-
Clone the repository:
git clone https://github.com/BleckWolf25/DailyDash.git cd DailyDash -
Run the application locally:
mvn clean javafx:run
Use the following Maven commands in your project root:
-
Start development server:
mvn javafx:run
-
Build standalone executable package:
mvn clean package
-
Run all automated tests:
mvn clean test -
Package native build via GluonFX:
mvn gluonfx:build
To keep the codebase uniform and easy to read:
-
Indentation: Use 4 spaces for indentation. Do not use tabs.
-
Naming Conventions:
- Classes and Interfaces:
PascalCase - Methods and Variables:
camelCase - Constants:
UPPER_SNAKE_CASE
- Classes and Interfaces:
-
Braces: Use standard Egyptian brackets style:
public void exampleMethod() { if (condition) { // code } else { // code } }
-
Comments: Add JSDoc-style JavaDoc comments to public API methods, services, and complex database transaction logic.
- FXML Properties: Keep FXML bindings cleanly scoped inside Controller classes using the
@FXMLannotation. - Graphic Assets: Utilize
IconUtil.getIcon(...)for vector SVG icons instead of hardcoded strings or images. - Separation of Concerns: Keep view logic in
.fxml/ view builder files and state/controller handling in Controllers.
Use clear and descriptive commit messages. We recommend using prefix tags for commits, such as:
feat: ...for a new featurefix: ...for a bug fixdocs: ...for documentation changesrefactor: ...for code style or internal design changesstyle: ...for formatting fixestest: ...for adding or updating testschore: ...for maintenance tasks
Example:
feat: add custom delete project confirmation dialog
This project uses JUnit 5 for unit and integration testing.
- Place test files in the
src/test/java/com/dailydash/directory. - Test models, utility classes, and service transactions thoroughly.
- Ensure any test setup initializes and cleans up databases cleanly to maintain idempotency.
Please do not report security vulnerabilities in public issues. Refer to our Security Policy for instructions on how to report security issues privately.