Development Guide¶
This section provides everything you need to understand, run, customize, and contribute to the OnDemand Loop application. Whether you're fixing a bug, extending functionality, or integrating with a new repository, this guide is your entry point.
Quick Start¶
Clone the repository and start the local environment using the built-in Makefile
targets:
make dev_up
command starts the development environment using Docker Compose with local development configuration.
It runs in the foreground, streaming logs from all containers to your terminal.
The shell prompt will not return until you stop the environment manually.
To stop the environment, press Ctrl+C. This will gracefully shut down all containers.
Alternatively, in another terminal you can run: make dev_down
Once the containers are running visit https://localhost:33000/pun/sys/loop and log in with the test user ood/ood
.
The documentation is organized by topic to help you find what you need quickly:
-
Architecture and Code
Overview of the system design, key components, and how the codebase is organized. -
Connectors
Details on how OnDemand Loop interacts with external repositories like Dataverse, Figshare, or Zenodo. -
Local Environment
How to set up and run OnDemand Loop locally for development. -
Docker Images
Information on the Docker-based setup and available images. -
Open OnDemand
Deployment, compatibility, and upgrade guidance for running OnDemand Loop within the Open OnDemand environment. -
Dataverse Integration
Specifics on how integration with Dataverse is implemented. -
Contributing a Change
Best practices and workflow for contributing code or documentation. -
Accessibility Guidelines
Practices taken into account to make the application accessible. -
Testing
How the Rails test suite is structured and executed using the provided Make targets. -
E2E Tests
End-to-end testing with Cypress, including local execution and CI/CD integration. -
GitHub Actions
How CI is handled using GitHub Actions, including testing and deployment workflows.
Each page is self-contained but builds on shared understanding of the architecture and workflows.
If you're new to the project, we recommend starting with: