Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project Rewrite #163

Open
11 tasks
Midnighter opened this issue May 29, 2024 · 1 comment
Open
11 tasks

Project Rewrite #163

Midnighter opened this issue May 29, 2024 · 1 comment

Comments

@Midnighter
Copy link
Collaborator

@xJREB I was not able to create a project so I'm dumping everything into this issue for now.

@Efode-r2d2 I have pushed a branch https://github.com/adr/adr-manager/tree/vue3 which is an orphan branch. For now, I have copied most of the existing readme and the license into it. @xJREB I would like to add a line Copyright (c) 2024 Novo Nordisk A/S to the license file once we contribute something meaningful.

I also added a basic docker compose setup which makes it easier to run the frontend and pocketbase together for local development.

Apart from the upgrade to Vue 3, reorganizing the codebase and using TypeScript will be the biggest changes. I would like to change the project structure to something that is inspired by hexagonal architecture and a bit of domain-driven design (DDD). Please see the figure below for a first draft of what I mean. The use of interfaces and concrete implementations is will supported by TypeScript.

class-diagram

Since there is no project, I didn't see the point of making issues, but the below task list should be converted to individual issues.

Task List

  • Rewrite application in Vue 3
    • migrate old settings and code where it makes sense
    • use composition API
    • use single file components (SFCs)
    • use TypeScript https://vuejs.org/guide/typescript/overview.html
    • strictly separate stateful containers and presentational components
    • apply hexagonal architecture code layers
    • enforce dependencies using https://github.com/sverweij/dependency-cruiser
    • enable configuration via environment
    • make auth service dependencies optional (firebase, pocketbase, msal)
    • make repo services dependencies optional (github, gitlab)

Decisions

A number of decisions have already been taken just by setting up the project and should be converted to ADRs:

  • Vue 3
  • Use create-vue
    • TypeScript
    • vite
    • vitest
    • pinia
    • cypress
    • eslint
    • prettier
  • add editorconfig
  • add Docker
  • use pocketbase for local development
@Midnighter
Copy link
Collaborator Author

I talked with @hlyl earlier and he alerted me that my comment about copyright might be misunderstood. So I'd like to clarify here that we are in no way trying to appropriate open source software.

You can see from my GitHub profile that I've authored and contributed to many open source projects. To me the copyright notice is simply a form of acknowledging contributions. There are other forms to do so, this is the simplest format to me. The copyright line is not at all a requirement from us.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant