Skip to content

Commit 09fdb39

Browse files
Merge branch 'main' into release-test
2 parents d37dbdb + 0ad9610 commit 09fdb39

File tree

359 files changed

+53405
-59962
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

359 files changed

+53405
-59962
lines changed

.eslintignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

.eslintrc.js

Lines changed: 0 additions & 57 deletions
This file was deleted.

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ lerna-debug.log
77
**/.DS_Store
88
**/*.env*
99
!**/.env.schema
10+
11+
*.tsbuildinfo

CONTRIBUTING.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Contributing to Overture
2+
3+
We appreciate your interest in contributing to this project. We are the Genome Informatics Software Engineering team from Ontario Institute for Cancer Research. At OICR we develop new software, databases and other necessary components to store, organize and process the large and complex datasets being generated by our cancer research programs. Embodying OICR's values of collaboration and community, we are firm believers in open-source and open-science. As such we strongly believe in the collective power of expertise and shared resources.
4+
5+
## Code of Conduct
6+
7+
By participating in this project, you are expected to abide by our [Code of Conduct](https://docs.overture.bio/community/code-of-conduct). Please take the time to read it carefully before contributing.
8+
9+
## Get Involved
10+
11+
**Getting Started:** Our primary platform for community support, feature requests, and general discussions is GitHub Discussions. This allows us to keep all conversations in one place and make them easily searchable for future reference.
12+
13+
14+
**Community Support:** Our primary platform for community support, feature requests, and general discussions is [GitHub Discussions](https://github.com/overture-stack/docs/discussions). This allows us to keep all conversations in one place and make them easily searchable for future reference.
15+
16+
- **Getting Help:** If you need assistance with Overture, please create a [new discussion in our support category](https://github.com/overture-stack/docs/discussions/categories/support).
17+
- Before creating a new discussion, please search existing discussions to see if your question has already been answered.
18+
- **Feature Requests & Proposals:** We love hearing your ideas for improving Overture! Before making a feature request, please check our [**feature roadmap**](https://github.com/orgs/overture-stack/projects/11/views/1) to see if your idea is already planned.
19+
- If your idea isn't on the roadmap, feel free to [**submit a feature request**](https://github.com/overture-stack/docs/discussions/categories/ideas) by creating a new discussion in our Ideas category
20+
- **Report a Potential Bug:** We use GitHub Issues primarily for tracking confirmed bugs and ticketing development tasks. If you come across a potential bug or issue, please first post it to our [**GitHub support discussion forum**](https://github.com/overture-stack/docs/discussions/categories/support).
21+
- This allows us to confirm the issue and gather more information if needed. If we determine that further development is required, we will create and tag you into a GitHub Issue from your discussion post.
22+
23+
## Our Development Process
24+
25+
We use GitHub issues and pull requests for communication related to code changes.
26+
27+
### Branch Organization
28+
29+
We use the following standard branches:
30+
31+
- `main` is for stable production code
32+
- `develop` is the integration branch for new features
33+
- `feature/<name>` for feature branches
34+
- `release/v<version>` for release branches
35+
- `hotfix/<name>` for hotfix branches
36+
37+
## Pull Requests
38+
39+
### Submitting a Pull Request
40+
41+
We welcome and encourage pull requests from the community. To submit a pull request, please follow these steps:
42+
43+
1. **Fork the Repository**: Fork the Overture repository on GitHub.
44+
2. **Clone Your Fork**: Clone your forked repository to your local machine.
45+
3. **Create a New Branch**: Create a new branch for your changes. Use lowercase and hyphens (e.g., `feature/user-authentication`). Include ticket/issue numbers when applicable (e.g., `feature/PROJ-123-user-authentication`).
46+
4. **Make Your Changes**: Implement your changes and commit them to your branch. Write clear, concise commit messages in present tense (e.g., "Add feature" not "Added feature"). Reference issue numbers in commits when applicable.
47+
5. **Push Your Changes**: Push your changes to your forked repository.
48+
6. **Submit a Pull Request**: Open a pull request against the main repository.
49+
50+
### Best Practices
51+
52+
1. **Keep PRs as small as possible:** Focus on one feature or bug fix per pull request. Break large changes into smaller, more manageable pieces making it easier for reviewers to understand and approve your changes.
53+
54+
2. **Use descriptive titles:** Start with a verb (e.g., "Add", "Fix", "Update", "Refactor"), briefly summarize the main purpose of the PR and include the issue number if applicable (e.g., "Fix user authentication bug (#123)").
55+
56+
3. **Describe how you tested it:** Explain the testing process you followed and mention any new automated tests you've added.
57+
58+
4. **Provide a clear description:** Explain the purpose of your changes and list the main modifications you've made. Mention any potential side effects or areas that might need extra attention.
59+
60+
5. **Link related issues:** Reference any related issues or pull requests. Use GitHub keywords to automatically link issues (e.g., "Closes #123", "Fixes #456").
61+
6. **Keep the PR's branch up-to-date:** Regularly rebase your branch on the latest main branch and resolve any merge conflicts promptly.
62+
63+
7. **Respond to feedback:** Be open to suggestions and willing to make changes. Address all comments from reviewers. If you disagree with a suggestion, explain your reasoning politely.
64+
65+
8. **Include documentation updates:** If your changes affect user-facing features, update or create and issue detailing the relevant changes need to the documentation. Where appropriate include inline comments for complex code sections.
66+
67+
10. **Be patient:** Reviewers will likely be unable to respond immediately. However, feel free to follow up politely if you haven't received feedback after a reasonable time.
68+
69+
### Using Draft Pull Requests
70+
71+
Draft Pull Requests are an excellent way to document work in progress and facilitate early feedback. Use them to:
72+
73+
- Organize your thoughts and process
74+
- Share early work and ideas with the team
75+
- Get feedback on implementation approaches before finalizing code
76+
- Track progress on long-running features
77+
78+
Guidelines for Draft Pull Requests:
79+
80+
1. **Creation**:
81+
- Open a pull request and select "Create draft pull request"
82+
- Clearly mark the title with [WIP] or [DRAFT] prefix
83+
2. **Description**:
84+
- Outline the current state of the work
85+
- List planned tasks or improvements
86+
- Highlight areas where feedback is specifically needed
87+
3. **Updates**:
88+
- Regularly update the description or provide comments following commits with progress notes
89+
- Use task lists (using `- [ ]` in Markdown) to track completion of sub-tasks
90+
4. **Collaboration**:
91+
- Encourage early feedback and discussion
92+
- Use the pull request comments for design discussions
93+
5. **Finalization**:
94+
- Complete all planned work and address feedback
95+
- Update tests and documentation
96+
- Click "Ready for review" to move out of draft state
97+
98+
### Merging a Pull Request
99+
100+
- Ensure all CI checks pass
101+
- Obtain the required number of approvals
102+
- Use the project's specified merge strategy (Typically squash and merge)
103+
- Delete the source branch after merging if no longer needed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
@Library(value='jenkins-pipeline-library@master', changelog=false) _
2-
pipelineOVERTUREArranger()
2+
pipelineOvertureArranger()

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ clear-es-documents:
129129
-d '{"query":{"match_all":{}}}'
130130

131131
seed-es:
132-
@echo $(YELLOW)$(INFO_HEADER) "Initializing file_centric index" $(END)
132+
@echo $(YELLOW)$(INFO_HEADER) "Initializing index" $(END)
133133
@$(ES_LOAD_SCRIPT) $(ES_USER) $(ES_PASS) $(ES_HOST) $(ES_INDEX) $(ES_DATA_DIR) $(ES_DOCS_DIR)
134134

135135
get-es-indices:

README.md

Lines changed: 28 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,49 @@
1-
# Arranger - Data Portal API and UI component Generation
1+
# Arranger
22

3-
[<img hspace="5" src="https://img.shields.io/badge/chat-on--slack-blue?style=for-the-badge">](http://slack.overture.bio)
4-
[<img hspace="5" src="https://img.shields.io/badge/License-gpl--v3.0-blue?style=for-the-badge">](https://github.com/overture-stack/arranger/blob/develop/LICENSE)
5-
[<img hspace="5" src="https://img.shields.io/badge/Code%20of%20Conduct-2.1-blue?style=for-the-badge">](code_of_conduct.md)
6-
7-
<div>
8-
<img align="right" width="120vw" src="icon-arranger.png" alt="arranger-logo"/>
9-
</div>
10-
11-
Arranger integrates with your underlying Elasticsearch cluster to automatically generate a powerful search API based on your configured index mapping. It consists of two main modules, **Arranger Server** and **Arranger Components**.
12-
13-
**Arranger Server** is a GraphQL API that communicates with an Elasticsearch index. Arranger Server uses a consistent and custom filter notation called SQON. SQON is designed to be user-friendly, allowing humans to easily understand and create custom filters while being straightforward for software systems to interpret and process.
14-
15-
**Arranger Components** are interactive and configurable UI components specifically designed to display and query complex datasets from a web browser.
16-
17-
<!--Blockqoute-->
3+
Arranger is a versatile, data-agnostic GraphQL search API that leverages Elasticsearch, designed to simplify the process of creating powerful search interfaces for complex datasets. It's accompanied by its own React component library to generate interactive and highly configurable search UIs.
184

195
</br>
206

21-
>
22-
> <div>
23-
> <img align="left" src="ov-logo.png" height="90"/>
24-
> </div>
25-
>
26-
> *Arranger is a core service within the [Overture](https://www.overture.bio/) research software ecosystem. See our [related products](#related-products) for more information on how Overture helps organize data and enable discovery.*
27-
>
28-
>
29-
30-
<!--Blockqoute-->
7+
> <img align="left" src="ov-logo.png" height="50"/>
8+
>
9+
> _Arranger is part of [Overture](https://www.overture.bio/), a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data._
3110
3211
## Documentation
3312

34-
- For development resources, including set up and technical details, see our [Developer Documentation.](https://github.com/overture-stack/arranger/wiki)
35-
36-
- For more information on installation, configuration, and usage see our [User Documentation.](https://www.overture.bio/documentation/arranger/installation/installation/)
37-
38-
## Quickstart Docker Install
39-
40-
To install Arranger using Docker, follow these steps:
13+
Technical resources for those working with or contributing to the project are available from our official documentation site, the following content can also be read and updated within the `/docs` folder of this repository.
4114

42-
1. Clone the Arranger repository
43-
2. Navigate to the project directory
44-
3. With Docker running, execute the quickstart `make` target:
15+
- **[Arranger Overview](https://docs.overture.bio/docs/core-software/Arranger/overview)**
16+
- [**Setting up the Development Enviornment**](https://docs.overture.bio/docs/core-software/Arranger/setup)
17+
- [**Common Usage Docs**](https://docs.overture.bio/docs/core-software/Arranger/setup)
4518

46-
```shell
47-
make start
48-
```
19+
## Development Environment
4920

50-
The deployed services will be accessible through the following ports:
51-
52-
| Service | Port |
53-
|--|--|
54-
| Arranger Server | localhost:5050/graphql |
55-
| Elasticsearch | localhost:9200 |
56-
| Kibana | localhost:5601 |
57-
58-
**Note(s):**
59-
60-
- To generate the API Arranger requires an Elasticsearch Instance and an index mapping. For information on setting Arranger up with a default index mapping, see our [official documentation page on supplying an index mapping.](https://www.overture.bio/documentation/arranger/installation/configuration/es/)
61-
62-
- Arranger is undergoing refactoring work for what will become version 3+. An _upgrade guide_ is on its way. Current users of v2 may look at the `legacy` branch, meanwhile, where we will continue fixing newly reported bugs until further notice.
63-
64-
- You may need to add the `--legacy-peer-deps` flag when integrating our modules into your apps. Along with the rewrite, we're steadily updating the internal dependencies, so this isn't necessary.
21+
- [Node.js](https://nodejs.org/) (v22 or higher)
22+
- [Docker](https://www.docker.com/) (v4.39.0 or higher)
6523

6624
## Support & Contributions
6725

68-
- Filing an [issue](https://github.com/overture-stack/arranger/issues)
69-
- Making a [contribution](CONTRIBUTING.md)
70-
- Connect with us on [Slack](https://overture-bio.slack.com/)
71-
- Add or Upvote a [feature request](https://github.com/overture-stack/arranger/issues?q=is%3Aopen+is%3Aissue+label%3Anew-feature+sort%3Areactions-%2B1-desc)
72-
73-
## Related Products
26+
- For support, feature requests, and bug reports, please see our [Support Guide](https://docs.overture.bio/community/support).
27+
- For detailed information on how to contribute to this project, please see our [Contributing Guide](https://docs.overture.bio/docs/contribution).
7428

75-
<div>
76-
<img align="right" alt="Overture overview" src="https://www.overture.bio/static/124ca0fede460933c64fe4e50465b235/a6d66/system-diagram.png" width="45%" hspace="5">
77-
</div>
29+
## Related Software
7830

79-
Overture is an ecosystem of research software tools, each with narrow responsibilities, designed to reduce redundant programming efforts and enable developers and data scientists to build reliable systems that organize and share big data.
31+
The Overture platform includes the following components:
8032

81-
All our core microservices are included in the Overture **Data Management System** (DMS). The DMS offers turnkey installation, configuration, and deployment of Overture software. For more information on the DMS, read our [DMS documentation](https://www.overture.bio/documentation/dms/).
33+
</br>
8234

83-
See the links below for additional information on our other research software tools:
35+
| Software | Description |
36+
| ------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
37+
| [Score](https://github.com/overture-stack/score/) | Transfer data to and from any cloud-based storage system |
38+
| [Song](https://github.com/overture-stack/song/) | Catalogue and manage metadata associated to file data spread across cloud storage systems |
39+
| [Maestro](https://github.com/overture-stack/maestro/) | Organizing your distributed data into a centralized Elasticsearch index |
40+
| [Arranger](https://github.com/overture-stack/arranger/) | A search API with reusable UI components |
41+
| [Stage](https://github.com/overture-stack/stage) | A React-based web portal scaffolding |
42+
| [Lyric](https://github.com/overture-stack/lyric) | A model-agnostic, tabular data submission system |
43+
| [Lectern](https://github.com/overture-stack/lectern) | Schema Manager, designed to validate, store, and manage collections of data dictionaries. |
8444

85-
</br>
45+
If you'd like to get started using our platform [check out our quickstart guides](https://docs.overture.bio/guides/getting-started)
8646

87-
|Software|Description|
88-
|---|---|
89-
|[Ego](https://www.overture.bio/products/ego/)|An authorization and user management service|
90-
|[Ego UI](https://www.overture.bio/products/ego-ui/)|A UI for managing Ego authentication and authorization services|
91-
|[Score](https://www.overture.bio/products/score/)| Transfer data to and from any cloud-based storage system|
92-
|[Song](https://www.overture.bio/products/song/)|Catalog and manage metadata associated to file data spread across cloud storage systems|
93-
|[Maestro](https://www.overture.bio/products/maestro/)|Organizing your distributed data into a centralized Elasticsearch index|
94-
|[Arranger](https://www.overture.bio/products/arranger/)|A search API with reusable UI components that build into configurable and functional data portals|
95-
|[DMS-UI](https://github.com/overture-stack/dms-ui)|A simple web browser UI that integrates Ego and Arranger|
96-
97-
## Acknowledgements
47+
## Funding Acknowledgement
9848

9949
Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

docker-compose.yml

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,29 @@ version: '3.7'
33
services:
44
elasticsearch:
55
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.1
6-
6+
container_name: elasticsearch.local
77
environment:
88
discovery.type: single-node
99
cluster.name: workflow.elasticsearch
1010
ES_JAVA_OPTS: -Xms512m -Xmx2048m
1111
ELASTIC_PASSWORD: '$ES_PASS'
1212
xpack.security.enabled: 'true'
13+
healthcheck:
14+
test: 'curl --silent --fail localhost:9200/_cluster/health?wait_for_status=yellow&timeout=50s || exit 1'
15+
interval: 1m30s
16+
timeout: 50s
17+
retries: 5
1318
logging:
1419
driver: 'json-file'
1520
options:
1621
max-size: '50m'
1722
max-file: '10'
23+
networks:
24+
- arranger
1825
ports:
1926
- 9200:9200
2027
- 9300:9300
2128

22-
healthcheck:
23-
test: 'curl --silent --fail localhost:9200/_cluster/health?wait_for_status=yellow&timeout=50s || exit 1'
24-
interval: 1m30s
25-
timeout: 50s
26-
retries: 5
27-
2829
kibana:
2930
image: docker.elastic.co/kibana/kibana:7.17.1
3031

@@ -42,7 +43,7 @@ services:
4243
ports:
4344
- 5601:5601
4445

45-
arranger-server:
46+
server:
4647
build:
4748
context: ./
4849
dockerfile: ./docker/Dockerfile.local
@@ -51,9 +52,21 @@ services:
5152
environment:
5253
ENABLE_LOGS: '${ENABLE_LOGS:-false}'
5354
ES_HOST: '${ES_HOST:-http://host.docker.internal:9200}'
54-
ES_USER: '$ES_USER'
55-
ES_PASS: '$ES_PASS'
55+
ES_USER: '${ES_USER:-elastic}'
56+
ES_PASS: '${ES_PASS:-badpassword}'
57+
networks:
58+
- arranger
5659
ports:
5760
- 5050:5050
5861
volumes:
5962
- '${CONFIG_PATH:-./docker/server}:/app/modules/server/configs'
63+
64+
ui:
65+
image: ghcr.io/overture-stack/stage:edge
66+
container_name: stage.local
67+
depends_on:
68+
- server
69+
networks:
70+
- arranger
71+
ports:
72+
- '3000:3000'

docker/Dockerfile.jenkins

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ARG ES_HOST=http://localhost:9200
88
#######################################################
99
# Builder
1010
#######################################################
11-
FROM node:18-alpine as builder
11+
FROM node:22-alpine as builder
1212

1313
ARG APP_FOLDER
1414
ARG APP_GID
@@ -43,4 +43,4 @@ USER $APP_USER
4343

4444
EXPOSE 5050
4545

46-
CMD make _ping_elasticsearch_server -e && npm run server:prod
46+
CMD make _ping_elasticsearch_server -e && npm run server

0 commit comments

Comments
 (0)