Skip to content

Conversation

@hyokualexkwon
Copy link
Contributor

/gemini review

hyokualexkwon and others added 19 commits June 21, 2025 00:08
…ard UI (#72)

* STNDP-126 Restructure the personal board UI to align with the team board UI

* STNDP-126 Restructure the personal board UI to align with the team board UI

* STNDP-126 Restructure the personal board UI to align with the team board UI
* STNDP-128 API support for member invites

* STNDP-128 API support for collaborator invites
* STNDP-133 Add collaborators setting

* STNDP-133 Add collaborators setting
* STNDP-134 Add invitation setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting

* STNDP-134 Add invite collaborators setting
* STNDP-112 Change the page path /access to /auth/email/xyz

* STNDP-112 Change the page path /access to /auth/email/xyz

* STNDP-112 Change the page path /access to /auth/email/xyz

* STNDP-112 Change the page path /access to /auth/email/xyz

* STNDP-112 Change the page path /access to /auth/email/xyz
* STNDP-129 Prototpye Invitation flow

* Refactor invitation retrieval logic to include expiration and deactivation checks.
* Add new routes for accepting invitations and handling invitation-related actions.
* Update UI components to support invitation acceptance and display relevant messages.
* Modify existing routes to accommodate invitation tokens in query parameters.

* Fix invitation error handling logic (#79)

* Refactor invitation validation logic and error handling

Co-authored-by: bohyukwoo <[email protected]>

* Improve invitation validation with expiration and deactivation checks

Co-authored-by: bohyukwoo <[email protected]>

* Refactor invitation acceptance to check deactivation in query

Co-authored-by: bohyukwoo <[email protected]>

* Refactor invitation acceptance to improve error handling and token validation

Co-authored-by: bohyukwoo <[email protected]>

* Refactor invitation token validation and retrieval logic

Co-authored-by: bohyukwoo <[email protected]>

* Refactor invitation validation to simplify token and expiration checks

Co-authored-by: bohyukwoo <[email protected]>

* Refactor invitation service design notes for clarity and singleton pattern

Co-authored-by: bohyukwoo <[email protected]>

---------

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: bohyukwoo <[email protected]>

* STNDP-129 Prototpye Invitation flow

* Refactor invitation retrieval to handle potential errors gracefully.
* Update UI to safely access invitation properties, ensuring no undefined values are used.
* Improve user experience by displaying invitation details conditionally.

* STNDP-129 Prototpye Invitation flow

* Handle null invitation data and improve invitation route UI flow

Co-authored-by: bohyukwoo <[email protected]>

* STNDP-129 Prototpye Invitation flow

* Update invitation not found message for improved readability.
* Change button text from "Return to Home" to "Back to main" for better user experience.
* Simplify JSX structure for user sign-in message for consistency in formatting.

---------

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: bohyukwoo <[email protected]>

* STNDP-129 Prototpye Invitation flow

* Update invitation retrieval logic to ensure board ID is validated before proceeding.
* Clean up whitespace in the code for better readability.
* Enhance error handling in the `getByToken` and `accept` methods to throw appropriate exceptions when invitations are not found.

* STNDP-129 Prototpye Invitation flow

Refactor invitation route to use Link component for email continuation button

---------

Co-authored-by: Cursor Agent <[email protected]>
Co-authored-by: bohyukwoo <[email protected]>
Refactor past standups UI to enhance layout and messaging. Updated the no past standups message for clarity and improved user experience by adding a title and adjusting the structure of the component.
…moving non-null assertion (#82)

* STNDP-139 Fix runtime error in useRouteLoaderData destructuring by removing non-null assertion

* STNDP-139 Fix runtime error in useRouteLoaderData destructuring by removing non-null assertion
* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings

* STNDP-136 Patch collaborator settings
* STNDP-140 Implement leave board setting

* STNDP-140 Implement leave board setting

* STNDP-140 Implement leave board setting

* STNDP-140 Implement leave board setting
* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day

* STNDP-143 Display multiple standups for each day
* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup

* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup
* STNDP-144 Handle todo comments and miscellaneous bugs - cleanup
* Add initial drafts for AI Features Roadmap, Landing Page

* Refactor AI Features Roadmap and Landing Page content; update feature descriptions, improve clarity, and enhance pricing strategy documentation.

* Update pnpm-lock and package.json for Tailwind CSS and dependencies; add new landing page components and restructure existing pages for improved content presentation.

* Add new landing page draft and components; integrate Radix UI for improved UI elements and structure. Update package dependencies and add utility functions for class management.

* Refactor styles and structure in new-content.tsx; update background gradients for various sections, enhance button styles, and streamline card components for improved UI consistency.

* Update background gradient styles in new-content.tsx for improved visual consistency across sections; remove unused Section component to streamline layout.

* Add new images and videos for website content; update NavBar styles for improved theming consistency.

* Update pnpm-lock.yaml and package.json to include [email protected]; remove unused assets and add new gradient images for improved visual consistency on the website.

* Refactor website structure by removing the old new-content and new pages; integrate new content directly into index-content.tsx for improved organization. Add gradient images and update image slots for better visual consistency across the landing page.
@hyokualexkwon hyokualexkwon self-assigned this Aug 5, 2025
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @hyukkwonepic, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

I've been working on a significant update, Dev-0.8.0, which introduces a robust set of features focused on enhancing user experience and collaboration. The core changes involve a major overhaul of the API's authentication and authorization mechanisms, introducing a new invitation and collaboration system for boards, and enabling persistent user-specific settings. On the frontend, I've revamped the authentication flow, integrated personalized appearance and board view settings, and modernized the board management UI. Additionally, I've laid out future plans for AI features and detailed the product's marketing and pricing strategies.

Highlights

  • API Refactoring and New Authentication/Authorization Features: I've refactored the API to centralize JWT verification in a new AuthService and introduced PermissiveAuthGuard for flexible access control. The session refresh logic now handles network errors more gracefully, and the Drizzle configuration ensures consistent environment loading.
  • User Metadata Management: I've implemented a new ClientReadOnlyMetadata interface and corresponding API endpoint (updateClientReadOnlyMetadata) to allow users to persist their personal settings, such as appearance preferences and board view configurations, with deep merging capabilities.
  • Board Collaboration and Invitation System: I've introduced a robust board collaboration and invitation system. This includes a new collaboratorRoleEnum for admin and collaborator roles, an invitations table for token-based invitations with expiration, and comprehensive API endpoints for managing collaborators and invitations.
  • Web Application UI/UX Enhancements: The web application now features a streamlined email-based authentication flow that supports direct invitation acceptance. I've integrated user appearance settings into user metadata and introduced new UI and hooks for configuring board view modes (feed/grid), grid width, and card size. Board settings have been revamped with dedicated sections for collaborators and invitation management, and I've added keyboard shortcuts for improved standup interaction.
  • New Documentation and Marketing Content: I've added new documentation outlining the future AI features roadmap, detailed marketing content for the landing page, and a comprehensive pricing strategy document. This provides a clear vision for the product's evolution and market positioning.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This is a large pull request that introduces significant new features and refactors existing code. The main additions are a robust collaborator and invitation system for boards, and a complete overhaul of the board view with new "feed" and "grid" layouts and user-configurable settings. The authentication flow has been refactored for clarity and to support invitations. Error handling and resilience have been improved across the API. The marketing website has also been completely redesigned with modern animations and a new structure. The code quality is generally high, with good use of modern patterns, but there are a few areas for improvement, particularly around performance and configuration safety in the API.

Comment on lines +6 to +8
private readonly jwks = jose.createRemoteJWKSet(
new URL(process.env.AUTH_SERVICE_JWKS_URL!),
);

Choose a reason for hiding this comment

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

high

Using a non-null assertion ! for process.env.AUTH_SERVICE_JWKS_URL can lead to a runtime crash if the environment variable is not set. It's safer to validate required environment variables at application startup. Consider using NestJS's ConfigModule to load and validate your configuration, which will cause the application to fail fast if a required variable is missing.

Comment on lines +29 to +31
const users = await Promise.all(
userIds.map((userId) => this.usersService.get(userId)),
);

Choose a reason for hiding this comment

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

high

The list method fetches user details by calling this.usersService.get(userId) for each collaborator inside a Promise.all. This will result in N+1 network requests (1 to get collaborators, and N to get each user's details), which can be very inefficient for boards with many collaborators. If the underlying auth service API supports fetching multiple users by their IDs in a single request, it would be much more performant to refactor this to make a single batch request for all user details.

Comment on lines +81 to +259
### 6. Blocker Tracking & Resolution

**Problem**: 반복되는 블로커 패턴, 해결 추적 어려움 (40% 사용자, 월 2-3회)
**Solution**: AI가 블로커 패턴을 감지하고 해결책 제안

**Features:**

- "이 타입의 블로커가 5번 등장" 경고
- 과거 해결 사례 제안: "저번엔 이렇게 해결했어요"
- 에스컬레이션 추천: "3일 연속 같은 블로커 언급"
- 팀 지식 베이스 자동 구축
- 블로커 해결 시간 트래킹

**Value**: 문제 해결 속도 40% 향상, 지식 축적

### 7. Collaboration Network Analysis

**Problem**: 팀 협업 패턴 가시성 부족
**Solution**: 팀 협업 네트워크 시각화 및 최적화

**Features:**

- 스탠드업에서 언급 빈도 → 협업 맵 생성
- "Sarah와 John이 자주 협업하네요" 인사이트
- 크로스팀 의존성 추적
- 스탠드업 내용에서 스킬/전문성 매핑
- 협업 병목지점 식별

**Value**: 팀 효율성 향상, 지식 공유 최적화

### 8. Predictive Progress Tracking

**Problem**: 프로젝트 지연 조기 감지 어려움
**Solution**: 스탠드업 패턴으로 진행 예측

**Features:**

- "현재 속도로는 3일 늦을 예정" 예측
- 리소스 재배치 제안
- 스탠드업 언어/감정에서 리스크 평가
- 스코프 크리프 조기 감지
- 팀 번아웃 징후 모니터링

**Value**: 프로젝트 성공률 25% 향상

### 9. Automated Context Building

**Problem**: 신입 온보딩, 휴가 후 컨텍스트 복구 어려움
**Solution**: AI가 자동으로 관련 컨텍스트 구성

**Features:**

- "휴가 중 일어난 일 요약" 자동 생성
- 신입 팀원용 "팀이 최근 작업한 내용" 브리핑
- 프로젝트 히스토리 재구성
- 의사결정 트레일 추적
- 관련 이슈/PR 자동 링크

**Value**: 온보딩 시간 60% 단축, 컨텍스트 스위칭 효율화

---

## 💡 Additional Ideas (Future Consideration)

### Smart Search & Timeline

**Problem**: 과거 스탠드업 찾기 어려움 (60% 사용자, 주 1-2회)
**Solution**: 강력한 검색과 시간순 히스토리 뷰

**Features:**

- 키워드 검색: "API 관련 작업" → 관련 모든 업데이트
- 프로젝트별 타임라인 뷰
- "이 이슈 언제 시작했지?" 빠른 답변
- 태그 자동 추출 및 필터링
- 팀원별, 날짜별 필터

**Value**: 컨텍스트 복구 시간 80% 단축

---

## 🧠 Phase 3: Complex Features & R&D (12+ months)

### 10. Voice-to-Text Standup Recording

**Problem**: 회의 후 다시 타이핑하는 이중 작업
**Solution**: 미팅 녹음 → AI가 자동으로 각자 보드에 업데이트

**Technical Challenges:**

- 화자 분리 (Speaker identification) - 정확도 이슈
- 다국어, 억양, 노이즈 처리
- 개인정보 보호 및 보안
- 회의 품질에 따른 정확도 편차

**Implementation:**

- 고급 Speech-to-text API 통합
- 화자 구분 AI 모델 훈련
- 스탠드업 구조 파싱 (yesterday/today/blockers)
- 실시간 전사 vs 후처리 선택

**Value**: 이중 작업 제거, 하지만 높은 기술적 복잡도

### 11. Personal Productivity Coach

**Problem**: 개인 업무 패턴 최적화의 어려움
**Solution**: 충분한 데이터 기반 개인 코칭

**Features:**

- "화요일에 가장 생산적이에요" 개인 패턴 분석
- 번아웃 조기 경고 시스템
- 최적 워크로드 추천
- 목표 설정 및 추적 도우미
- 에너지 레벨 기반 작업 스케줄링

**Prerequisites**: 최소 3-6개월 개인 데이터 필요

### 12. Auto Cross-team Coordination

**Problem**: 팀 간 사일로 현상, 의존성 누락
**Solution**: 자동 크로스팀 연결 및 알림

**Features:**

- "팀 B가 기다리는 API를 팀 A가 완성했어요" 자동 알림
- 크로스팀 의존성 추적
- 관련 스테이크홀더 자동 제안
- 팀 간 상태 업데이트 동기화
- 병목 지점 자동 식별

**Value**: 대규모 조직에서만 의미 있음

---

## 🌟 Moonshot Ideas (Future R&D)

### 10. Musk-inspired Full Automation

- **Real-time work tracking**: GitHub commits, calendar, Slack → auto-generate standups
- **Neural interface**: Think your update, AI writes it
- **Ambient intelligence**: AI observes your work patterns and suggests optimizations

### 11. Jobs-inspired Invisible AI

- **Magic writing**: AI improves your writing style without you noticing
- **Perfect timing**: AI knows when to send notifications vs when to stay quiet
- **Beautiful insights**: Complex data presented as simple, actionable visuals

### 12. Bezos-inspired Customer Obsession

- **Customer impact tracking**: Every standup tied to customer value
- **Long-term thinking**: "Will this matter in 10 years?" analysis
- **Working backwards**: AI helps teams start with customer needs

---

## 🎯 Prioritization Framework (Data-Driven Update)

### Phase 1: Core User Pain Points (Do First)

1. **Yesterday Context Recall** - 매일 겪는 "어제 뭐했더라?" 해결 (90% 사용자)
2. **Today Suggestion Engine** - "오늘 뭐 쓸까?" 고민 제거 (80% 사용자)
3. **Daily Team Digest** - 일간 팀 현황 파악 (매니저뿐 아니라 모든 팀원용, 50% 사용자)
4. **AI Weekly Digest** - 주간 회고 & 트렌드 분석 자동 생성 (시간 절약 니즈)

### Phase 2: Advanced Intelligence (Plan Carefully)

6. **Blocker Tracking & Resolution** - 반복 블로커 패턴 감지 (40% 사용자, 월 2-3회)
7. **Collaboration Network Analysis** - 팀 협업 패턴 시각화
8. **Predictive Progress Tracking** - 프로젝트 완료 예측
9. **Automated Context Building** - 휴가 후 복귀, 신입 온보딩

### Phase 3: Complex Features (Later)

10. **Voice-to-Text Recording** - 기술적 복잡도 높음, ROI 불확실
11. **Personal Productivity Coach** - 충분한 개인 데이터 필요
12. **Moonshot Ideas** - R&D 프로젝트

Choose a reason for hiding this comment

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

medium

The numbering in this roadmap is inconsistent, which can cause confusion.

  • Phase 2 starts with item 6, skipping 5.
  • The "Moonshot Ideas" section reuses numbers 10, 11, and 12, which are already used in Phase 3.
  • The "Prioritization Framework" section also has inconsistent numbering for Phase 3, where item 12 is listed as "Moonshot Ideas" but in the main Phase 3 section it is "Auto Cross-team Coordination".

To improve clarity, please review and correct the numbering throughout the document.

Comment on lines +10 to +15
try {
return this.appService.getHello();
} catch (error) {
console.error(error);
throw new InternalServerErrorException();
}

Choose a reason for hiding this comment

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

medium

The try-catch block in the getHello method is unnecessary. This method simply returns a static string and does not perform any operations that could throw an error. While consistent error handling is good, adding try-catch blocks to non-fallible methods adds verbosity without providing any benefit. It's recommended to remove this try-catch block for cleaner code.

    return this.appService.getHello();

@hyokualexkwon hyokualexkwon merged commit c60cd0b into main Aug 5, 2025
2 checks passed
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

Successfully merging this pull request may close these issues.

2 participants