Skip to content

feat(dashboard): separate dashboard shared from dashaboards service & edit project route #5756

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

Merged

Conversation

piggggggggy
Copy link
Member

@piggggggggy piggggggggy commented Apr 9, 2025

Skip Review (optional)

  • Minor changes that don't affect the functionality (e.g. style, chore, ci, test, docs)
  • Previously reviewed in feature branch, further review is not mandatory
  • Self-merge allowed for solo developers or urgent changes

Description (optional)

  • Edit Project Route (need discussion about route architecture)
  • Separate dashboard-shared (below)

This PR introduces the dashboard-shared layer to separate shared dashboard components and logic, enabling dashboard creation to be abstracted across different service contexts (project, admin, workspace).

Shared components are designed to exclude any parts that rely on external client state or data flow. Instead, each service context is responsible for providing its own data and bindings.

This is an initial pilot refactor applied to the Create page, and may evolve based on feedback or future integration needs.


이 PR은 dashboard-shared 레이어를 도입하여, 프로젝트/관리자/워크스페이스 등 다양한 서비스 컨텍스트에서 공통으로 사용할 수 있도록 대시보드 생성 컴포넌트와 로직을 분리합니다.

shared 컴포넌트는 외부 클라이언트 상태나 데이터 흐름 등 외부와의 의존성이 있는 부분들을 다루지 않도록 설계되었으며,
각 서비스 컨텍스트에서 필요한 데이터와 바인딩을 직접 주입하는 방식으로 사용됩니다.

현재는 Create 페이지에 시범적으로 적용된 리팩터링이며, 이후 피드백이나 다른 페이지 적용에 따라 확장 및 조정될 수 있습니다.

Things to Talk About (optional)

Copy link

vercel bot commented Apr 9, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

4 Skipped Deployments
Name Status Preview Comments Updated (UTC)
console ⬜️ Ignored (Inspect) Visit Preview Apr 10, 2025 2:27am
dashboard ⬜️ Ignored (Inspect) Visit Preview Apr 10, 2025 2:27am
feature-project-landing ⬜️ Ignored (Inspect) Visit Preview Apr 10, 2025 2:27am
web-storybook ⬜️ Ignored (Inspect) Visit Preview Apr 10, 2025 2:27am

Copy link
Contributor

github-actions bot commented Apr 9, 2025

🎉 @skdud4659 and @WANZARGEN have been randomly selected as the reviewers! Please review. 🙏

Copy link
Member Author

@piggggggggy piggggggggy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/services
├── /dashboards
│   ├── /composables
│   ├── /pages
│   │   ├── DashboardCreatePage.vue  ← uses DashboardCreateBody
│   │   └── ...
│   ├── /helpers
│   ├── /stores
│   ├── /components
│   └── /types
└── /dashboard-shared  ← new shared module
    ├── /_composables
    │   └── use-dashboard-route-context.ts
    ├── /dashboard-detail
    │   ├── /components
    │   ├── /composables
    │   ├── /stores
    │   └── DashboardDetailBody.vue
    └── /dashboard-create
        ├── /components
        ├── /stores
        └── DashboardCreateBody.vue

Design Philosophy

  • The dashboard-shared module encapsulates reusable dashboard-related UI and logic, separated into feature-based groups such as dashboard-create and dashboard-detail.
  • Each group exposes a single interface component, following the naming convention ...Body.vue (e.g., DashboardCreateBody.vue, DashboardDetailBody.vue).
  • These Body components serve as the interface endpoints, designed to be loosely coupled with service-specific context via props.
  • Services like project or dashboards simply inject the necessary data into these Body components through props, without modifying their internal logic.

Body Component

  • Reflect the role of these components as self-contained, ready-to-use content blocks, rather than flexible layout shells.
  • They encapsulate domain logic and UI behavior internally, exposing a defined interface to the outside — much like a contract.
  • The external context only needs to comply with this contract via props, ensuring a clean separation of concerns.

설계 방향

  • dashboard-shared는 대시보드 생성/상세에 필요한 UI 및 로직을 기능 단위로 분리한 공통 모듈입니다.
  • 각 그룹(dashboard-create, dashboard-detail)은 단일 엔드포인트 컴포넌트인 ...Body.vue를 외부에 노출하며, Body 컴포넌트는 해당 기능의 핵심 내용을 담당하는 UI 추상화 레이어로 동작합니다.
  • 서비스(dashboards, project 등)는 이 Body 컴포넌트를 가져다 쓰되, 필요한 데이터를 props 형태로 주입함으로써 내부 구현과의 의존성을 최소화합니다.

Body Component

  • 해당 컴포넌트들은 단순한 레이아웃 컨테이너가 아니라, 기능적으로 완결된 UI 및 도메인 로직을 포함한 ‘본문’ 역할을 수행합니다.
  • 외부에서는 정해진 props만 주입하면 되며, 이를 통해 의미 있는 인터페이스 역할을 담당합니다.

@piggggggggy piggggggggy merged commit 289df54 into feature-integration-project-detail Apr 10, 2025
10 of 11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant