February 2022¶
Published on February 28, 2022
February 2022 represents the foundational month for the sage-monorepo project, marking the transition to a comprehensive Nx monorepo architecture. This period saw the establishment of core infrastructure, development tooling, and the initial application and library ecosystem that would support future development across multiple technology stacks.
During this month, 28 pull requests were successfully merged, establishing the essential infrastructure and initial applications for the monorepo. The primary contributor was @tschaffter, who led the architectural design and implementation of the workspace foundation.
Summary¶
- Total Pull Requests: 28 merged PRs
- Key Focus: Foundational monorepo architecture establishment and core infrastructure development
- Major Projects: Nx workspace setup, containerization strategy, development tooling, and initial application ecosystem
Technical architecture overview¶
February 2022 was a pivotal month focused on establishing robust architectural foundations and development infrastructure. The team implemented a sophisticated Nx monorepo structure designed to support multiple applications and shared libraries across different technology stacks while maintaining code quality and development efficiency.
Monorepo workspace establishment¶
The development team established a comprehensive Nx workspace architecture designed to support multiple applications and shared libraries across TypeScript, Angular, React, and Web Components technologies. This architectural foundation enables efficient code sharing, dependency management, and coordinated development across different technology stacks. The workspace structure provides clear separation of concerns between applications, libraries, and shared resources while maintaining consistent development patterns and build processes.
Containerization and deployment infrastructure¶
A comprehensive containerization strategy was implemented using Docker to ensure consistent deployment across different environments. Each application received its own Docker configuration with optimized build processes, enabling independent deployment and scaling capabilities. The team established Docker Compose orchestration for local development, simplifying the setup process for new contributors and ensuring environment consistency across the development team.
Development tooling and quality assurance¶
Significant investment was made in development tooling and quality assurance infrastructure to maintain high code quality standards. This included implementing pre-commit hooks with lint-staged configurations, continuous integration pipelines with GitHub Actions, and comprehensive linting and testing frameworks. The team also established cross-platform development support using tools like shx to accommodate different development environments and ensure consistent behavior across operating systems.
Pull requests merged¶
Workspace foundation and initial setup¶
- #1: Scafold workspace
Platform infrastructure¶
- #6: Add CI workflow
- #8: Fix CI workflow
- #10: Replace npm commands by yarn in CI workflow
- #12: Add targets
build
andtest
- #21: Add pre-commit hook
- #38: Use bash -c in package.json to call sourced functions
- #39: Set yarn min version required
- #46: Run cp command with shx
Libraries and shared components¶
- #2: Add lib api-docs
- #7: Configure target
lint
andlint-fix
for existing apps and libs - #28: Show how to use a Web Components UI library in Angular and React
- #29: Import UI components from forked sage-angular library
- #30: Import sage-angular lib
- #31: Add Web Components (WC) component example
Applications¶
- #4: Add API app
- #5: Add db-cli
- #16: Add project
api-db
- #20: Create project
web-app
- #25: Dockerize the projects
api
andapi-db
- #33: Integrate
api-angular
intoweb-app
- #35: Dockerize
web-app
Documentation and developer experience¶
- #13: Move initial README generated by Nx to docs/nx.md
- #40: Document how to start the web app with Docker
- #43: Add docs/legacy.md
- #44: Add Code Of Conduct and Contributing Guide
- #48: Add documentation
- #49: Fix doc on how to start with Docker
Community Impact¶
February 2022 represents a pivotal moment in Sage Bionetworks' software development approach, transitioning from isolated application development to a unified, collaborative ecosystem. The establishment of this monorepo architecture demonstrates the organization's commitment to open science principles, code reusability, and efficient development practices.
This foundational work enables multiple research teams to collaborate more effectively, share common components, and maintain consistent quality standards across all biomedical software projects. The emphasis on comprehensive documentation and developer experience ensures that the platform remains accessible to both current team members and future contributors.
Thank You¶
Last but certainly not least, a big Thank You to the contributors of the Sage monorepo.
This inaugural month sets the stage for revolutionizing biomedical research application development. The infrastructure established in February 2022 would support rapid development of multiple scientific applications throughout the year. Join us in building the future of research software!