awslabs / harmonix

A developer portal to meet your Enterprise needs. Fast, secure, and at-scale.
https://harmonixonaws.io/
Apache License 2.0
210 stars 42 forks source link

RFC: Standardize repository structure. #133

Open fjudith opened 3 weeks ago

fjudith commented 3 weeks ago

Community Note

The current repository structure is pretty difficult to handle for new contributors as-it deviate a lot from the default @backstage/create-app boiler plate. Having the Backstage app untracked in the repository complicates the collaboration when many developers are work on the code base.

What is the outcome that you are trying to reach?

Describe the solution you would like

Implement the Backstage Community Plugins repository structure and CI pipeline to managed the AWS Harmonix plugin release.

Envisionned repo layout

|-- .yarn           # Yarn 4.x
|-- containers
|   |-- awstools    # Container image definition of the CI/CD toolset
|   |-- backstage   # Container image definition of the Harmonix/Backstage application
|   |-- postgresql  # Container image definition of the PgVector extended PostgreSQL
|   |-- hack        # Known as Build scripts, contains scripts required for local development
|-- skeletons  # Reusable directory structures for used by software-templates
|   |-- cdk
|   |   |-- aws_ecs
|   |   |-- aws_eks
|   |   |-- aws_gen_ai_rag
|   |   |-- aws_rds
|   |   |-- aws_s3
|   |   |-- aws_secretsmanager
|   |   |-- aws_serverless_api
|   |   |-- aws_ecs
|   |-- terraform
|   |   |-- aws_ecs
|   |-- gitlab
|   |   |-- common       # Shared pipelines
|   |   |-- saas         # Gitlab SaaS runner auth "before_script"
|   |   |-- self-hosted  # Gitlab Self-Hosted runner base auth
|   |-- github  # Future use
|-- software-templates 
|   |-- scaffolder-templates
|   |   |-- aws-basic-environment-provider
|   |   |-- aws-ecs-ec2-environment-provider
|   |   |-- aws-eks-environment-existing-cluster-provider
|   |   |-- aws-eks-environment-provider
|   |   |-- aws-environment
|   |   |-- aws-gen-ai-environment-provider
|   |   |-- aws-gen-ai-rag
|   |   |-- aws-rds-resource
|   |   |-- aws-s3-resource
|   |   |-- aws-secretsmanager-resource
|   |   |-- aws-serverless-environment-provider
|   |   |-- aws-tf-ecs-environment-provider
|   |   |-- example-eks-nodejs-rds-helm
|   |   |-- example-eks-nodejs-rds-kustomize
|   |   |-- example-nodejs-microservice
|   |   |-- example-nodejs-rds
|   |   |-- example-nodejs
|   |   |-- example-python-flask-eks
|   |   |-- example-python-flask
|   |   |-- example-serverless-rest-api
|   |   |-- example-springboot-eks
|   |   |-- example-springboot
|   |   |-- example-tf-nodejs
|   |   |-- all-templates.yaml
|-- website  # Docusaurus documentation website
|-- workspaces
|   |-- repo-tools  # Copy of the [repository management](https://github.com/backstage/community-plugins/tree/main/workspaces/repo-tools)
|   |-- harmonix
|   |   |-- packages
|   |   |   |-- app         # Reference plugins implementation in the Backstage frontend SPA 
|   |   |   |-- backend     # Reference plugins implementation in the Backstage backend API
|   |   |-- plugins
|   |   |   |-- aws-apps
|   |   |   |-- aws-apps-backend
|   |   |   |-- aws-apps-common
|   |   |   |-- catalog-backend-module-aws-apps-entites-processor
|   |   |   |-- scaffolder-backend-module-aws-apps
|   |   |-- platforms
|   |   |   |-- basic-environment
|   |   |   |-- common-contructs
|   |   |   |-- ecs-ec2-environment
|   |   |   |-- ecs-environment
|   |   |   |-- eks-environment
|   |   |   |-- gen-ai-enviroment
|   |   |   |-- installer      # Known as opa-platform
|   |   |   |-- serverless-environment

Describe alternatives you have considered

Leverage traditional directory layout generated by the @backstage/create-app and move plugins from backstage-plugins/plugins directory to the classic plugins directory.

Additional context

Relates to #116

fjudith commented 3 weeks ago

@z-sourcecode , @awsjim , Note were're experimenting this new repository structure in ou organization https://github.com/alithya-oss/harmonix/blob/feature/repo-v2/MIGRATION.md