+
Skip to content

Project Rewrite #163

@Midnighter

Description

@Midnighter

@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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载