This document describes all validations, automatic checks, navigation restrictions, workflow states, and visual feedback mechanisms implemented in the BDIP Contribute interface workflow.
Note: this document does not include low-level internal code validations or implementation-specific technical details.
The system tracks unsaved changes in the following sections:
- Dockerfile
- README
- Metadata
- Ontology
- Test Instructions
Whenever the current content differs from the latest saved version, the section is marked as "dirty".
When the user attempts to change pages:
- the system checks whether unsaved changes exist
- if unsaved changes are detected, a confirmation dialog is displayed
- navigation is blocked until the user decides
Workflow:
"Yes, leave without saving"→ discards changes"Cancel"→ keeps the user on the current page
When navigating through the sidebar, the system automatically attempts to save changes in each section.
If the JSON format is invalid:
- autosave is blocked
- an error is displayed to the user
- navigation is interrupted
[ERROR]: Cannot autosave Metadata because the JSON is invalid.
A strong protection mechanism exists before deleting all projects.
The user must type exactly:
DELETE
- While the input does not exactly match
DELETE, the"Delete All"button remains disabled - Only after confirmation does the system:
- remove all projects
- delete the local database
- reset the workflow
In almost all pages:
The system verifies whether an active project is selected.
If no project is selected, the workflow is interrupted:
[WARNING]: Select a project first!
The user can:
- Create a new project
- Test an existing Docker image
- Download available input test data
Available project types:
- Regular
- From Image (Dockerfile)
- From Image (No Dockerfile)
- Update
The selected project type dynamically changes:
- available workflow
- Dockerfile rules
- future validations
- mandatory sections
If the project name is empty, project creation is blocked:
[ERROR]: Please enter a name.
The system verifies whether the project already exists:
- locally
- on GitHub
If the project already exists:
[WARNING]: This project already exists!
- Only allows creating new versions from existing images already available in the repository
If the version field is empty, the workflow is interrupted:
[ERROR]: Enter a version name.
The system validates whether the version already exists in:
latestrecommendedno_longer_tested
If the version already exists:
[ERROR]: Version [X.X.X] already exists for [selected_project]
The system automatically calculates the status of each section.
Manual editing is also allowed:
- DONE
- NOT DONE
- IN PROGRESS
- REVIEW
Note: the workflow dynamically changes according to the project type.
The submission button is only enabled when:
All steps == DONE
In this section, the user creates the Dockerfile and may also attempt to build the Docker image.
The system displays a mandatory warning regarding:
- redistribution
- licensing
- containerization permissions
This project type:
- does not require a Dockerfile
- completely blocks this step
The user only receives contextual information:
This project does not require a Dockerfile.
The system only allows:
FROM image[ERROR]: Only FROM instruction is allowed.
The SAVE PROGRESS button is only enabled when unsaved changes exist.
The system validates whether a Dockerfile exists in the repository:
[WARNING]: No Dockerfile found in repository.
The repository must follow the expected structure:
/<project>/<version>/Dockerfile
Possible warnings:
[WARNING]: This project does not follow the expected version structure (missing version folder).
or
[WARNING]: The Dockerfile is named 'dockerfile' (lowercase). It should be 'Dockerfile'.
Before saving or validating:
- the user must confirm the license agreement checkbox
If not confirmed:
[ERROR]: Please confirm the license agreement before saving.
or
[ERROR]: Please confirm the license agreement before finishing.
[ERROR]: Dockerfile is empty.
[ERROR]: Missing FROM instruction.
The system integrates Hadolint and dynamically ignores rules configured in the GitHub configuration file.
If errors exist:
- validation fails
- the Dockerfile is not saved locally
[ERROR]: Validation failed!
If only warnings exist or no issues are found:
- validation succeeds
- Dockerfile is saved locally
- status is updated to DONE
[WARNING]: Validation passed with warnings!
or
[SUCCESS]: No issues found!
Before building the image, the system verifies whether the Dockerfile exists locally.
If not found:
[ERROR]: Dockerfile not found.
build_success == True- status updated to DONE
[SUCCESS]: Docker image built successfully!
A detailed execution log is displayed to the user:
[ERROR]: Build failed.
In this section, the user creates the README using a structured form.
The system performs validation based on:
- required fields
- optional fields
Some fields contain conditional logic.
If a dependent field is filled, another field automatically becomes mandatory.
If X exists -> Y becomes mandatory
Note: some fields are automatically populated from the metadata (if empty), but users may still modify them if needed (e.g.
tool_name,tool_url,tool_url_help).
The system attempts to fetch and download the README from DockerHub.
If the request fails:
[ERROR]: Failed to fetch README.
The system checks whether a README exists in the GitHub repository:
[WARNING]: No README found in repository.
The repository must follow:
/<project>/<version>/README.md
If invalid:
[WARNING]: This project does not follow the expected version structure (missing version folder).
[ERROR]: README is empty!
The system verifies whether all mandatory (*) fields are completed.
If errors exist:
[ERROR]: README validation failed!
If warnings exist or no issues are found:
[WARNING]: README valid with warnings!
or
[SUCCESS]: README valid!
In this section, the user creates the project-specific metadata.json file using a structured form.
For update projects:
- metadata is automatically loaded from GitHub
- users may only visualize the existing metadata
If no metadata exists:
[WARNING]: No metadata found.
The validation workflow includes:
- required fields
- optional fields
Some fields use conditional logic:
If X exists -> Y becomes mandatory
Note 1: some fields are automatically populated from the README (if empty), but users may still edit them if needed (e.g.
tool_name,manual_url,source_url).
Note 2: some fields are automatically generated (e.g.
status,test_data_url,test_results_url).
The system validates whether the JSON structure is valid:
[ERROR]: Cannot save — JSON is invalid. Please fix syntax errors before saving.
In this section, the user selects ontology terms associated with the project.
- The ontology is loaded directly from GitHub
- Users may filter ontology terms using partial search
- Only terminal ontology terms can be selected
- At least one ontology term must be selected
- All selected ontology IDs must exist in the
dio.oboontology file available on GitHub
- Users may only visualize ontology terms
- Only ontology terms associated with the selected project are displayed
Users may suggest new ontology terms.
These suggestions are later reviewed by project managers.
The system automatically generates a prompt containing:
- the project description (based on the README)
- the list of available ontology terms
Assist users in selecting the most appropriate ontology terms.
In this section, users can build and test Docker images to ensure correct execution.
This project type does not allow building or testing images.
[WARNING]: No Build/Test Available for this Project Type.
This project uses an existing Docker image and does not include a Dockerfile.
The system only provides a text area for execution instructions.
Instructions cannot be empty:
[ERROR]: Instructions cannot be empty.
- Verifies whether additional repository files required for building exist
- Tests the image using test data URLs defined in the metadata
- verifies whether a Dockerfile exists
- verifies whether input files exist
- verifies whether a test command (
docker run ...) exists
Note: the system generates a complete execution log to assist the user.
This is the final workflow step.
All previous required steps must be completed before generating the /for_submission folder.
The folder is only generated when all required steps are marked as:
DONE
Only projects containing a valid /for_submission folder can be validated by project managers through:
Home > Test Docker Image