RE_Documents/RE_Workflow_Task_Breakdown.md

5717 lines
182 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RE Workflow Management System - Task Breakdown
## Sprint Planning & Task Distribution (Frontend & Backend)
**Version:** 1.1
**Date:** October 23, 2025
**Project:** RE Workflow Management System (Non-Templatized)
**Authentication:** Standard Login Flow (SSO deferred)
**Current Status:** Frontend UI from Figma implemented, functionality integration in progress
---
## Table of Contents
1. [Project Overview](#project-overview)
2. [SSO Authentication Approach](#sso-authentication-approach) 🔐
3. [Frontend Work Reality Check](#frontend-work-reality-check) ⚠️ **READ THIS FIRST**
4. [Sprint Structure](#sprint-structure)
5. [Backend Tasks](#backend-tasks)
6. [Frontend Tasks](#frontend-tasks)
7. [Task Dependencies](#task-dependencies)
8. [Timeline & Milestones](#timeline--milestones)
📖 **For Detailed Sprint Explanations:** See separate file `RE_Workflow_Detailed_Sprint_Guide.md`
---
## Project Overview
### Technology Stack
- **Backend:** Node.js 22 LTS + TypeScript 5.7 + Express.js + PostgreSQL 16
- **Frontend:** React 19 + TypeScript (TSX) + Material-UI 6.3 + Redux Toolkit 2.5
- **Authentication:** Standard Email/Password Login (JWT-based)
### Authentication Approach
- 🔄 **SSO Login (RE SSO Bridge):** Primary authentication method (awaiting final confirmation)
- **No Login/Signup Screens:** SSO handles authentication externally
- **Figma Note:** No login/signup screens in Figma (not needed for SSO)
- **User Flow:**
1. User clicks "Login" → Redirects to RE SSO Bridge
2. User authenticates with RE credentials (handled by SSO)
3. SSO redirects back to app with token
4. App validates token and creates session
- **Frontend Work:** Minimal (just SSO callback handler)
- **No Registration Flow:** Users are provisioned in Active Directory, auto-synced to app
- ⚠️ **Fallback Plan (if SSO delayed):** Standard email/password login (temporary)
- Only if SSO integration is delayed or unavailable
- Can be built in 3-4 days as temporary solution
- Will be replaced by SSO once available
### Current Project Status (As of October 23, 2025)
#### Frontend Status 🔄
- **Figma UI Extraction:** 80% complete (includes mobile responsive)
- ⚠️ **Important:** This is just UI with dummy data, NO API integration yet
- When 100% extraction done: Still just static UI components
- All UI is mobile responsive (320px - 1920px)
- **Dependency Packages:** ✅ All resolved and installed
- **Work Note Feature:** UI complete + partial functionality (document selection, emoji support working)
- **Current Status:**
- ✅ UI Components: 80% extracted
- ❌ API Integration: 0% (not started)
- ❌ Redux Integration: 0% (not started)
- ❌ Form Validations: 0% (not started)
- ❌ Business Logic: 0% (not started)
**Reality Check:**
- Figma extraction ≠ Feature complete
- UI extraction = Just visual components with dummy data
- Still need: API integration, state management, validations, error handling, loading states
**Actual Frontend Completion:** ~20% (UI only, no functionality)
#### Backend Status 🔄
- **Repository Setup:** 70% in progress
- **Database Schema:** Ready to implement (0% done)
- **API Development:** Not started (0% done)
- **Estimated Completion:** Following planned timeline
**Overall Project Completion:** ~10% (mostly UI extraction)
---
## 🔐 SSO Authentication Approach
### How SSO Login Works (No Login/Signup Screens Needed)
#### User Authentication Flow:
```
┌─────────────────────────────────────────────────────────────┐
│ User visits app → https://workflow.royalenfield.com │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ App detects no session → Redirects to RE SSO Bridge │
│ https://sso.royalenfield.com/oauth/authorize?client_id=... │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ User enters RE credentials (email + password) │
│ SSO validates against Active Directory │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ SSO redirects back to app with authorization code │
│ https://workflow.royalenfield.com/auth/callback?code=XXX │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ App backend exchanges code for access token │
│ Gets user info from SSO (name, email, employee ID, dept) │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ App creates/updates user in local database │
│ Generates JWT token for app session │
│ Returns JWT to frontend │
└────────────────────┬────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Frontend stores JWT and redirects to Dashboard │
│ User is now logged in! │
└─────────────────────────────────────────────────────────────┘
```
#### What This Means for Development:
**Frontend (Minimal Work):**
- ❌ No login page (SSO handles it)
- ❌ No signup page (users come from Active Directory)
- ❌ No password reset page (SSO handles it)
- ✅ Just need SSO callback page (`/auth/callback`)
- ✅ Protected route guards (redirect to SSO if not authenticated)
- ✅ Logout functionality (clear session + redirect to SSO logout)
**Backend:**
- ✅ SSO integration (Passport.js with OAuth2 strategy)
- ✅ User sync from Active Directory
- ✅ JWT token generation for app sessions
- ✅ Session management
- ✅ User profile sync and updates
**Sprint 1 Focus:**
- Configure SSO OAuth2 integration
- Handle SSO callback
- Sync users from AD to local database
- Generate JWT for app sessions
- Implement protected routes
**Time Saved:**
- No need to build login/signup/password reset screens
- No password hashing/validation
- No email verification
- **Estimated time saved:** 3-4 days frontend, 2-3 days backend
---
## ⚠️ Frontend Work Reality Check
### 🎨 Understanding "Figma UI Extraction" vs "Feature Complete"
This section is **CRITICAL** to understand before reviewing tasks and timelines.
#### What Figma Extraction Gives You:
**✅ Visual Components (80% Complete):**
```
login-page/
├── login-form.tsx ← Has HTML structure
│ ├── <input email> ← Looks like email input
│ ├── <input password> ← Looks like password input
│ └── <button>Login</button> ← Looks like button
└── login-page.css ← Has all styling
PROBLEM: Form doesn't actually do anything!
- Email input accepts any text (even "abc123")
- Password input has no strength check
- Login button has no onClick handler
- No API call on submit
- No error handling
- No loading state
- No validation messages
- Just pretty, non-functional HTML
```
**Example: My Requests Page from Figma**
```tsx
// What Figma gives you (80% done):
const MyRequests = () => {
const dummyData = [
{ id: 1, title: "Approval for office", status: "Pending" },
{ id: 2, title: "Budget approval", status: "Approved" }
];
return (
<div className="requests-page">
{dummyData.map(req => (
<RequestCard data={req} /> {/* Pretty card with dummy data */}
))}
</div>
);
};
// What you ACTUALLY need (the other 84%):
const MyRequests = () => {
const dispatch = useAppDispatch(); // ← Need Redux
const { workflows, loading, error } = useAppSelector(state => state.workflow); // ← Need Redux
const [filters, setFilters] = useState({}); // ← Need state management
useEffect(() => {
// ← Need API integration
dispatch(fetchMyWorkflows(filters));
}, [filters]);
if (loading) return <LoadingSkeleton />; // ← Need loading state
if (error) return <ErrorState message={error} />; // ← Need error handling
if (!workflows.length) return <EmptyState />; // ← Need empty state
return (
<div className="requests-page">
<SearchBar onSearch={handleSearch} /> {/* ← Need search logic */}
<FilterPanel filters={filters} onChange={setFilters} /> {/* ← Need filter logic */}
{workflows.map(req => (
<RequestCard
data={req}
onClick={() => navigate(`/workflows/${req.id}`)} {/* Need navigation */}
/>
))}
<Pagination
page={page}
total={totalPages}
onChange={handlePageChange} {/* Need pagination */}
/>
</div>
);
};
```
---
#### What You Still Need to Build (84% of Frontend Work):
**1. Redux State Management (20% of total work = 7 days)**
- Create Redux store configuration
- Create 8 Redux slices (auth, workflow, approval, notification, etc.)
- Define initial states
- Create reducers for each action
- Create async thunks for API calls
- Setup Redux persist
- Configure Redux DevTools
- **Without this:** Components can't share data, no global state
**2. API Integration (30% of total work = 12 days)**
- Configure Axios instance
- Create API service files (9 files)
- Setup request/response interceptors
- Handle JWT token injection
- Handle token refresh
- Connect every page to its API:
- Login → POST /api/v1/auth/login
- Register → POST /api/v1/auth/register
- Create Workflow → POST /api/v1/workflows
- Approve → PATCH /api/v1/workflows/:id/approve
- (And 50+ more API calls)
- Handle API errors
- Handle network failures
- **Without this:** App is just a pretty shell with fake data
**3. Form Validations (15% of total work = 5 days)**
- Email format validation
- Password strength validation
- Required field validation
- Max/min length validation
- Number validation (TAT hours)
- File type validation (documents)
- File size validation (10MB max)
- Custom validators (employee ID format, etc.)
- Error message display
- Real-time validation as user types
- **Without this:** Users can submit invalid data, app crashes
**4. Business Logic (15% of total work = 5 days)**
- TAT calculation (working days vs calendar days)
- Request number generation (display)
- Date formatting and calculations
- File size formatting (bytes to MB)
- User search and @mention logic
- Approval level sequencing
- Status badge color logic
- Priority level handling
- **Without this:** App has no "brain"
**5. Error Handling (10% of total work = 3 days)**
- API error handling (400, 401, 403, 404, 500)
- Network error handling (offline, timeout)
- Form validation errors
- Display error messages (toast notifications)
- Error boundaries (catch React crashes)
- Retry logic for failed requests
- User-friendly error messages
- **Without this:** App crashes and users are confused
**6. Loading States (10% of total work = 3 days)**
- Loading spinners for API calls
- Skeleton loaders for data fetching
- Progress bars for file uploads
- Disable buttons during loading
- Overlay loaders for modals
- Page transition loaders
- **Without this:** Users don't know app is working
**7. Testing (10% of total work = 5 days)**
- Component unit tests
- Redux slice tests
- Integration tests
- E2E tests
- **Without this:** Bugs in production
---
### 📊 Frontend Effort Distribution Chart
```
Total Frontend Work = 100%
├─ Visual UI (Figma Extraction): 20% ── [████████████████████] 80% DONE
├─ Redux State Management: 20% ── [░░░░░░░░░░░░░░░░░░░░] 0% DONE
├─ API Integration: 30% ── [░░░░░░░░░░░░░░░░░░░░] 0% DONE
├─ Validations & Logic: 20% ── [░░░░░░░░░░░░░░░░░░░░] 0% DONE
└─ Testing & Polish: 10% ── [░░░░░░░░░░░░░░░░░░░░] 0% DONE
Current Completion: 16% (0.80 × 0.20 = 0.16)
Remaining Work: 84%
```
---
### 🎯 Typical Frontend Task Breakdown (Example: Login Page)
**What Figma Gives You (20% - Already Done):**
- Login page layout ✅
- Email input field (looks pretty) ✅
- Password input field (looks pretty) ✅
- Login button (styled) ✅
- Dummy text and placeholder ✅
- **Time saved:** ~2 hours
**What You Still Need to Build (80% - Todo):**
**1. Redux Integration (2 hours):**
- Create authSlice actions
- Create login async thunk
- Handle loading/success/error states
- Update Redux store on login
**2. API Integration (1 hour):**
- Create auth.service.ts
- Implement login API call
- Handle API response
- Extract JWT token
**3. Form Validation (1.5 hours):**
- Validate email format
- Check required fields
- Show validation errors
- Disable submit if invalid
**4. Business Logic (1 hour):**
- Handle form submit
- Store JWT in localStorage
- Redirect to dashboard on success
- Clear form on error
**5. Error Handling (1 hour):**
- Handle wrong credentials (401)
- Handle network errors
- Show error toast
- Display field-level errors
**6. Loading State (0.5 hours):**
- Show spinner on button
- Disable form during login
- Show loading overlay
**7. Testing (1 hour):**
- Test valid login
- Test invalid credentials
- Test validation
**Total Time for Login Page:**
- Figma UI: 2 hours ✅ (Done)
- Functionality: 8 hours ❌ (Todo)
- **Login page is only 20% done!**
**This pattern applies to EVERY page in the app!**
---
### 💡 Key Takeaway for Frontend Team
**"Having the UI" is like having a car body without:**
- Engine (Redux)
- Transmission (API integration)
- Steering (Navigation & routing)
- Brakes (Error handling)
- Fuel (Data from backend)
- Dashboard instruments (Loading states)
**It looks like a car, but you can't drive it!**
Similarly:
- Your app looks complete
- But nothing actually works yet
- You need to build all the "internal machinery"
**Plan for 7-8 weeks of integration work, not 2-3 weeks!**
---
### 📋 Realistic Frontend Task List (With Current Status)
| Category | Total Tasks | Figma Done | Still Todo | Time Needed |
|----------|-------------|------------|------------|-------------|
| **UI Components** | 40 components | 32 (80%) | 8 (20%) | 1-2 days |
| **Redux Slices** | 8 slices | 0 (0%) | 8 (100%) | 2-3 days |
| **API Services** | 9 service files | 0 (0%) | 9 (100%) | 1 day |
| **Page Integration** | 15 pages | 0 (0%) | 15 (100%) | 12 days |
| **Form Validations** | 20 forms | 0 (0%) | 20 (100%) | 4 days |
| **Route Guards** | 12 routes | 0 (0%) | 12 (100%) | 1 day |
| **Error Handling** | All pages | 0 (0%) | All (100%) | 3 days |
| **Loading States** | All pages | 0 (0%) | All (100%) | 3 days |
| **Testing** | 40 tests | 0 (0%) | 40 (100%) | 5 days |
| **TOTAL** | | **16%** | **84%** | **~35 days** |
---
## Revised Sprint Structure (Week-Based Timeline)
### 🔄 Sprint 0: Project Setup & Infrastructure (PARTIALLY COMPLETE)
**Week:** 1
**Backend Status:** 🔄 70% In Progress
**Frontend Status:** 🔄 80% In Progress (UI extracted, NO functionality)
**Goal:** Development environment ready with basic architecture
**Frontend Reality:**
- ✅ UI Components extracted from Figma: 80%
- ✅ Mobile responsive: Done
- ✅ Packages installed: Done
- ❌ API integration: Not started
- ❌ Redux connected: Not started
- ❌ Forms functional: Not started
---
### 🔄 Sprint 1: SSO Authentication & User Management (CURRENT WEEK)
**Week:** 2-3
**Backend:** SSO integration, user sync, session management
**Frontend:** SSO callback handler, protected routes, user profile
**Goal:** Working SSO authentication system
**Note:** No login/signup screens needed (SSO handles authentication externally)
---
### Sprint 2: Core Workflow Creation
**Weeks:** 3-4 (2 weeks)
**Backend:** Workflow APIs, approval hierarchy
**Frontend:** Connecting wizard UI to backend
**Goal:** Complete workflow creation flow
---
### Sprint 3: Approval & Workflow Actions
**Weeks:** 5-6 (2 weeks)
**Backend:** Approval logic, TAT tracking, notifications
**Frontend:** Request management, approval/reject modals
**Goal:** Full approval workflow operational
---
### Sprint 4: Documents & Work Notes
**Week:** 7
**Backend:** Document storage, work notes APIs
**Frontend:** ✅ Work notes UI complete, connect to backend
**Goal:** Collaboration features working
---
### Sprint 5: Dashboard & Reporting
**Week:** 8
**Backend:** Dashboard APIs, AI integration
**Frontend:** Charts, statistics, filters
**Goal:** Analytics and dashboards complete
---
### Sprint 6: Testing & Deployment
**Weeks:** 9-10 (2 weeks)
**Backend:** Testing, optimization, deployment
**Frontend:** Testing, performance optimization, deployment
**Goal:** Production-ready application
---
## 📖 Sprint Summaries
**⚠️ For Detailed Code Examples, Step-by-Step Guides, and Implementation Details:**
**See separate document:** `RE_Workflow_Detailed_Sprint_Guide.md`
This section provides brief summaries only. The detailed guide contains:
- Complete code examples for each feature
- Step-by-step implementation instructions
- Validation logic and error handling
- API integration patterns
- Redux state management examples
- 100+ code snippets
---
### 🚀 Sprint 0: Project Setup & Infrastructure (Week 1)
**Status:** Frontend 🔄 80% Complete (UI Only) | Backend 🔄 70% Complete
#### What This Sprint Delivers:
This sprint establishes the foundation for the entire project. It's about setting up the development environment, tools, and basic architecture.
#### ⚠️ IMPORTANT: Figma UI Extraction Reality
**What "80% UI Extracted" Actually Means:**
- ✅ Visual components created (buttons, inputs, cards, modals)
- ✅ Layout structure in place (header, sidebar, content areas)
- ✅ Mobile responsive design (320px to 1920px)
- ✅ Styling complete (colors, fonts, spacing)
- ✅ Dummy data displayed (hardcoded text, placeholder images)
**What is NOT Included in "UI Extraction":**
- ❌ API integration (no backend calls)
- ❌ Redux state management (no global state)
- ❌ Form validations (fields don't validate input)
- ❌ Error handling (no error messages)
- ❌ Loading states (no spinners/skeletons)
- ❌ Business logic (no calculations, no workflows)
- ❌ Data persistence (nothing saves to database)
- ❌ Authentication (login form visible but doesn't work)
- ❌ Navigation guards (routes not protected)
- ❌ Dynamic data (everything is static/hardcoded)
**Real Effort Distribution:**
- Figma UI Extraction: 20% of total frontend work
- API Integration: 30% of total frontend work
- State Management: 20% of total frontend work
- Validations & Logic: 20% of total frontend work
- Testing & Polish: 10% of total frontend work
**Translation:**
- 80% UI extracted = 16% of total frontend work done (0.80 × 0.20)
- Still need: 84% of actual functionality to be built
#### Backend Deliverables:
**1. Repository & Environment Setup (BE-001)**
- Create GitHub/GitLab repository with proper structure
- Initialize Node.js 22 LTS project with TypeScript 5.7
- Setup complete folder structure:
- `src/` for source code
- `src/controllers/`, `src/services/`, `src/models/`
- `src/middlewares/`, `src/routes/`, `src/utils/`
- `tests/` for unit and integration tests
- `database/` for schema and migrations
- Configure `tsconfig.json` with strict TypeScript settings
- Setup `.env.example` with all required environment variables
- Configure `.gitignore`, `.eslintrc`, `.prettierrc`
- Install all dependencies (Express, Sequelize, JWT, bcrypt, etc.)
**2. Database Setup & Schema (BE-002) - CRITICAL**
- Install and configure PostgreSQL 16
- Create database `re_workflow_db`
- Implement complete database schema with 15+ tables:
- `users` - User accounts and profiles
- `workflow_requests` - Main workflow data
- `approval_levels` - Approval hierarchy
- `participants` - Spectators and other participants
- `documents` - Document metadata
- `work_notes` - Chat/collaboration messages
- `activities` - Audit trail and activity log
- `notifications` - User notifications
- `tat_tracking` - TAT monitoring
- `conclusion_remarks` - AI-generated conclusions
- And more...
- Create database triggers for auto-generation of request numbers
- Create database views for reporting (active requests, notifications)
- Add indexes for performance optimization
- Insert initial system settings
**3. Core Backend Configuration (BE-003)**
- Setup Express.js application with TypeScript
- Configure essential middleware:
- `helmet` - Security headers
- `cors` - Cross-origin resource sharing
- `express.json()` - JSON body parsing
- `morgan` - HTTP request logging
- Setup Winston logger with file rotation (error.log, combined.log)
- Create centralized error handling middleware
- Setup health check endpoint (`/health`)
- Configure graceful shutdown handlers
**4. Sequelize ORM Setup (BE-004)**
- Configure Sequelize connection to PostgreSQL
- Create TypeScript models for all database tables:
- User model with associations
- WorkflowRequest model with relationships
- ApprovalLevel, Participant, Document models
- Work notes, activities, notifications models
- Define all model associations (one-to-many, many-to-many)
- Test database connectivity
- Setup model synchronization for development
#### Frontend Deliverables:
**1. Current Status of Frontend Tasks (FE-001 to FE-007)**
**What's Actually Done (80%):**
- ✅ Repository with React 19 + Vite 6 setup
- ✅ TypeScript 5.7 configuration
- ✅ Material-UI 6.3 theme configuration
- ✅ All dependencies installed and resolved
- ✅ UI components extracted from Figma (80%):
- Buttons, inputs, dropdowns, modals, cards, tables
- Header, sidebar, footer layouts
- All pages visually complete
- Mobile responsive (320px - 1920px)
- Dummy data displayed everywhere
**What's NOT Done Yet (0%):**
-**Redux Toolkit 2.5 store:** Need to create all slices
- authSlice (user, token, login state)
- workflowSlice (requests, current workflow)
- approvalSlice (approval levels, status)
- notificationSlice (notifications, unread count)
- documentSlice, workNoteSlice, participantSlice, uiSlice
-**Axios API service layer:** Need to configure
- Create Axios instance with base URL
- Setup request interceptors (add JWT token)
- Setup response interceptors (error handling)
- Handle token refresh logic
- Handle 401 unauthorized redirects
-**React Router DOM 7.1:** Need to implement
- Route protection (PrivateRoute/PublicRoute)
- Auth guards (redirect if not logged in)
- Route-based code splitting
-**Form Validations:** None implemented
- No field validation (email format, required fields)
- No error messages shown
- Forms accept any input
-**API Integration:** Zero integration
- Forms don't submit data
- Lists show dummy data
- No backend calls made
- No loading states
- No error handling
**Remaining Work for Sprint 0:**
1. Complete last 20% of UI extraction (1-2 days)
2. Setup Redux store with all slices (2-3 days)
3. Configure Axios service layer (1 day)
4. Implement route guards (1 day)
5. Basic form validations (2 days)
**Estimated Time to Complete Sprint 0:** 1 week more
#### What You Can Use After Sprint 0 (Actually Completes):
- ✅ Running backend server with database connection
- ✅ Frontend UI with all visual components
- ✅ Redux store configured and working
- ✅ API service layer ready to make calls
- ✅ Protected routes working
- ✅ Forms with basic validation
- ❌ Still no API integration (that's Sprint 1 onwards)
---
### 🔐 Sprint 1: SSO Authentication & User Management (Week 2-3)
**Status:** ⏳ Awaiting SSO Details | **Focus:** SSO integration (no login/signup screens)
#### What This Sprint Delivers:
SSO-based authentication with Royal Enfield SSO Bridge. Users authenticate via company SSO (no login/signup screens needed).
#### Key Implementation Points:
**Backend (BE-101, BE-102: 2 days):**
- Configure SSO Bridge OAuth2 integration
- Handle SSO callback and token exchange
- Auto-sync users from Active Directory to local database
- Generate JWT tokens for app sessions
- User search API (for @tagging in workflows)
- User profile update API (phone/picture only - other fields from AD)
**Frontend (FE-101, FE-102, FE-103: 2.5 days):**
- SSO callback handler page (receives token from SSO)
- Protected route guards (redirect to SSO if not authenticated)
- "Login with SSO" button (redirects to SSO Bridge)
- Logout functionality (clears session + SSO logout)
- User profile display in header (from Active Directory data)
- Limited profile editing (phone number and profile picture only)
**What You Can Do After Sprint 1:**
- ✅ Users can login via SSO
- ✅ Users auto-synced from Active Directory
- ✅ Protected routes working (redirect to SSO if not logged in)
- ✅ User profile displayed in header
- ✅ Logout functionality
- ✅ JWT session management
**⚠️ Important:** No login/signup/password reset screens needed! SSO handles all authentication.
**📖 For Detailed Implementation:** See `RE_Workflow_Detailed_Sprint_Guide.md`
---
### 📝 Sprint 2: Core Workflow Creation (Weeks 3-4)
**Status:** ⏳ Upcoming | **Focus:** 6-step workflow creation wizard
#### What This Sprint Delivers:
Complete workflow creation wizard: Basic Info → Approval Hierarchy → Participants → Documents → Review → Submit
#### Key Features:
- **Step 1:** Template selection (Custom Request)
- **Step 2:** Request title, rich text description, priority (Standard/Express)
- **Step 3:** Dynamic approval levels (up to 10), @mention user search, TAT calculation
- **Step 4:** Add spectators with @mention
- **Step 5:** Document upload (drag-drop, 10MB max), Google Docs/Sheets links
- **Step 6:** Review summary, save draft or submit
**Backend APIs (BE-201 to BE-204: 1 week):**
- Create/update/delete workflow
- Add approval levels
- Add participants
- Upload documents
- Submit workflow
- List and filter workflows
**Frontend Integration (FE-201 to FE-208: 1.5 weeks):**
- Connect wizard steps to Redux
- Real-time TAT calculation
- User search for approvers/spectators
- File upload with progress
- Multi-step API submission flow
- Form validations
**Most Complex:** Approval workflow builder (dynamic levels, TAT calculation, user search)
**📖 For Detailed Code Examples:** See `RE_Workflow_Detailed_Sprint_Guide.md` - Sprint 2 section
---
### ✅ Sprint 3: Approval & Workflow Actions (Weeks 5-6)
**Status:** ⏳ Upcoming | **Focus:** Approve/reject requests, TAT tracking, notifications
#### What This Sprint Delivers:
- Request management pages (My Requests, Open Requests, Closed Requests)
- Request detail page with tabs (Overview, Workflow, Documents, Activity)
- Approve/reject modals with mandatory comments
- TAT monitoring cron job (runs every 30 minutes)
- Real-time notifications (bell icon with unread count)
- Work notes integration with @mentions
**Backend APIs (BE-301 to BE-303: 1.5 weeks):**
- Approve/reject workflow endpoints
- TAT calculation service (working days vs calendar days)
- TAT monitoring cron job
- Notification system (8 notification types)
- Activity logging for all actions
**Frontend Integration (FE-301 to FE-309: 2 weeks):**
- Request listing pages with search/filter/pagination
- Request detail page with 4 tabs
- TAT progress bars (color-coded: green/yellow/red)
- Approval timeline visualization
- Notification bell with dropdown
- Approve/reject modals with validation
**Most Complex:** TAT calculation logic (working days exclude weekends)
**📖 For Detailed Code Examples:** See `RE_Workflow_Detailed_Sprint_Guide.md` - Sprint 3 section
**2. Approval Hierarchy Management (BE-202, FE-204)**
**Backend APIs:**
- **POST /api/v1/workflows/:id/approvals** - Add approval level
- Accept level number, approver user ID, TAT
- Validate max 10 levels
- Ensure level numbers are sequential (1, 2, 3...)
- Calculate TAT dates based on priority
- **GET /api/v1/workflows/:id/approvals** - Get approval hierarchy
- Return all levels with approver details
- Show current level status
- **GET /api/v1/workflows/:id/approvals/current** - Get active level
- Return currently active approval level
- Show who needs to approve now
**Frontend Approval Workflow Builder (FE-204):**
This is the most complex screen in the wizard!
**Dynamic Level Creation:**
- Start with Level 1 (minimum 1 level required)
- Add Level button to create additional levels
- Maximum 10 approval levels allowed
- Each level can be removed (except if only 1 level)
**For Each Approval Level:**
- **Level Number:** Auto-generated (Level 1, Level 2, etc.)
- **Level Name/Title:** (Optional)
- Text input for descriptive name
- Example: "Department Head Approval", "Finance Review", "CEO Final Approval"
- **Approver Selection:**
- **@mention search input** (like Slack/Teams)
- Type "@" or start typing name
- Dropdown appears showing matching users
- Shows user details:
- Full name
- Email address
- Department
- Profile picture
- Select user from dropdown
- Selected user appears as tag/chip
- Can clear and select different user
- Required field (must select an approver)
- **TAT (Turnaround Time):**
- Number input for TAT value
- Dropdown to select unit (Hours or Days)
- Options: 1-720 hours OR 1-30 days
- Required field
- Example: "48 hours" or "2 days"
- **Add/Remove Level Actions:**
- "Add Level" button (if less than 10 levels)
- "Remove Level" button (if more than 1 level)
- Confirm before removing level
**Real-Time TAT Calculation:**
- As user adds levels and TAT values:
- Automatically sum all TAT values
- Show total TAT prominently at top
- Example: "Total TAT: 96 hours (4 days)"
- Update in real-time as user modifies levels
**Approval Flow Summary Panel:**
- Read-only visualization showing:
- Complete approval hierarchy
- All levels in order (1 → 2 → 3...)
- Approver name for each level
- TAT for each level
- Total TAT at bottom
- Updates automatically as user adds/modifies levels
**TAT Summary Widget:**
- Visual breakdown:
- Total hours and days
- Expected completion date (estimated)
- Working days vs calendar days indicator
- Color-coded based on urgency
**Validation:**
- At least 1 approval level required
- Each level must have an approver selected
- Each level must have valid TAT (> 0)
- No duplicate approvers allowed (same person can't be at multiple levels)
**WEEK 4: Participants, Documents & Submission**
**3. Participant Management (BE-203, FE-205)**
**Backend APIs:**
- **POST /api/v1/workflows/:id/participants** - Add spectator
- Accept user ID and participant type
- Validate user exists
- Set permissions (can view, can comment)
- **GET /api/v1/workflows/:id/participants** - Get all participants
- Return initiator, approvers, spectators
- **DELETE /api/v1/workflows/:id/participants/:id** - Remove spectator
- Only spectators can be removed (not approvers)
**Frontend Participants & Access (FE-205):**
**Add Spectators Section:**
- **What are Spectators?**
- View-only participants (like CC in email)
- Can see workflow progress
- Can add comments in work notes
- Cannot approve or reject
- Receive notifications about workflow
- **@mention Search (same as approver selection):**
- Type "@" or start typing name
- Search users by name/email
- Select multiple spectators
- Show selected spectators as chips/tags
- **Spectator List:**
- Display all added spectators
- Show user name, email, department
- Remove button for each spectator
- **Permissions Display:**
- Clear message: "Spectators can view and comment but cannot approve"
- Visual icon showing permissions
**4. Document Upload (BE-201, FE-206)**
**Backend APIs:**
- **POST /api/v1/workflows/:id/documents** - Upload document
- Accept multipart/form-data
- Validate file type (PDF, Word, Excel, PPT, images)
- Validate file size (max 10MB per file)
- Upload to cloud storage (GCP or local for dev)
- Store metadata in database
- Return document ID and URL
- **GET /api/v1/workflows/:id/documents** - Get all documents
- Return list of documents with metadata
**Frontend Documents & Attachments (FE-206):**
**File Upload Component:**
- **Drag-and-Drop Zone:**
- Large drop area with icon
- "Drag files here or click to browse"
- Highlight area when files dragged over
- **Browse Files Button:**
- Opens file picker dialog
- Can select multiple files at once
- **Supported File Types:**
- PDF documents
- Word (DOC, DOCX)
- Excel (XLS, XLSX)
- PowerPoint (PPT, PPTX)
- Images (JPG, PNG, GIF)
- Show supported formats below upload area
- **File Size Limit:**
- Maximum 10MB per file
- Show error if file too large
- Suggest compressing large files
**Uploaded Files List:**
- Display each file as a card/row showing:
- File icon (based on file type)
- File name
- File size (KB/MB)
- Upload progress bar (while uploading)
- Remove button (X icon)
- **File Actions:**
- Preview icon (for PDF and images)
- Download icon
- Delete icon
**Google Docs/Sheets Integration:**
- **Google Docs Link:**
- Text input for Google Docs URL
- Validate URL format
- Show link icon when valid URL entered
- **Google Sheets Link:**
- Text input for Google Sheets URL
- Validate URL format
- Show link icon when valid URL entered
- Display added links with:
- Document/Sheet icon
- Link title (extracted from URL or user-provided)
- Open link button
- Remove button
**5. Review & Submit (BE-201, FE-207, FE-208)**
**Frontend Review & Submit (FE-207):**
**Comprehensive Summary Display:**
**Section 1: Request Overview**
- Request Type: Custom Request
- Priority: Standard / Express (with badge)
- Request Title: (user-entered title)
**Section 2: Basic Information**
- Detailed Description (formatted with HTML)
- Priority Level with explanation
- Edit button → goes back to Step 2
**Section 3: Approval Workflow**
- Visual hierarchy showing:
- All approval levels in order
- Approver name and email for each level
- TAT for each level
- Total TAT calculation
- Edit button → goes back to Step 3
**Section 4: Participants & Access**
- List of all spectators with names
- Participant count
- Edit button → goes back to Step 4
**Section 5: Documents & Attachments**
- List of uploaded files (name, size, type)
- List of Google Docs/Sheets links
- Document count
- Edit button → goes back to Step 5
**Action Buttons:**
**Save as Draft:**
- Saves workflow without submitting
- User can edit later
- Stays in "Draft" status
- Redirects to "My Requests"
**Submit Request:**
- Final submission (cannot be edited after)
- Triggers approval workflow
- Changes status from "Draft" to "Pending"
- Sends notification to first approver
- Starts TAT tracking
- Redirects to request detail page
**Backend Submission Logic (BE-201, FE-208):**
**API Integration Flow:**
1. **POST /api/v1/workflows** - Create draft workflow
2. **POST /api/v1/workflows/:id/documents** (multiple) - Upload documents
3. **POST /api/v1/workflows/:id/approvals** (multiple) - Create approval levels
4. **POST /api/v1/workflows/:id/participants** (multiple) - Add spectators
5. **PATCH /api/v1/workflows/:id/submit** - Submit workflow
**Submission Actions:**
- Update workflow status: DRAFT → PENDING
- Set submission_date to current timestamp
- Calculate and set tat_start_date and tat_end_date
- Update first approval level status to IN_PROGRESS
- Create activity log entry: "Request submitted"
- Send notifications:
- To first approver: "New workflow pending your approval"
- To all spectators: "You've been added to a workflow request"
- Return complete workflow data
**6. Workflow Listing & Filtering (BE-204)**
**Backend APIs:**
- **GET /api/v1/workflows** - Get all workflows with filters
- Query parameters: status, priority, page, limit, sortBy, sortOrder
- **GET /api/v1/workflows/my-requests** - User's created workflows
- Return workflows where user is initiator
- **GET /api/v1/workflows/open** - Open/pending workflows
- Return workflows in PENDING or IN_PROGRESS status
- Where user is approver or spectator
- **GET /api/v1/workflows/closed** - Completed workflows
- Return workflows in APPROVED, REJECTED, or CLOSED status
- **GET /api/v1/workflows/assigned-to-me** - Workflows pending user's action
- Return workflows where user is current level approver
**Filtering & Search Features:**
- Filter by status (Draft, Pending, Approved, Rejected, Closed)
- Filter by priority (Standard, Express)
- Filter by date range (submission date)
- Search by title or description (full-text search)
- Sort by date, priority, status
- Pagination (20 requests per page)
#### What You Can Do After Sprint 2:
- ✅ Create custom workflow requests
- ✅ Define multi-level approval hierarchy (up to 10 levels)
- ✅ Set TAT for each approval level
- ✅ Add spectators for transparency
- ✅ Upload supporting documents
- ✅ Link Google Docs/Sheets
- ✅ Save workflows as draft
- ✅ Submit workflows for approval
- ✅ View all created workflows (My Requests)
- ✅ Search and filter workflows
#### Technical Complexity:
- **Frontend:** Dynamic form with 6 steps, wizard navigation, real-time validation
- **Backend:** Complex data relationships, file upload, TAT calculation logic
- **Integration:** Multi-step API calls, error handling at each step
---
### ✅ Sprint 3: Approval & Workflow Actions (Weeks 5-6)
**Status:** ⏳ Upcoming | **Focus:** Enable approvers to act on workflows, track TAT, send notifications
#### What This Sprint Delivers:
Complete approval workflow with ability to approve/reject requests, TAT monitoring with alerts, real-time notifications, and comprehensive request management pages.
#### Detailed Functionality Breakdown:
**WEEK 5: Approval Actions & TAT Tracking**
**1. Workflow Approval Process (BE-301)**
**Backend Approval Logic:**
**PATCH /api/v1/workflows/:id/approvals/:levelId/approve** - Approve Request
**Pre-Approval Validations:**
- Verify user is the assigned approver for this level
- Verify workflow is in PENDING or IN_PROGRESS status
- Verify current level matches the level being approved
- Verify level is not already approved
- Verify comments field is provided (mandatory)
**Approval Actions:**
1. Update approval level:
- Set status to APPROVED
- Set action_date to current timestamp
- Set level_end_time to current timestamp
- Store approver comments
2. Stop TAT for current level:
- Calculate elapsed time for this level
- Update tat_tracking table
- Mark level as completed within/beyond TAT
3. Move to next level OR close if final:
- **If NOT final approver:**
- Increment workflow current_level (e.g., 1 → 2)
- Update workflow status to IN_PROGRESS
- Update next level status to IN_PROGRESS
- Set level_start_time for next level
- Start TAT tracking for next level
- Send notification to next approver
- **If final approver:**
- Update workflow status to APPROVED
- Set closure_date to current timestamp
- Trigger AI conclusion generation
- Send notification to initiator: "Your request has been approved"
- Send notification to all spectators
4. Create activity log:
- Activity type: APPROVAL_ACTION
- Description: "Level X approved by [Approver Name]"
- Store comments in metadata
- Timestamp the action
**PATCH /api/v1/workflows/:id/approvals/:levelId/reject** - Reject Request
**Pre-Rejection Validations:**
- Same as approval validations
- Comments/rejection reason is mandatory
**Rejection Actions:**
1. Update approval level:
- Set status to REJECTED
- Set action_date to current timestamp
- Store rejection comments (mandatory)
2. Stop all TAT tracking:
- Mark current level as breached/stopped
- Cancel pending levels
3. Close workflow:
- Update workflow status to REJECTED
- Set closure_date to current timestamp
- Mark as closed
4. Send notifications:
- To initiator: "Your request has been rejected by [Approver Name]"
- Include rejection reason in notification
- To all spectators: notification of rejection
5. Create activity log:
- Activity type: REJECTION_ACTION
- Description: "Request rejected by [Approver Name] at Level X"
- Store rejection reason in metadata
**Frontend Approval Actions (FE-307):**
**Approve Request Modal:**
- **Trigger:** Click "Approve Request" button in request detail
- **Modal Content:**
- Request ID and Title display
- Current approval level info
- "Approval Confirmation" heading
- **Comments & Remarks field:**
- Multi-line text area
- Placeholder: "Add your approval comments..."
- Mandatory field (cannot submit without comments)
- Character limit: 500 characters
- Character counter showing remaining chars
- Validation: "Comments are required"
- **Contextual message:**
- "Your approval will move this request to the next level" OR
- "As final approver, your approval will close this request"
- **Action Buttons:**
- "Approve Request" button (primary/green)
- Disabled until comments entered
- Shows loading spinner during API call
- "Cancel" button (secondary)
- Closes modal without action
**Reject Request Modal:**
- **Trigger:** Click "Reject Request" button in request detail
- **Modal Content:**
- Request ID and Title display
- Current approval level info
- "Rejection Confirmation" heading (red/warning color)
- **Rejection Reason field:**
- Multi-line text area
- Placeholder: "Please provide detailed reason for rejection..."
- Mandatory field (cannot submit without reason)
- Character limit: 500 characters
- Character counter
- Validation: "Rejection reason is required"
- **Warning message:**
- "Rejecting will close this request immediately"
- "This action cannot be undone"
- **Rejection Guidelines:**
- "Please provide constructive feedback"
- "Be specific about what needs to be changed"
- **Action Buttons:**
- "Reject Request" button (danger/red)
- Disabled until reason entered
- Shows loading spinner
- Confirmation prompt: "Are you sure?"
- "Cancel" button
- Closes modal without action
**After Action Taken:**
- Close modal automatically
- Show success notification:
- "Request approved successfully" OR
- "Request rejected"
- Refresh request detail page to show updated status
- Scroll to activity timeline to show new activity
- Update TAT progress bar
- Update approval timeline visual
**2. TAT Tracking & Monitoring (BE-302)**
**Backend TAT Service:**
**TAT Calculation Logic:**
**For Standard Priority (Working Days):**
- Calculate elapsed time excluding weekends
- Exclude holidays (if holiday list configured)
- Example: 48 hours TAT starting Friday 3 PM
- Friday 3 PM - 5 PM = 2 hours
- Monday 9 AM - 5 PM = 8 hours
- Tuesday 9 AM - 5 PM = 8 hours
- Wednesday 9 AM - 5 PM = 8 hours
- Thursday 9 AM - 5 PM = 8 hours
- Friday 9 AM - 3 PM = 6 hours
- Total = 40 hours (exclude weekend)
**For Express Priority (Calendar Days):**
- Calculate elapsed time including weekends
- Include all days (7 days/week, 24 hours/day)
- Example: 48 hours TAT starting Friday 3 PM
- Deadline: Sunday 3 PM (48 hours later)
**TAT Status Determination:**
- **ON_TRACK (Green):**
- TAT usage < 50%
- Example: 10 hours used out of 48 hours (20%)
- **APPROACHING (Yellow/Warning):**
- TAT usage between 50% and 80%
- Example: 36 hours used out of 48 hours (75%)
- Trigger reminder notification
- **BREACHED (Red/Critical):**
- TAT usage >= 100%
- Example: 50 hours used out of 48 hours (104%)
- Trigger breach alert notification
**TAT Monitoring Cron Job:**
- **Schedule:** Runs every 30 minutes
- **Process:**
1. Get all active workflows (PENDING, IN_PROGRESS)
2. For each active workflow:
- Get current approval level
- Calculate elapsed time since level_start_time
- Calculate percentage TAT used
- Determine TAT status
- Update tat_tracking table
3. Check for threshold crossings:
- If TAT usage crosses 50%: Create alert (optional)
- If TAT usage crosses 80%: Send reminder notification
- If TAT usage crosses 100%: Send breach notification
4. Send notifications to approvers and initiators
5. Log TAT status changes in activity timeline
**TAT APIs:**
- **GET /api/v1/workflows/:id/tat** - Get TAT status
- Return current level TAT info
- Elapsed time, remaining time, percentage used
- TAT status (ON_TRACK, APPROACHING, BREACHED)
- Expected completion date
- **GET /api/v1/tat/breached** - Get breached requests
- Return all workflows with breached TAT
- For admin dashboard and monitoring
- **GET /api/v1/tat/approaching** - Get approaching deadlines
- Return workflows with TAT usage > 80%
- For proactive monitoring
**Frontend TAT Display (FE-303, FE-304):**
**TAT Progress Bar Component:**
- **Visual Progress Bar:**
- Horizontal bar showing TAT progress
- Fill color based on status:
- Green: 0-50% (ON_TRACK)
- Yellow: 50-80% (APPROACHING)
- Orange: 80-99% (HIGH RISK)
- Red: 100%+ (BREACHED)
- Animated fill effect
- Percentage label inside or above bar
- **TAT Status Text:**
- Display current status with icon
- "On Track" (green checkmark icon)
- "Approaching Deadline" (yellow warning icon)
- "TAT Breached!" (red exclamation icon)
- **Time Information:**
- Elapsed time: "24 hours elapsed"
- Remaining time: "24 hours remaining" OR "8 hours overdue"
- Total TAT: "48 hours total"
- Expected completion: "Expected by Nov 15, 3:00 PM"
- **Per-Level TAT Display (Workflow Tab):**
- For each approval level, show:
- Level TAT allocation (e.g., "48 hours")
- Actual time taken
- Status indicator (completed within/beyond TAT)
- Progress bar for active level
- Checkmark for completed levels
**WEEK 6: Notifications & Request Management**
**3. Notification System (BE-303)**
**Backend Notification Service:**
**Notification Types & Triggers:**
**1. Workflow Assignment Notifications:**
- **When:** Workflow submitted, moves to new level
- **To:** Assigned approver
- **Title:** "New Approval Request Assigned"
- **Message:** "You have a new workflow request (REQ-2025-00001) pending your approval from [Initiator Name]"
- **Action URL:** Link to request detail page
- **Priority:** NORMAL
**2. Approval/Rejection Notifications:**
- **When:** Request approved or rejected
- **To:** Workflow initiator
- **Title:** "Workflow Request [Approved/Rejected]"
- **Message:** "Your request (REQ-2025-00001) has been [approved/rejected] by [Approver Name]"
- **Action URL:** Link to request detail page
- **Priority:** HIGH
**3. TAT Warning Notifications (80% threshold):**
- **When:** TAT usage reaches 80%
- **To:** Current approver + initiator
- **Title:** "TAT Warning: Action Required"
- **Message:** "Request (REQ-2025-00001) has used 80% of TAT. Please review urgently."
- **Action URL:** Link to request detail page
- **Priority:** HIGH
**4. TAT Breach Notifications (100%+):**
- **When:** TAT exceeded
- **To:** Current approver + initiator + spectators
- **Title:** "TAT BREACHED!"
- **Message:** "Request (REQ-2025-00001) has exceeded TAT deadline"
- **Action URL:** Link to request detail page
- **Priority:** URGENT
**5. Work Note Mention Notifications:**
- **When:** User @mentioned in work note
- **To:** Mentioned user
- **Title:** "[User Name] mentioned you"
- **Message:** "[User Name] mentioned you in a work note: '[Message preview...]'"
- **Action URL:** Link to work notes section
- **Priority:** NORMAL
**6. Document Upload Notifications:**
- **When:** New document uploaded
- **To:** All participants (initiator, approvers, spectators)
- **Title:** "New Document Added"
- **Message:** "[User Name] uploaded a document: [filename]"
- **Action URL:** Link to documents tab
- **Priority:** LOW
**7. Spectator Added Notifications:**
- **When:** User added as spectator
- **To:** Added spectator
- **Title:** "You've been added to a workflow"
- **Message:** "[Initiator Name] added you as spectator to request (REQ-2025-00001)"
- **Action URL:** Link to request detail page
- **Priority:** NORMAL
**8. Request Closure Notifications:**
- **When:** Workflow closed (approved or rejected)
- **To:** All participants (initiator, approvers, spectators)
- **Title:** "Workflow Request Closed"
- **Message:** "Request (REQ-2025-00001) has been closed"
- **Action URL:** Link to request detail page
- **Priority:** NORMAL
**Notification APIs:**
- **GET /api/v1/notifications** - Get user notifications
- Query params: page, limit, is_read filter
- Return paginated notifications
- Sort by created_at DESC (newest first)
- **GET /api/v1/notifications/unread** - Get unread notifications
- Return only unread notifications
- Include unread count
- **PATCH /api/v1/notifications/:id/read** - Mark as read
- Update is_read to true
- Set read_at timestamp
- **PATCH /api/v1/notifications/mark-all-read** - Mark all as read
- Update all user's unread notifications
- **DELETE /api/v1/notifications/:id** - Delete notification
- Soft delete or hard delete
**Frontend Notification System (FE-401):**
**Notification Bell Icon (Header):**
- **Bell icon in top-right corner**
- **Unread count badge:**
- Red circle with number
- Shows count of unread notifications
- Updates in real-time
- Pulsing animation for new notifications
- **Click Behavior:**
- Opens dropdown panel below icon
- Shows recent notifications
- Marks clicked notifications as read
**Notification Dropdown Panel:**
- **Header:**
- "Notifications" title
- "Mark All as Read" button
- Close button (X)
- **Notification List (Recent 10):**
- Each notification shows:
- Type icon (color-coded)
- Title (bold)
- Message text (truncated)
- Timestamp (relative: "2 hours ago")
- Unread indicator (blue dot)
- Read notifications are grayed out
- **Click Notification:**
- Mark as read automatically
- Navigate to action URL (request detail page)
- Close dropdown
- **Footer:**
- "View All Notifications" link
- Opens full notifications page
- **Empty State:**
- Shows when no notifications
- Icon + "No notifications"
**Notification Polling:**
- **Auto-refresh every 30 seconds**
- Fetch new notifications from API
- Update unread count in header
- Show toast notification for high-priority alerts
- Play sound (optional) for urgent notifications
**Toast Notifications (High Priority):**
- **For urgent notifications:**
- Small popup in top-right corner
- Auto-dismiss after 5 seconds
- Click to go to related request
- Multiple toasts stack vertically
**4. Request Management Pages (FE-301, FE-302, FE-303)**
**My Requests Page (FE-301):**
**Page Layout:**
- **Tab Navigation at Top:**
- Total (show all requests)
- In Progress (pending + in_progress status)
- Approved (approved status)
- Rejected (rejected status)
- Draft (draft status)
- Each tab shows count badge
- **Search & Filter Bar:**
- Search input (search by title or request number)
- Priority filter dropdown (All, Standard, Express)
- Date range filter (submission date)
- Sort dropdown (Date: Newest, Date: Oldest, Priority)
- "Clear Filters" button
- **Request Cards Grid:**
- Display requests as cards (3 per row on desktop)
- Each card shows:
- **Request Number** (REQ-2025-00001) - top-left
- **Title** (bold, large) - truncate if too long
- **Priority Badge** - Express (red) / Standard (blue)
- **Status Badge** - Color-coded:
- Draft: Gray
- Pending: Yellow
- In Progress: Blue
- Approved: Green
- Rejected: Red
- Closed: Dark Gray
- **Current Approval Level** - "Level 2 of 5"
- **Current Approver** - Name and designation
- **Submission Date** - "Submitted on Nov 10, 2025"
- **Estimated Completion** - "Expected by Nov 15"
- **TAT Progress Bar** (for active requests)
- **Quick Actions:**
- View Details button
- Edit button (only for drafts)
- Delete button (only for drafts)
- **Pagination:**
- Show 20 requests per page
- Page numbers at bottom
- Previous/Next buttons
- "Go to page" input
**Click on Card:**
- Navigate to Request Detail page
- Pass request ID in URL
**Open Requests Page (FE-302):**
- **Similar to My Requests but shows:**
- Requests where user is approver (pending action)
- Requests where user is spectator
- Requests in PENDING or IN_PROGRESS status
- **Highlight requests needing user's action**
- **Same layout as My Requests**
**Closed Requests Page (FE-302):**
- **Shows requests with status:**
- APPROVED
- REJECTED
- CLOSED
- **Additional Info:**
- Closure date
- Final approver name
- Conclusion remark preview (first 100 chars)
- **Same layout as My Requests**
**5. Request Detail Page (FE-303 to FE-306)**
**Request Detail Overview Tab (FE-303):**
**Page Layout:**
**Top Section:**
- **Request Header:**
- Request Number (large, bold)
- Status Badge (prominent)
- Priority Badge
- Created Date | Submitted Date
- **TAT Progress Section:**
- Large TAT progress bar (full width)
- Status indicator (On Track / Approaching / Breached)
- Time information (elapsed, remaining, total)
- Expected completion date
- **Tab Navigation:**
- Overview (active by default)
- Workflow
- Documents
- Activity
- Each tab shows relevant counts
**Left Content Area (Main):**
**Request Information Card:**
- **Title:** Request title (editable if draft)
- **Description:**
- Full description with HTML formatting
- Expand/collapse if very long
- Tables, lists, links preserved
- **Initiator Information:**
- Profile picture
- Name and designation
- Department
- Email address
- Phone number
- "Contact" button
- **Basic Details:**
- Request Type: Custom Request
- Priority Level with explanation
- Template Type (if applicable)
- Submission Date
- Last Updated Date
**Right Sidebar:**
**Spectators Panel:**
- **Title:** "Spectators" with count
- **List of spectators:**
- Profile picture (small)
- Name
- Department
- Can scroll if many spectators
- **Add Spectator button** (if user has permission)
**Quick Actions Panel** (shown only to approvers of current level):
- **Action Buttons:**
- "Add Work Note" (primary)
- "Add Approver" (secondary)
- "Add Spectator" (secondary)
- "Approve Request" (success/green, large)
- "Reject Request" (danger/red, large)
- **Buttons enabled/disabled based on:**
- User role (approver, initiator, spectator)
- Current workflow status
- User's turn to approve
**Workflow Tab (FE-304):**
**Approval Timeline Visualization:**
**Vertical Timeline (Top to Bottom):**
- **For Each Approval Level:**
**Level Card:**
- **Level Number & Name** - "Level 1: Department Head Approval"
- **Approver Info:**
- Profile picture
- Name and designation
- Department
- Email address
- **TAT Allocation:**
- Allocated TAT: "48 hours"
- TAT days: "2 days" (if applicable)
- **Status Indicator:**
- **PENDING:** Gray circle with clock icon
- **IN_PROGRESS:** Blue circle with spinner icon
- **APPROVED:** Green circle with checkmark icon
- **REJECTED:** Red circle with X icon
- **SKIPPED:** Yellow circle with forward icon
- **Time Tracking:**
- Level start time: "Started on Nov 12, 10:00 AM"
- Level end time: "Completed on Nov 13, 2:00 PM"
- Actual time taken: "28 hours"
- TAT status for level:
- "Completed within TAT" (green badge)
- "Exceeded TAT by 5 hours" (red badge)
- **TAT Progress Bar** (for active level):
- Visual bar showing % used
- Color-coded (green/yellow/red)
- Remaining time displayed
- **Approver Comments:**
- Display comments if level is approved/rejected
- Formatted text with proper line breaks
- Timestamp: "Commented on Nov 13, 2:00 PM"
- **Action Date:**
- Display date/time when approved/rejected
- Relative time: "2 days ago"
**Visual Connectors:**
- Vertical line connecting levels
- Shows flow from Level 1 → 2 → 3...
- Current active level highlighted
**Level Status Summary (Top of Page):**
- **Progress Indicator:**
- "Level 2 of 5 in progress"
- Progress bar showing overall approval progress
- Example: "40% complete (2 of 5 levels)"
**Approval Flow Insights:**
- **Average time per level**
- **Fastest level completion**
- **Slowest level completion**
- **Total approval time taken**
**Documents Tab (FE-305):**
**Document List View:**
**Filter/View Options:**
- Filter by file type (All, PDF, Word, Excel, Images, etc.)
- Sort by: Name, Date, Size, Uploader
- Grid view / List view toggle
**Document Cards/List Items:**
- **For Each Document:**
**Document Card:**
- **File Type Icon** (large, color-coded)
- PDF: Red icon
- Word: Blue icon
- Excel: Green icon
- PowerPoint: Orange icon
- Images: Purple icon
- **File Name** (bold)
- **File Size** (e.g., "2.5 MB")
- **File Type** (e.g., "PDF Document")
- **Upload Info:**
- Uploaded by: Name
- Upload date/time
- Relative time: "3 days ago"
- **Action Buttons:**
- **Preview button** (eye icon)
- Enabled for PDF and images only
- Opens preview modal
- **Download button** (download icon)
- Downloads file to user's device
- **Delete button** (trash icon)
- Only shown to initiator or admin
- Confirmation before delete
- **Version Info** (if applicable):
- Version number: "v2"
- "View history" link
**Preview Modal (for PDF/Images):**
- **PDF Preview:**
- Embedded PDF viewer
- Page navigation (Previous/Next)
- Zoom in/out buttons
- Full-screen option
- Download button
- Close button
- **Image Preview:**
- Lightbox viewer
- Full-size image display
- Zoom controls
- Previous/Next for multiple images
- Download button
- Close button
**Google Docs/Sheets Section:**
- **Separate section below uploaded files**
- **Title:** "Linked Documents"
- **For Each Link:**
- Google Docs/Sheets icon
- Document title
- Link URL
- "Open in new tab" button
- Added by: User name
- Added on: Date/time
**Empty State:**
- Shows when no documents uploaded
- Icon + message: "No documents uploaded yet"
- "Upload Document" button
**Activity Tab (FE-306):**
**Activity Timeline View:**
**Timeline Display (Reverse Chronological):**
- **Latest activities at top**
- **Scroll to see older activities**
**For Each Activity:**
**Activity Item:**
- **Event Icon (left side):**
- Color-coded by activity type
- Icons:
- 📝 Request created (green)
- ✅ Approved (green checkmark)
- ❌ Rejected (red X)
- 📎 Document uploaded (blue paperclip)
- 🗑️ Document deleted (gray trash)
- 💬 Work note added (blue chat bubble)
- 👤 Approver added (green person+)
- 👥 Spectator added (blue person+)
- ⚠️ TAT warning (yellow warning)
- 🚨 TAT breached (red alert)
- 📊 Status changed (blue)
- 🔒 Request closed (gray lock)
- **Activity Description:**
- Primary text (bold): Main action
- Example: "Request submitted for approval"
- Example: "Approved by John Doe at Level 2"
- Example: "Document uploaded: filename.pdf"
- Secondary text: Additional details
- Example: "Status changed from PENDING to IN_PROGRESS"
- **User Information:**
- Profile picture (small, if user action)
- User name and designation
- "System" for automated activities
- **Timestamp:**
- Relative time: "2 hours ago", "3 days ago"
- Hover to see exact date/time
- **Metadata (if applicable):**
- For status changes: Show old → new status
- For documents: Show file name and size
- For approvals: Show comments preview
- Expandable section for full details
**Activity Type Grouping:**
- Group activities by date
- Date headers: "Today", "Yesterday", "Nov 12, 2025"
**Activity Filter (Optional):**
- Filter by activity type
- Dropdown: All, Approvals, Documents, Work Notes, Status Changes
**Real-Time Updates:**
- Auto-refresh when new activity occurs
- Smooth animation for new activities
- Highlight new activities with background color
**6. Work Notes / Chat Component (FE-308)**
**✅ ALREADY COMPLETE!** (As mentioned by user)
The work notes feature is already functional with:
- Document selection capability
- Emoji support
- @mentions
- File attachments
- Real-time chat interface
**What's Needed:**
- Connect to backend APIs (BE-402)
- Ensure notifications trigger on @mentions
**7. Add Approver/Spectator Modals (FE-309)**
**Add Approver Modal:**
- **Trigger:** Click "Add Approver" button
- **Modal Content:**
- Title: "Add Approver to Workflow"
- Explanation: "Add an additional approver at the current level"
- **User Search Input:**
- @mention autocomplete
- Search by name or email
- Dropdown showing matching users
- **Selected User Display:**
- Show user card with name, email, department
- Confirm selection
- **Action Buttons:**
- "Add" button (primary)
- "Cancel" button
- **After Adding:**
- Close modal
- Show success notification
- Refresh request detail
- User appears in workflow tab
**Add Spectator Modal:**
- **Trigger:** Click "Add Spectator" button
- **Modal Content:**
- Title: "Add Spectator to Workflow"
- Explanation: "Spectators can view and comment but cannot approve"
- **User Search Input:**
- Same as Add Approver
- **Multiple Selection:**
- Can add multiple spectators at once
- Show selected users as chips
- **Action Buttons:**
- "Add" button (primary)
- "Cancel" button
- **After Adding:**
- Close modal
- Show success notification
- User(s) appear in spectators panel
- Notifications sent to added users
#### What You Can Do After Sprint 3:
- ✅ Approve workflow requests
- ✅ Reject workflow requests with reasons
- ✅ Track TAT for each approval level
- ✅ Receive automated TAT warnings and breach alerts
- ✅ View comprehensive approval timeline
- ✅ See real-time notifications
- ✅ Receive @mention notifications
- ✅ View all request details in tabs (overview, workflow, documents, activity)
- ✅ Add additional approvers dynamically
- ✅ Add spectators during workflow
- ✅ Monitor TAT with color-coded progress bars
- ✅ View complete activity history
- ✅ Full request management dashboard
#### Technical Complexity:
- **Backend:** Complex approval state machine, TAT calculations, cron jobs
- **Frontend:** Real-time updates, polling for notifications, complex UI states
- **Integration:** Multi-user scenarios, concurrent approvals, race conditions
---
### 📁 Sprint 4: Documents & Work Notes (Week 7)
**Status:** ⏳ Upcoming | **Focus:** Document management and collaboration
#### What This Sprint Delivers:
Complete document upload/download system, work notes API integration, and activity logging.
#### Frontend Advantage:
-**Work Notes UI:** Already complete with all functionality!
-**Document Upload UI:** Already complete from Figma!
- ⏱️ **Only need:** Backend API integration (2 days instead of 1 week!)
#### Detailed Functionality Breakdown:
**1. Document Management System (BE-401)**
**Backend Document Storage:**
**File Upload Handling:**
- Use Multer middleware for multipart/form-data
- Accept multiple file uploads simultaneously
- Maximum 10MB per file
- Supported types: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, JPG, PNG, GIF
**Cloud Storage Integration:**
- **For Development:** Local file system storage
- **For Production:** GCP Cloud Storage
- Upload files to GCP bucket
- Generate signed URLs for secure access
- Set expiration on URLs (24 hours)
- Store file metadata in database
**Document APIs:**
- **POST /api/v1/workflows/:id/documents**
- Upload document
- Validate file type and size
- Generate unique filename
- Upload to storage
- Create document record in database
- Return document metadata
- **GET /api/v1/workflows/:id/documents**
- Get all documents for workflow
- Return metadata (name, size, type, uploader, date)
- Include download/preview URLs
- **GET /api/v1/documents/:documentId**
- Get specific document details
- Return metadata
- **GET /api/v1/documents/:documentId/download**
- Generate download URL
- Return signed URL for direct download
- **GET /api/v1/documents/:documentId/preview**
- Generate preview URL (for PDF/images)
- Return signed URL for preview
- **DELETE /api/v1/documents/:documentId**
- Soft delete document
- Mark as deleted in database
- Keep file in storage (for audit)
- Only initiator or admin can delete
**Frontend Integration:**
- Connect upload component to POST API
- Show upload progress (0-100%)
- Handle upload errors (file too large, invalid type)
- Display uploaded files from GET API
- Implement preview for PDF/images
- Implement download for all files
**2. Work Notes & Chat System (BE-402)**
**Backend Work Notes APIs:**
**Work Note Structure:**
```json
{
"note_id": "uuid",
"request_id": "uuid",
"user_id": "uuid",
"message": "This is a work note with @mentions",
"mentioned_users": ["user_id1", "user_id2"],
"has_attachment": true,
"is_priority": false,
"reactions": {
"👍": ["user_id1", "user_id3"],
"❤️": ["user_id2"]
},
"created_at": "2025-11-12T10:00:00Z",
"updated_at": "2025-11-12T10:05:00Z"
}
```
**Work Note APIs:**
- **GET /api/v1/workflows/:id/work-notes**
- Get all work notes for workflow
- Return in chronological order
- Include user details (name, picture)
- Include attachments
- Include reactions
- **POST /api/v1/workflows/:id/work-notes**
- Create new work note
- Parse @mentions from message
- Extract mentioned user IDs
- Store message and mentions
- Create notifications for mentioned users
- Return created work note
- **PUT /api/v1/work-notes/:noteId**
- Update work note (only by creator)
- Allow editing within 10 minutes of creation
- Update message content
- **DELETE /api/v1/work-notes/:noteId**
- Delete work note (only by creator)
- Soft delete
- **POST /api/v1/work-notes/:noteId/reactions**
- Add emoji reaction to note
- Support multiple emojis per note
- Store user who reacted
- Return updated reactions
- **POST /api/v1/work-notes/:noteId/attachments**
- Upload attachment with work note
- Handle file upload
- Link to work note
- Return attachment metadata
**@Mention Detection:**
- Parse message text for @mentions
- Match pattern: `@username` or `@"User Name"`
- Look up users in database
- Extract user IDs
- Store in mentioned_users array
**Mention Notifications:**
- When work note created with @mentions:
- Create notification for each mentioned user
- Notification type: WORK_NOTE_MENTION
- Include message preview
- Link to work notes section
**Frontend Integration (Already Complete!):**
- Connect chat component to GET API for loading messages
- Connect to POST API for sending messages
- Connect to reactions API for emoji reactions
- Connect to attachments API for file uploads
- Implement @mention autocomplete with user search
- Auto-refresh messages every 10 seconds
- Show typing indicators (optional)
**3. Activity Log System (BE-403)**
**Backend Activity Tracking:**
**Automated Activity Logging:**
- Log activities automatically through database triggers
- Log activities from service layer
- Capture all important events
**Activity Types:**
- REQUEST_CREATED - Workflow created as draft
- REQUEST_SUBMITTED - Workflow submitted for approval
- APPROVAL_ACTION - Request approved at a level
- REJECTION_ACTION - Request rejected
- APPROVER_ADDED - New approver added
- SPECTATOR_ADDED - New spectator added
- DOCUMENT_UPLOADED - Document uploaded
- DOCUMENT_DELETED - Document deleted
- WORK_NOTE_ADDED - Work note/comment added
- TAT_WARNING - TAT approaching deadline
- TAT_BREACH - TAT exceeded
- STATUS_CHANGED - Workflow status changed
- REQUEST_CLOSED - Workflow closed
**Activity APIs:**
- **GET /api/v1/workflows/:id/activities**
- Get activity timeline
- Return in reverse chronological order
- Include user info for user actions
- Include metadata (old/new values for changes)
- **GET /api/v1/workflows/:id/activities/:type**
- Filter activities by type
- Example: Get only approval actions
**Activity Display:**
- Generate human-readable descriptions
- Examples:
- "Request created by John Doe"
- "Approved by Jane Smith at Level 2"
- "Document uploaded: proposal.pdf"
- "TAT warning: Request approaching deadline"
- "Status changed from PENDING to IN_PROGRESS"
#### What You Can Do After Sprint 4:
- ✅ Upload documents (multiple files at once)
- ✅ Preview PDF and image files
- ✅ Download any file
- ✅ Delete documents (with permission)
- ✅ Add work notes with @mentions
- ✅ React to messages with emojis
- ✅ Attach files to work notes
- ✅ Receive notifications for @mentions
- ✅ View complete activity timeline
- ✅ Filter activities by type
- ✅ Real-time collaboration through chat
---
### 📊 Sprint 5: Dashboard & Reporting (Week 8)
**Status:** ⏳ Upcoming | **Focus:** Analytics, AI conclusions, workflow closure
#### What This Sprint Delivers:
Dashboard with statistics and charts, AI-powered conclusion generation, workflow closure functionality, search/filter components, and final polish.
#### Detailed Functionality Breakdown:
**1. Dashboard Statistics (BE-501, FE-402)**
**Backend Dashboard APIs:**
**GET /api/v1/dashboard/stats:**
Returns comprehensive statistics for current user:
```json
{
"total_requests": 45,
"pending_approvals": 8,
"approved_requests": 32,
"rejected_requests": 5,
"draft_requests": 3,
"tat_breached": 2,
"avg_approval_time_hours": 36.5,
"requests_by_priority": {
"STANDARD": 40,
"EXPRESS": 5
},
"requests_by_status": {
"DRAFT": 3,
"PENDING": 5,
"IN_PROGRESS": 3,
"APPROVED": 32,
"REJECTED": 5,
"CLOSED": 37
},
"approval_trend_last_30_days": [
{"date": "2025-10-15", "count": 2},
{"date": "2025-10-16", "count": 3},
...
]
}
```
**GET /api/v1/dashboard/recent:**
Returns recent activities (last 10):
```json
{
"recent_activities": [
{
"activity_type": "APPROVAL_ACTION",
"request_id": "uuid",
"request_number": "REQ-2025-00045",
"description": "Approved by John Doe",
"timestamp": "2025-11-12T10:00:00Z"
},
...
]
}
```
**GET /api/v1/dashboard/pending-actions:**
Returns requests needing user's action:
```json
{
"pending_actions": [
{
"request_id": "uuid",
"request_number": "REQ-2025-00046",
"title": "Approval for new office",
"priority": "EXPRESS",
"level": 2,
"tat_status": "APPROACHING",
"days_pending": 2
},
...
]
}
```
**Frontend Dashboard Page:**
**Layout:**
**Top Row - Key Metrics Cards (4 columns):**
1. **Total Requests Card:**
- Large number: "45"
- Label: "Total Requests"
- Icon: 📊
- Subtitle: "All time"
2. **Pending Approvals Card:**
- Large number: "8"
- Label: "Pending Approvals"
- Icon: ⏳
- Subtitle: "Awaiting action"
- Click to filter
3. **Approved Requests Card:**
- Large number: "32"
- Label: "Approved"
- Icon: ✅
- Subtitle: "Successfully completed"
4. **TAT Breached Card:**
- Large number: "2"
- Label: "TAT Breached"
- Icon: 🚨
- Subtitle: "Needs attention"
- Red color if > 0
**Second Row - Charts (2 columns):**
1. **Requests by Status (Pie Chart):**
- Using Recharts library
- Segments for each status:
- Draft (gray)
- Pending (yellow)
- In Progress (blue)
- Approved (green)
- Rejected (red)
- Closed (dark gray)
- Show percentages
- Legend below chart
- Interactive (click segment to filter)
2. **Requests by Priority (Bar Chart):**
- Using Recharts library
- Two bars: Standard vs Express
- Different colors
- Show counts
- Y-axis: Count
- X-axis: Priority type
- Interactive
**Third Row - Trend & Actions (2 columns):**
1. **Approval Trend (Line Chart):**
- Using Recharts library
- Last 30 days trend
- X-axis: Dates
- Y-axis: Number of approvals
- Line color: Blue
- Show data points
- Hover to see exact values
- Date range selector (7 days, 30 days, 90 days)
2. **Pending Actions Widget:**
- List of requests needing user's action
- Each item shows:
- Request number
- Title (truncated)
- Priority badge
- TAT status indicator
- Days pending
- "Review" button
- Scroll if more than 5 items
- Click to go to request detail
**Fourth Row - Recent Activities:**
- **Recent Activities Widget:**
- Table or list of last 10 activities
- Columns:
- Activity type icon
- Description
- Request number (clickable)
- Timestamp (relative)
- "View All" button to go to activity page
- Auto-refresh every 30 seconds
**Dashboard Features:**
- **Date Range Filter (Top Right):**
- Dropdown: Last 7 days, 30 days, 90 days, All time
- Affects all stats and charts
- **Refresh Button:**
- Manual refresh of data
- Shows loading state
- **Export Button:**
- Export dashboard data as PDF/Excel
- Include all charts and stats
**2. AI Conclusion Generation (BE-502, FE-403)**
**Backend AI Integration:**
**AI Service Setup:**
- Integrate with OpenAI API (GPT-4) or Google Gemini
- Configure API key and model settings
- Set max tokens for response (500 tokens)
**Conclusion Generation Logic:**
**When to Generate:**
- After final approver approves request
- Before workflow returns to initiator for closure
**Input Data for AI:**
- Workflow title and description
- All approval level comments
- Work notes (relevant messages)
- Decision summary (approved/rejected at each level)
- TAT information
- Documents summary
**Prompt Template:**
```
Generate a concise conclusion for this workflow request:
Title: [Request Title]
Description: [Request Description]
Approval Journey:
- Level 1: Approved by [Name]. Comment: [Comment]
- Level 2: Approved by [Name]. Comment: [Comment]
...
Key Discussion Points from Work Notes:
- [Note 1]
- [Note 2]
...
Generate a professional conclusion summary (max 300 words) covering:
1. What was requested
2. Key discussion points
3. Final decision
4. Next steps (if any)
```
**AI Response Processing:**
- Call AI API with prompt
- Get generated conclusion
- Clean up and format response
- Store as `ai_generated_remark` in database
- Set `is_edited` to false initially
**Conclusion APIs:**
**POST /api/v1/workflows/:id/conclusion/generate:**
- Generate AI conclusion
- Compile input data
- Call AI API
- Store result
- Return generated conclusion
**PUT /api/v1/workflows/:id/conclusion:**
- Update conclusion (initiator only)
- Allow editing AI-generated text
- Set `is_edited` to true
- Store as `final_remark`
**GET /api/v1/workflows/:id/conclusion:**
- Get conclusion for workflow
- Return AI-generated and final (if edited)
**Frontend Conclusion UI:**
**Conclusion Section (After Final Approval):**
**For Initiator (Creator):**
- **Display AI-Generated Conclusion:**
- Show in read-only card initially
- Formatted text with proper paragraphs
- Label: "AI-Generated Conclusion"
- **Edit Button:**
- Opens edit modal
- Modal shows:
- Title: "Edit Conclusion"
- Textarea with AI-generated text pre-filled
- Character count (max 1000)
- Rich text editor (bold, italic, lists)
- "Save" button
- "Cancel" button
- After saving:
- Update display
- Show "Edited by [User]" badge
- Close modal
- **Finalize Button:**
- Visible only to initiator
- Confirms final conclusion
- Enables workflow closure
**For Other Users (Approvers, Spectators):**
- **Read-Only Display:**
- Show final conclusion
- Cannot edit
- Show "Finalized by [Initiator]" info
**Conclusion Display Locations:**
- Request detail page (after approval)
- My Requests (approved requests)
- Closed Requests
- Email notifications (summary)
**3. Workflow Closure (BE-503, FE-404)**
**Backend Closure Logic:**
**PATCH /api/v1/workflows/:id/close:**
**Pre-Closure Validations:**
- Verify workflow is fully approved (all levels approved)
- Verify conclusion remark exists
- Verify user is initiator (creator)
- Verify workflow not already closed
**Closure Actions:**
1. Update workflow:
- Set status to CLOSED
- Set closure_date to current timestamp
- Mark as final/immutable
2. Stop all TAT tracking:
- Mark TAT records as complete
- Calculate total time taken
3. Archive workflow data:
- Create snapshot of final state
- Preserve for audit
4. Send closure notifications:
- To all participants (approvers, spectators)
- Notification: "Workflow [REQ-ID] has been closed"
- Include conclusion summary
5. Create final activity log:
- Activity type: REQUEST_CLOSED
- Description: "Request closed by [Initiator Name]"
- Include closure date
**Frontend Closure UI:**
**Close Request Button (Request Detail Page):**
**Visibility:**
- Only shown to initiator (creator)
- Only after final approval
- Only if conclusion exists
- Not shown if already closed
**Button Placement:**
- Prominent button in top-right
- Label: "Close Request"
- Primary/success color
- Icon: Checkmark or lock
**Click Behavior:**
- Opens confirmation modal
**Close Request Modal:**
- **Title:** "Close Workflow Request"
- **Content:**
- Request summary:
- Request number
- Title
- Final status: APPROVED
- Total approval time
- Conclusion display:
- Show final conclusion
- Read-only
- Warning message:
- "Closing this request is final"
- "This action cannot be undone"
- "All participants will be notified"
- **Action Buttons:**
- "Confirm Close" button (primary/green)
- Shows loading spinner during API call
- "Cancel" button (secondary)
- Closes modal without action
**After Closure:**
- Close modal
- Show success notification: "Request closed successfully"
- Update page to show closed status
- Change button to "Closed" (disabled)
- Display closure date
- Navigate to Closed Requests OR stay on page
- All editing disabled
**4. Search & Filter Components (FE-501)**
**Global Search Bar:**
- **Location:** Top of request list pages
- **Features:**
- Text input with search icon
- Placeholder: "Search by title or request number..."
- Debounce search (300ms delay)
- Show search results as you type
- Clear button (X icon)
- Search on Enter key
**Filter Panel:**
- **Location:** Sidebar or top bar
- **Filters Available:**
**1. Status Filter:**
- Checkboxes for each status:
- ☐ Draft
- ☐ Pending
- ☐ In Progress
- ☐ Approved
- ☐ Rejected
- ☐ Closed
- Select multiple
- Show count for each status
**2. Priority Filter:**
- Radio buttons or checkboxes:
- ☐ Standard
- ☐ Express
- Select one or both
**3. Date Range Filter:**
- Date picker component
- "From" date input
- "To" date input
- Preset options:
- Today
- Last 7 days
- Last 30 days
- Last 90 days
- Custom range
**4. Department Filter:**
- Dropdown select
- List of all departments
- Filter requests by initiator's department
**5. Initiator Filter:**
- User search input
- @mention style autocomplete
- Filter by who created the request
**Filter Actions:**
- **Apply Filters button:**
- Apply selected filters
- Update request list
- Show loading state
- **Clear Filters button:**
- Reset all filters
- Reload full list
**Filter State Management:**
- **URL Query Parameters:**
- Save filters in URL
- Example: `?status=PENDING&priority=EXPRESS&from=2025-11-01`
- Enable sharing filtered views
- Browser back/forward works
- **Active Filter Display:**
- Show active filters as chips/tags
- Example: "Status: Pending" (X to remove)
- "2 filters active" counter
- Quick remove individual filters
**5. Responsive Design & Polish (FE-502)**
**Mobile Responsiveness:**
**Breakpoints:**
- Mobile: 320px - 767px
- Tablet: 768px - 1023px
- Desktop: 1024px+
**Mobile Optimizations:**
- **Sidebar:** Collapsible hamburger menu
- **Request Cards:** Full width, stacked vertically
- **Tables:** Convert to cards
- **Modals:** Full-screen on mobile
- **Forms:** Single column layout
- **Buttons:** Larger touch targets (44px minimum)
- **Navigation:** Bottom tab bar (optional)
**Tablet Optimizations:**
- **Sidebar:** Collapsible or always visible
- **Request Cards:** 2 per row
- **Tables:** Scrollable horizontally
- **Forms:** Two column layout
**Desktop:**
- **Sidebar:** Always visible
- **Request Cards:** 3 per row
- **Tables:** Full table view
- **Forms:** Optimized multi-column
**6. Loading States & Error Handling (FE-503)**
**Loading Skeletons:**
- **Request List Skeleton:**
- Show placeholder cards
- Animated shimmer effect
- Same layout as actual cards
- **Request Detail Skeleton:**
- Placeholder for all sections
- Shimmer animation
- **Dashboard Skeleton:**
- Placeholder cards for metrics
- Placeholder charts
**Error States:**
- **Network Error:**
- Show error message
- "Retry" button
- "Go Back" button
- **Empty State:**
- Relevant icon
- Message: "No requests found"
- "Create New Request" button
- **Error Boundary:**
- Catch React errors
- Show friendly error page
- "Report Issue" button
**7. Accessibility (FE-504)**
**ARIA Labels:**
- Add labels to all interactive elements
- Buttons have clear labels
- Form inputs have associated labels
**Keyboard Navigation:**
- All actions accessible via keyboard
- Tab order logical
- Enter/Space to activate buttons
- Esc to close modals
**Screen Reader Support:**
- Semantic HTML tags
- Alt text for images
- Proper heading hierarchy (H1, H2, H3)
**Color Contrast:**
- Meet WCAG AA standards
- Text contrast ratio >= 4.5:1
- Large text >= 3:1
#### What You Can Do After Sprint 5:
- ✅ View comprehensive dashboard with statistics
- ✅ See visual charts and graphs
- ✅ Generate AI-powered conclusions
- ✅ Edit AI conclusions before finalizing
- ✅ Close approved workflows
- ✅ Search requests by title/number
- ✅ Filter requests by multiple criteria
- ✅ Use on any device (responsive)
- ✅ Better loading and error states
- ✅ Accessible for all users
---
### 🧪 Sprint 6: Testing & Deployment (Weeks 9-10)
**Status:** ⏳ Upcoming | **Focus:** Quality assurance and production deployment
#### Week 9: Testing & Quality Assurance
**1. Backend Unit Testing (BE-601):**
**Service Tests:**
- Auth service: Login, register, token refresh
- Workflow service: CRUD operations, TAT calculations
- Approval service: Approve, reject, level transitions
- TAT service: Calculate elapsed time, status determination
- Notification service: Create, send, mark read
- Document service: Upload, download, delete
**Controller Tests:**
- API endpoint tests
- Request validation
- Response format
- Error handling
**Utility Tests:**
- Date calculations
- TAT business logic
- Email templates
- File validators
**Test Coverage:**
- Target: >80% code coverage
- Use Jest with ts-jest
- Mock external dependencies (database, storage, AI API)
**2. Backend Integration Testing (BE-602):**
**Complete Workflow Tests:**
- User registration → login → token
- Create workflow → submit → approve → close
- Multi-level approval flow (all 10 levels)
- Rejection flow
- TAT tracking and alerts
- Document upload → preview → download
**API Testing:**
- Use Supertest for HTTP testing
- Test all API endpoints
- Test authentication middleware
- Test authorization rules
- Test error responses
- Test pagination and filtering
**3. Frontend Unit Testing (FE-601):**
**Component Tests:**
- Login component
- Registration component
- Workflow wizard steps
- Request cards
- Approval modals
- Work notes chat
- Notification bell
**Redux Tests:**
- Slice reducers
- Async thunks
- Selectors
**Utility Tests:**
- Date formatting
- Validation functions
- API service helpers
**Test Coverage:**
- Target: >70% code coverage
- Use Vitest + React Testing Library
- Mock API calls
**4. Frontend Integration Testing (FE-602):**
**User Flow Tests:**
- Complete registration → login flow
- Create workflow → submit → view flow
- Approve/reject workflow flow
- Add work note flow
- Upload document flow
**Navigation Tests:**
- Route transitions
- Protected routes
- Redirect logic
**5. API Documentation (BE-603):**
**Swagger/OpenAPI Setup:**
- Document all endpoints
- Request schemas with examples
- Response schemas
- Authentication requirements
- Error responses
- Example requests/responses
**Postman Collection:**
- Create collection for all APIs
- Organize by feature
- Add example requests
- Add pre-request scripts (auth token)
- Share with team
#### Week 10: Optimization & Deployment
**6. Performance Optimization (BE-604, FE-603):**
**Backend:**
- Database query optimization
- Add indexes for frequent queries
- Optimize N+1 queries with eager loading
- Add response caching (Redis optional)
- Database connection pooling
- Compress API responses (gzip)
- Rate limiting per user
**Frontend:**
- Code splitting with React.lazy
- Lazy load images
- Bundle size optimization
- Tree shaking
- Memoize components (React.memo)
- Optimize Redux selectors
- Add service worker (optional)
**7. Deployment Setup (BE-605, FE-604):**
**Backend Deployment:**
- Create production Dockerfile
- Setup docker-compose for DB + Backend
- Configure environment variables
- Setup PM2 for process management
- Database migration scripts
- Setup CI/CD pipeline (GitHub Actions)
- Deploy to GCP Cloud Run or VM
- Configure logging and monitoring
**Frontend Deployment:**
- Create production Dockerfile with Nginx
- Production build configuration
- Environment variables for prod
- Setup CI/CD pipeline
- Deploy to GCP Cloud Run or Storage
- Configure CDN
- Setup SSL/HTTPS
**8. Final Testing & QA:**
- End-to-end testing
- User acceptance testing (UAT)
- Load testing
- Security testing
- Browser compatibility testing
- Mobile device testing
**9. Go-Live Checklist:**
- Database backup strategy
- Monitoring setup (logs, errors, performance)
- Error tracking (Sentry optional)
- Documentation complete
- User training materials
- Support plan
#### What You Achieve After Sprint 6:
- ✅ Fully tested application (>80% coverage)
- ✅ Complete API documentation
- ✅ Optimized performance
- ✅ Production deployment
- ✅ CI/CD pipelines configured
- ✅ Monitoring and logging in place
- ✅ Ready for production users!
---
## 🎯 Summary: Why Each Sprint Matters
**Sprint 0:** Foundation - Without proper setup, everything else fails
**Sprint 1:** Authentication - Users need to login before anything else
**Sprint 2:** Workflow Creation - Core feature, creates the workflows
**Sprint 3:** Approvals - Makes workflows actually work, users can act
**Sprint 4:** Collaboration - Documents and work notes enable teamwork
**Sprint 5:** Analytics - Dashboard gives insights, AI adds intelligence
**Sprint 6:** Quality - Testing ensures reliability, deployment makes it live
**Each sprint builds on the previous one. You cannot skip or reorder them!**
---
## Backend Tasks
### **SPRINT 0: Backend Setup & Infrastructure**
#### **TASK-BE-001: Repository & Environment Setup**
**Priority:** Critical | **Estimated Time:** 0.5 days | **Status:** 🔄 In Progress
- [ ] Create `re-workflow-backend` repository
- [ ] Initialize Node.js 22 project with TypeScript 5.7
- [ ] Setup folder structure as per architecture document
- [ ] Configure `tsconfig.json` with strict mode
- [ ] Create `.env.example` and environment configuration
- [ ] Setup `.gitignore` for Node.js projects
- [ ] Initialize `package.json` with all dependencies
**Dependencies:** None
**Deliverable:** Repository with basic structure
---
#### **TASK-BE-002: Database Setup & Schema**
**Priority:** Critical | **Estimated Time:** 1 day | **Status:** ⏳ Pending
- [ ] Install PostgreSQL 16 locally/Docker
- [ ] Create database `re_workflow_db`
- [ ] Implement complete database schema from architecture doc
- [ ] Create all tables with indexes and constraints
- [ ] Setup database triggers (request_number generation, timestamps)
- [ ] Create database views (vw_active_requests, vw_user_notifications)
- [ ] Insert initial system settings
- [ ] Document database connection configuration
**Dependencies:** None
**Deliverable:** Complete PostgreSQL database with schema
---
#### **TASK-BE-003: Core Backend Configuration**
**Priority:** Critical | **Estimated Time:** 0.5 days | **Status:** ⏳ Pending
- [ ] Setup Express.js application (`src/app.ts`)
- [ ] Configure middleware (helmet, cors, body-parser)
- [ ] Setup Winston logger with file rotation
- [ ] Create error handling middleware
- [ ] Configure Morgan for HTTP logging
- [ ] Setup health check endpoint (`/health`)
- [ ] Create `src/server.ts` with graceful shutdown
- [ ] Test server startup and connection
**Dependencies:** TASK-BE-001
**Deliverable:** Running Express server with logging
---
#### **TASK-BE-004: Sequelize ORM Setup**
**Priority:** Critical | **Estimated Time:** 1 day | **Status:** ⏳ Pending
- [ ] Configure Sequelize connection (`src/config/database.ts`)
- [ ] Create all Sequelize models matching database schema
- User model
- WorkflowRequest model
- ApprovalLevel model
- Participant model
- Document model
- WorkNote model
- Activity model
- Notification model
- TATTracking model
- ConclusionRemark model
- [ ] Define model associations (relationships)
- [ ] Test database connectivity
- [ ] Create model index file (`src/models/index.ts`)
**Dependencies:** TASK-BE-002
**Deliverable:** Complete ORM layer with type definitions
---
### **SPRINT 1: SSO Authentication & User Management**
#### **TASK-BE-101: SSO Integration (Awaiting Confirmation)**
**Priority:** Critical | **Estimated Time:** 1.5 days | **Status:** ⏳ Awaiting SSO Details
- [ ] Configure SSO Bridge integration (`src/config/sso.ts`)
- [ ] Implement SSO callback handler (`src/services/auth.service.ts`)
- [ ] User auto-sync from Active Directory
- [ ] JWT token generation for app sessions
- [ ] Authentication middleware (`src/middlewares/auth.middleware.ts`)
- [ ] Auth APIs:
- GET `/api/v1/auth/login` - Redirect to SSO
- GET `/api/v1/auth/callback` - Handle SSO callback
- POST `/api/v1/auth/logout` - Logout
- GET `/api/v1/auth/me` - Get current user
**Dependencies:** TASK-BE-004
**Deliverable:** SSO integration (no login/signup screens needed)
---
#### **TASK-BE-102: User Profile Management**
**Priority:** Medium | **Estimated Time:** 0.5 days
- [ ] Create user controller (`src/controllers/user.controller.ts`)
- GET `/api/v1/users` - Get all active users (for @tagging)
- GET `/api/v1/users/search?q=` - Search users by name/email
- GET `/api/v1/users/:id` - Get user details
- PUT `/api/v1/users/:id` - Update user profile (phone, picture only)
- [ ] Create user service (`src/services/user.service.ts`)
- [ ] Create user routes (`src/routes/user.routes.ts`)
**Dependencies:** TASK-BE-101
**Deliverable:** User search and profile APIs
**Note:** User data synced from Active Directory (read-only except phone/picture)
---
### **SPRINT 2: Core Workflow Creation**
#### **TASK-BE-201: Workflow Request Creation APIs**
**Priority:** Critical | **Estimated Time:** 10 hours
- [ ] Create workflow service (`src/services/workflow.service.ts`)
- Create draft workflow
- Update draft workflow
- Submit workflow for approval
- Auto-generate request number (REQ-YYYY-00001)
- Calculate total TAT from all levels
- Set TAT start/end dates based on priority
- [ ] Create workflow controller (`src/controllers/workflow.controller.ts`)
- POST `/api/v1/workflows` - Create new workflow
- PUT `/api/v1/workflows/:id` - Update draft
- GET `/api/v1/workflows/:id` - Get workflow details
- DELETE `/api/v1/workflows/:id` - Delete draft
- PATCH `/api/v1/workflows/:id/submit` - Submit for approval
- [ ] Implement TAT calculation utility
- Calculate working days vs calendar days
- Handle priority (STANDARD vs EXPRESS)
- [ ] Create workflow validation schemas (Zod)
- [ ] Test workflow creation flow end-to-end
**Dependencies:** TASK-BE-103
**Deliverable:** Workflow creation APIs with TAT calculation
---
#### **TASK-BE-202: Approval Hierarchy Management**
**Priority:** Critical | **Estimated Time:** 8 hours
- [ ] Create approval service (`src/services/approval.service.ts`)
- Create approval levels (up to 10 levels)
- Add approver to specific level
- Update approval level TAT
- Get approval hierarchy for request
- Get current approval level
- Move to next approval level
- [ ] Create approval controller (`src/controllers/approval.controller.ts`)
- GET `/api/v1/workflows/:id/approvals` - Get hierarchy
- POST `/api/v1/workflows/:id/approvals` - Add approval level
- GET `/api/v1/workflows/:id/approvals/current` - Current level
- [ ] Validate max 10 approval levels
- [ ] Ensure unique level numbers per request
**Dependencies:** TASK-BE-201
**Deliverable:** Approval hierarchy management
---
#### **TASK-BE-203: Participant Management**
**Priority:** High | **Estimated Time:** 4 hours
- [ ] Create participant service (`src/services/participant.service.ts`)
- Add spectator to request
- Remove spectator
- Get all participants
- Check participant permissions
- [ ] Create participant controller (`src/controllers/participant.controller.ts`)
- GET `/api/v1/workflows/:id/participants` - Get all
- POST `/api/v1/workflows/:id/participants` - Add spectator
- DELETE `/api/v1/workflows/:id/participants/:participantId` - Remove
- GET `/api/v1/workflows/:id/spectators` - Get spectators only
- [ ] Log participant additions in activity
**Dependencies:** TASK-BE-201
**Deliverable:** Participant management APIs
---
#### **TASK-BE-204: Workflow List & Filtering APIs**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Implement workflow listing with filters
- GET `/api/v1/workflows` - Get all workflows (with filters)
- GET `/api/v1/workflows/my-requests` - User's requests
- GET `/api/v1/workflows/open` - Open/pending requests
- GET `/api/v1/workflows/closed` - Closed requests
- GET `/api/v1/workflows/assigned-to-me` - Assigned requests
- [ ] Implement pagination (page, limit, sortBy, sortOrder)
- [ ] Implement filters (status, priority, date range)
- [ ] Implement search (by title, description, request_number)
- [ ] Add full-text search using PostgreSQL
**Dependencies:** TASK-BE-201
**Deliverable:** Workflow listing with search/filter
---
### **SPRINT 3: Approval Actions & Notifications**
#### **TASK-BE-301: Approval/Rejection Actions**
**Priority:** Critical | **Estimated Time:** 10 hours
- [ ] Implement approval action workflow
- PATCH `/api/v1/workflows/:id/approvals/:levelId/approve`
- PATCH `/api/v1/workflows/:id/approvals/:levelId/reject`
- [ ] Approval logic:
- Validate approver is current level approver
- Validate mandatory comments field
- Update approval level status to APPROVED
- Move workflow to next level OR close if final approver
- Update workflow status (IN_PROGRESS, APPROVED)
- Stop TAT for current level
- Start TAT for next level
- Log activity
- [ ] Rejection logic:
- Validate approver authorization
- Mandatory rejection comments
- Mark workflow as REJECTED and CLOSED
- Stop TAT tracking
- Send notification to initiator
- Log activity
- [ ] Create activity logging service
**Dependencies:** TASK-BE-202
**Deliverable:** Working approval/rejection flow
---
#### **TASK-BE-302: TAT Tracking & Monitoring**
**Priority:** Critical | **Estimated Time:** 8 hours
- [ ] Create TAT service (`src/services/tat.service.ts`)
- Calculate elapsed time for current level
- Calculate remaining time
- Calculate percentage TAT used
- Determine TAT status (ON_TRACK, APPROACHING, BREACHED)
- Update TAT tracking table
- [ ] Implement TAT monitoring cron job (`src/jobs/tatMonitor.job.ts`)
- Run every 30 minutes
- Check all active requests
- Identify approaching deadlines (80% threshold)
- Identify breached TATs (100%+)
- Update tat_tracking table
- Trigger reminder notifications
- [ ] Create TAT APIs
- GET `/api/v1/workflows/:id/tat` - Get TAT status
- GET `/api/v1/tat/breached` - Get breached requests
- GET `/api/v1/tat/approaching` - Get approaching deadlines
**Dependencies:** TASK-BE-301
**Deliverable:** TAT tracking system with cron
---
#### **TASK-BE-303: Notification System**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Create notification service (`src/services/notification.service.ts`)
- Create notification
- Send notification to user(s)
- Mark notification as read
- Mark all as read
- Delete notification
- Get user notifications
- Get unread count
- [ ] Notification triggers:
- New workflow assignment
- Workflow approval/rejection
- TAT warning (80% threshold)
- TAT breach (100%+)
- Work note mention (@user)
- Document upload
- Spectator added
- [ ] Create notification controller
- GET `/api/v1/notifications` - Get user notifications
- GET `/api/v1/notifications/unread` - Unread only
- PATCH `/api/v1/notifications/:id/read` - Mark as read
- PATCH `/api/v1/notifications/mark-all-read` - Mark all
- DELETE `/api/v1/notifications/:id` - Delete
- [ ] Add notification priority levels
**Dependencies:** TASK-BE-301
**Deliverable:** Complete notification system
---
### **SPRINT 4: Documents & Work Notes**
#### **TASK-BE-401: Document Management System**
**Priority:** Critical | **Estimated Time:** 10 hours
- [ ] Setup file upload with Multer
- [ ] Configure GCP Cloud Storage (or local storage for dev)
- [ ] Create storage service (`src/services/storage.service.ts`)
- Upload file to cloud storage
- Generate signed URL for file access
- Delete file from storage
- Validate file type and size
- [ ] Create document service (`src/services/document.service.ts`)
- Upload document
- Get document metadata
- Get document download URL
- Delete document
- Get all documents for request
- [ ] Create document controller
- POST `/api/v1/workflows/:id/documents` - Upload
- GET `/api/v1/workflows/:id/documents` - Get all
- GET `/api/v1/documents/:documentId` - Get details
- GET `/api/v1/documents/:documentId/download` - Download URL
- DELETE `/api/v1/documents/:documentId` - Delete
- GET `/api/v1/documents/:documentId/preview` - Preview URL
- [ ] File validation (max 10MB, allowed types)
- [ ] Support Google Docs/Sheets links
**Dependencies:** TASK-BE-301
**Deliverable:** Document upload/download APIs
---
#### **TASK-BE-402: Work Notes & Chat System**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Create work note service (`src/services/workNote.service.ts`)
- Create work note
- Update work note
- Delete work note
- Add reaction to note
- Add attachment to note
- Get all notes for request
- Parse @mentions from message
- [ ] Create work note controller
- GET `/api/v1/workflows/:id/work-notes` - Get all notes
- POST `/api/v1/workflows/:id/work-notes` - Add note
- PUT `/api/v1/work-notes/:noteId` - Update note
- DELETE `/api/v1/work-notes/:noteId` - Delete note
- POST `/api/v1/work-notes/:noteId/reactions` - Add reaction
- POST `/api/v1/work-notes/:noteId/attachments` - Add attachment
- [ ] Implement @mention detection
- [ ] Send notifications to mentioned users
- [ ] Support file attachments in notes
- [ ] Log work note activities
**Dependencies:** TASK-BE-303
**Deliverable:** Work notes/chat APIs
---
#### **TASK-BE-403: Activity Log System**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Create activity service (`src/services/activity.service.ts`)
- Log activity automatically
- Get activity timeline
- Filter activities by type
- [ ] Activity tracking for:
- Request created
- Request submitted
- Approval/rejection
- Approver/spectator added
- Document uploaded/deleted
- Work note added
- TAT warning/breach
- Status changes
- [ ] Create activity APIs
- GET `/api/v1/workflows/:id/activities` - Get timeline
- GET `/api/v1/workflows/:id/activities/:type` - Filter by type
- [ ] Display user-friendly activity descriptions
**Dependencies:** TASK-BE-301
**Deliverable:** Activity logging system
---
### **SPRINT 5: Dashboard & Reporting**
#### **TASK-BE-501: Dashboard Statistics APIs**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create dashboard service (`src/services/dashboard.service.ts`)
- [ ] Implement dashboard statistics
- Total requests by user
- Pending approvals count
- Approved/rejected count
- TAT breach count
- Requests by priority
- Requests by status
- Average approval time
- [ ] Create dashboard APIs
- GET `/api/v1/dashboard/stats` - Get statistics
- GET `/api/v1/dashboard/recent` - Recent activities
- GET `/api/v1/dashboard/pending-actions` - Pending count
- [ ] Add date range filters
- [ ] Cache dashboard data for performance
**Dependencies:** TASK-BE-301
**Deliverable:** Dashboard APIs with statistics
---
#### **TASK-BE-502: AI Conclusion Generation**
**Priority:** Medium | **Estimated Time:** 6 hours
- [ ] Setup AI service integration (OpenAI/Gemini)
- [ ] Create AI service (`src/services/ai.service.ts`)
- Generate conclusion from workflow data
- Summarize work notes
- Extract key decision points
- Generate conclusion remark
- [ ] Create conclusion APIs
- POST `/api/v1/workflows/:id/conclusion/generate` - Generate
- PUT `/api/v1/workflows/:id/conclusion` - Update
- GET `/api/v1/workflows/:id/conclusion` - Get
- [ ] Allow initiator to edit AI-generated conclusion
- [ ] Store both AI-generated and final remarks
**Dependencies:** TASK-BE-402
**Deliverable:** AI-powered conclusion generation
---
#### **TASK-BE-503: Workflow Closure**
**Priority:** High | **Estimated Time:** 4 hours
- [ ] Implement workflow closure endpoint
- PATCH `/api/v1/workflows/:id/close` - Close workflow
- [ ] Closure logic:
- Only initiator can close after final approval
- Require conclusion remark (AI or manual)
- Update workflow status to CLOSED
- Set closure_date
- Send closure notifications to all participants
- Archive workflow data
- Log closure activity
- [ ] Validate closure permissions
**Dependencies:** TASK-BE-502
**Deliverable:** Workflow closure functionality
---
### **SPRINT 6: Testing & Optimization**
#### **TASK-BE-601: Unit Testing**
**Priority:** High | **Estimated Time:** 10 hours
- [ ] Setup Jest + ts-jest configuration
- [ ] Write unit tests for services:
- Auth service tests (login, register, token)
- Workflow service tests (CRUD, submit)
- Approval service tests (approve, reject)
- TAT service tests (calculation, tracking)
- Notification service tests
- Document service tests
- Work note service tests
- [ ] Achieve >80% code coverage
- [ ] Test edge cases and error scenarios
- [ ] Mock external dependencies
**Dependencies:** All Sprint 1-5 tasks
**Deliverable:** Comprehensive test suite
---
#### **TASK-BE-602: Integration Testing**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Setup Supertest for API testing
- [ ] Test complete workflows:
- User registration → login → create workflow
- Workflow creation → submission → approval
- Multi-level approval flow
- Rejection workflow
- TAT tracking and notifications
- Document upload and retrieval
- [ ] Test error handling and validation
- [ ] Test authorization and permissions
- [ ] Test pagination and filtering
**Dependencies:** TASK-BE-601
**Deliverable:** Integration test suite
---
#### **TASK-BE-603: API Documentation**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Setup Swagger/OpenAPI documentation
- [ ] Document all API endpoints with:
- Request/response schemas
- Query parameters
- Request body structure
- Response codes
- Authentication requirements
- Example requests/responses
- [ ] Host documentation at `/api-docs`
- [ ] Create Postman collection
**Dependencies:** All API tasks
**Deliverable:** Complete API documentation
---
#### **TASK-BE-604: Performance Optimization**
**Priority:** Medium | **Estimated Time:** 6 hours
- [ ] Add database query optimization
- [ ] Implement response caching (Redis optional)
- [ ] Add database connection pooling
- [ ] Optimize N+1 queries with eager loading
- [ ] Add pagination to all list endpoints
- [ ] Implement rate limiting per user
- [ ] Add request/response compression
- [ ] Performance testing and profiling
**Dependencies:** TASK-BE-602
**Deliverable:** Optimized backend performance
---
#### **TASK-BE-605: Deployment Setup**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create Dockerfile for backend
- [ ] Create docker-compose.yml (backend + PostgreSQL)
- [ ] Setup environment variables for production
- [ ] Configure PM2 for process management
- [ ] Setup database migration scripts
- [ ] Create deployment scripts
- [ ] Configure GCP Cloud Run (or VM)
- [ ] Setup CI/CD pipeline (GitHub Actions)
- [ ] Configure logging and monitoring
**Dependencies:** TASK-BE-604
**Deliverable:** Deployment-ready backend
---
## Frontend Tasks
### **SPRINT 0: Frontend Setup & Infrastructure**
#### **TASK-FE-001: Repository & Environment Setup**
**Priority:** Critical | **Estimated Time:** 4 hours
- [ ] Create `re-workflow-frontend` repository
- [ ] Initialize React 19 project with Vite 6
- [ ] Setup TypeScript 5.7 configuration
- [ ] Setup folder structure as per architecture
- [ ] Configure `tsconfig.json` with strict mode
- [ ] Create `.env.example` for environment variables
- [ ] Setup `.gitignore` for React projects
- [ ] Initialize `package.json` with dependencies
**Dependencies:** None
**Deliverable:** Repository with React + TypeScript
---
#### **TASK-FE-002: UI Framework & Styling Setup**
**Priority:** Critical | **Estimated Time:** 4 hours
- [ ] Install Material-UI 6.3 (MUI)
- [ ] Install @emotion for styling
- [ ] Configure MUI theme (`src/assets/styles/theme.ts`)
- Primary/secondary colors
- Typography settings
- Breakpoints for responsive design
- [ ] Create global CSS variables
- [ ] Setup CSS reset and normalize
- [ ] Configure responsive layout breakpoints
**Dependencies:** TASK-FE-001
**Deliverable:** UI framework configured
---
#### **TASK-FE-003: Redux Store & State Management**
**Priority:** Critical | **Estimated Time:** 4 hours
- [ ] Install Redux Toolkit 2.5 and React-Redux
- [ ] Create Redux store (`src/redux/store.ts`)
- [ ] Create typed hooks (`src/redux/hooks.ts`)
- [ ] Create initial slices:
- authSlice (user, token, isAuthenticated)
- uiSlice (loading, errors, notifications)
- workflowSlice (workflows, currentWorkflow)
- approvalSlice (approvals, currentLevel)
- notificationSlice (notifications, unreadCount)
- documentSlice (documents)
- workNoteSlice (notes)
- participantSlice (participants, spectators)
- [ ] Configure Redux DevTools
- [ ] Setup persist for auth state (localStorage)
**Dependencies:** TASK-FE-001
**Deliverable:** Redux store configured
---
#### **TASK-FE-004: API Service Layer Setup**
**Priority:** Critical | **Estimated Time:** 4 hours
- [ ] Create Axios instance (`src/services/api.ts`)
- [ ] Configure base URL from environment
- [ ] Setup request interceptors (add JWT token)
- [ ] Setup response interceptors (error handling)
- [ ] Handle token refresh logic
- [ ] Handle 401 unauthorized (redirect to login)
- [ ] Create service files:
- `auth.service.ts`
- `workflow.service.ts`
- `approval.service.ts`
- `document.service.ts`
- `notification.service.ts`
- `workNote.service.ts`
- `participant.service.ts`
- `dashboard.service.ts`
- `user.service.ts`
**Dependencies:** TASK-FE-003
**Deliverable:** API service layer with interceptors
---
#### **TASK-FE-005: Routing & Navigation Setup**
**Priority:** High | **Estimated Time:** 3 hours
- [ ] Install React Router DOM 7.1
- [ ] Create routing configuration (`src/routes/AppRoutes.tsx`)
- [ ] Define all routes:
- `/login` - Login page
- `/register` - Registration page
- `/forgot-password` - Password reset request
- `/reset-password/:token` - Reset password
- `/dashboard` - Dashboard (protected)
- `/workflows/create` - Create request (protected)
- `/workflows/my-requests` - My requests (protected)
- `/workflows/open` - Open requests (protected)
- `/workflows/closed` - Closed requests (protected)
- `/workflows/:id` - Request detail (protected)
- `/unauthorized` - 403 page
- `/not-found` - 404 page
- [ ] Create PrivateRoute component (auth check)
- [ ] Create PublicRoute component (redirect if authenticated)
**Dependencies:** TASK-FE-003
**Deliverable:** Complete routing structure
---
#### **TASK-FE-006: Common Components Library**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Create reusable components:
- **Button** component (primary, secondary, danger variants)
- **Input** component (text, email, password, textarea)
- **Dropdown/Select** component
- **Modal** component (reusable dialog)
- **Card** component
- **Table** component with sorting
- **Tabs** component
- **Pagination** component
- **Loader/Spinner** component
- **Notification/Toast** component (react-toastify)
- **ErrorBoundary** component
- [ ] Create component tests for each
- [ ] Add TypeScript interfaces for props
**Dependencies:** TASK-FE-002
**Deliverable:** Reusable component library
---
#### **TASK-FE-007: Layout Components**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create Header component
- Logo and app name
- User profile dropdown
- Notification bell icon with count
- Logout button
- [ ] Create Sidebar/Navigation component
- Dashboard link
- My Requests link
- Open Requests link
- Closed Requests link
- Raise New Request button
- Active route highlighting
- [ ] Create Footer component
- [ ] Create PageLayout component (header + sidebar + content)
- [ ] Make layout responsive (mobile, tablet, desktop)
**Dependencies:** TASK-FE-006
**Deliverable:** Complete layout structure
---
### **SPRINT 1: SSO Authentication & User Management**
#### **TASK-FE-101: SSO Callback Handler & Protected Routes**
**Priority:** Critical | **Estimated Time:** 1 day | **Status:** ⏳ Pending
- [ ] Create SSO Callback page (`src/pages/Auth/SSOCallback.tsx`)
- Handle OAuth2 callback from SSO
- Extract authorization code from URL params
- Call backend callback API (GET /api/v1/auth/callback?code=XXX)
- Receive JWT token from backend
- Store JWT in Redux + localStorage
- Redirect to dashboard on success
- Handle SSO errors (access denied, invalid code)
- Show loading spinner during authentication
- [ ] Update route configuration (`src/routes/AppRoutes.tsx`)
- Add `/auth/callback` route (public)
- Add SSO redirect for unauthenticated users
- [ ] Create PrivateRoute component
- Check if user authenticated (JWT exists)
- Redirect to SSO login if not authenticated
- Allow access if authenticated
- [ ] Create PublicRoute component (optional)
- Redirect to dashboard if already authenticated
- [ ] Test SSO flow end-to-end
**Dependencies:** TASK-FE-004, TASK-FE-005
**Deliverable:** Working SSO authentication flow
**Note:** No login/signup/password reset pages needed (SSO handles everything)
---
#### **TASK-FE-102: Login Button & Logout Functionality**
**Priority:** High | **Estimated Time:** 0.5 days | **Status:** ⏳ Pending
- [ ] Create "Login with SSO" button on landing page
- Redirects to GET /api/v1/auth/login
- Backend redirects to SSO Bridge
- Simple button, no form needed
- [ ] Implement logout functionality (Header component)
- Create logout Redux action
- Clear user state from Redux
- Clear JWT from localStorage
- Call POST /api/v1/auth/logout
- Redirect to SSO logout URL
- Show "Logged out successfully" message
- [ ] Add logout button in user profile dropdown
**Dependencies:** TASK-FE-101
**Deliverable:** Login/logout functionality
---
#### **TASK-FE-103: User Profile & Header**
**Priority:** Medium | **Estimated Time:** 1 day | **Status:** ⏳ Pending
- [ ] Fetch current user from SSO (GET /api/v1/auth/me)
- Get user details (name, email, employee ID, department, phone)
- Display in Redux state
- Show in header dropdown
- [ ] Create user profile dropdown in header
- User avatar/profile picture
- Display name and email
- Department name
- Employee ID
- Logout button
- [ ] Create Edit Profile modal (limited fields)
- Update phone number (only editable field)
- Update profile picture
- Connect to PUT /api/v1/users/:id
- Other fields (name, email, employee ID) are read-only (from AD)
- [ ] User profile page (optional)
- View complete profile
- See department, designation
- View workflow statistics
**Dependencies:** TASK-FE-007, TASK-FE-101
**Deliverable:** User profile display and limited editing
**Note:** Most user info comes from Active Directory (read-only), only phone/picture editable
---
### **SPRINT 2: Core Workflow Creation**
#### **TASK-FE-201: Create Request - Wizard Structure**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Create CreateRequest page (`src/pages/CreateRequest/CreateRequest.tsx`)
- [ ] Implement 6-step wizard with stepper:
1. Template Selection
2. Basic Information
3. Approval Workflow
4. Participants & Access
5. Documents & Attachments
6. Review & Submit
- [ ] Create WizardStepper component
- Progress indicator (1/6, 2/6, etc.)
- Active step highlighting
- Clickable steps (if previous steps complete)
- [ ] Add Next/Previous navigation buttons
- [ ] Save draft functionality (auto-save)
- [ ] Store wizard state in Redux
**Dependencies:** TASK-FE-007
**Deliverable:** Wizard navigation structure
---
#### **TASK-FE-202: Step 1 - Template Selection**
**Priority:** High | **Estimated Time:** 3 hours
- [ ] Create Template Selection step
- [ ] Show two options:
- Custom Request (Non-Templatized) - Enabled
- Template Request - Disabled (future scope)
- [ ] Visual card-based selection
- [ ] Require selection before proceeding
- [ ] Save selection to Redux state
- [ ] Add helpful description for each option
**Dependencies:** TASK-FE-201
**Deliverable:** Template selection step
---
#### **TASK-FE-203: Step 2 - Basic Information**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Create Basic Information step
- [ ] Form fields:
- **Request Title** (max 500 chars, required)
- **Detailed Description** (rich text editor, required)
- Support bold, italic, underline
- Support tables, lists
- Support links
- **Priority Level** (radio buttons, required)
- Standard (working days)
- Express (calendar days)
- [ ] Form validation (all fields required)
- [ ] Rich text editor integration (Quill/Draft.js/TinyMCE)
- [ ] Save to Redux state
- [ ] Character count indicators
**Dependencies:** TASK-FE-201
**Deliverable:** Basic information form
---
#### **TASK-FE-204: Step 3 - Approval Workflow**
**Priority:** Critical | **Estimated Time:** 10 hours
- [ ] Create Approval Workflow step
- [ ] Dynamic approval level creation (max 10 levels)
- [ ] For each level:
- Level name/title input
- Approver selection with @mention/search
- TAT input (hours or days dropdown)
- Add/Remove level buttons
- [ ] User search/tagging component
- Search users by name/email
- Display user dropdown with profile pic
- Select user as approver
- [ ] Real-time TAT calculation
- Sum all level TATs
- Display total TAT prominently
- [ ] Approval Flow Summary (read-only view)
- Show all levels in hierarchy
- Show approvers and TAT for each
- [ ] TAT Summary widget
- [ ] Validation (at least 1 approver, valid TAT)
- [ ] Save approval hierarchy to Redux
**Dependencies:** TASK-FE-203
**Deliverable:** Approval workflow builder
---
#### **TASK-FE-205: Step 4 - Participants & Access**
**Priority:** High | **Estimated Time:** 4 hours
- [ ] Create Participants step
- [ ] Add Spectators section
- @mention/search component (reuse from Step 3)
- Add multiple spectators
- Display added spectators with remove option
- [ ] Display participant permissions
- Spectators can view and comment
- Spectators cannot approve
- [ ] Save participants to Redux state
- [ ] Validation (optional spectators)
**Dependencies:** TASK-FE-204
**Deliverable:** Participant management step
---
#### **TASK-FE-206: Step 5 - Documents & Attachments**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create Documents step
- [ ] File upload component (react-dropzone)
- Drag-and-drop area
- Browse files button
- Multiple file upload
- File type validation (PDF, Word, Excel, PPT, images)
- File size validation (max 10MB per file)
- [ ] Display uploaded files list
- File name, size, type
- Preview icon for PDF/images
- Remove file option
- [ ] Google Docs/Sheets link section
- Input for Google Docs URL
- Input for Google Sheets URL
- Validate Google URLs
- [ ] Upload progress indicators
- [ ] Save file metadata to Redux (actual upload on submit)
**Dependencies:** TASK-FE-205
**Deliverable:** Document upload step
---
#### **TASK-FE-207: Step 6 - Review & Submit**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Create Review & Submit step
- [ ] Display comprehensive summary:
- **Request Overview**
- Request type, priority, title
- **Basic Information**
- Description (formatted)
- Priority level
- **Approval Workflow**
- All levels with approvers and TAT
- Total TAT calculation
- **Participants**
- List of spectators
- **Documents**
- List of attached files
- Google Docs/Sheets links
- [ ] Add Edit buttons for each section (go back to step)
- [ ] Two action buttons:
- **Save as Draft** (POST /api/v1/workflows with is_draft=true)
- **Submit Request** (POST /api/v1/workflows + PATCH /submit)
- [ ] Loading state during submission
- [ ] Success notification and redirect to request detail
- [ ] Error handling and display
**Dependencies:** TASK-FE-206
**Deliverable:** Review & submit workflow
---
#### **TASK-FE-208: Workflow Creation API Integration**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Connect wizard to backend APIs
- [ ] Implement workflow creation flow:
1. POST /api/v1/workflows (create draft)
2. Upload documents (POST /api/v1/workflows/:id/documents)
3. Add approval levels (POST /api/v1/workflows/:id/approvals)
4. Add spectators (POST /api/v1/workflows/:id/participants)
5. Submit workflow (PATCH /api/v1/workflows/:id/submit)
- [ ] Handle API errors at each step
- [ ] Show loading states
- [ ] Implement retry logic
- [ ] Clear wizard state after successful submission
**Dependencies:** TASK-FE-207
**Deliverable:** Fully integrated workflow creation
---
### **SPRINT 3: Request Management & Approval Actions**
#### **TASK-FE-301: My Requests Page**
**Priority:** Critical | **Estimated Time:** 8 hours
- [ ] Create My Requests page (`src/pages/MyRequests/MyRequests.tsx`)
- [ ] Fetch user's workflows (GET /api/v1/workflows/my-requests)
- [ ] Display category tabs:
- Total
- In Progress
- Approved
- Rejected
- Draft
- [ ] Request card component displaying:
- Request number (REQ-YYYY-00001)
- Title
- Priority badge (EXPRESS/STANDARD)
- Status badge (color-coded)
- Current approval level
- Submission date
- Estimated completion date
- [ ] Implement search functionality
- [ ] Implement filters (status, priority, date range)
- [ ] Implement sorting (date, priority, status)
- [ ] Implement pagination
- [ ] Click to navigate to request detail
**Dependencies:** TASK-FE-007
**Deliverable:** My Requests listing page
---
#### **TASK-FE-302: Open & Closed Requests Pages**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create Open Requests page
- Fetch GET /api/v1/workflows/open
- Show requests assigned to user or involving user
- Same card layout as My Requests
- Filters and search
- [ ] Create Closed Requests page
- Fetch GET /api/v1/workflows/closed
- Show completed workflows
- Display conclusion remarks
- Filters and search
- [ ] Reuse request card component from TASK-FE-301
- [ ] Add loading states
- [ ] Handle empty states (no requests)
**Dependencies:** TASK-FE-301
**Deliverable:** Open and Closed request pages
---
#### **TASK-FE-303: Request Detail Page - Overview Tab**
**Priority:** Critical | **Estimated Time:** 8 hours
- [ ] Create Request Detail page (`src/pages/RequestDetail/RequestDetail.tsx`)
- [ ] Fetch workflow details (GET /api/v1/workflows/:id)
- [ ] Display request information:
- Request number
- Title
- Description (formatted HTML)
- Initiator name, department, contact
- Priority badge
- Status badge
- Created date
- Submission date
- [ ] TAT Progress Bar component
- Visual progress bar (elapsed/total)
- Color-coded (green: on track, yellow: approaching, red: breached)
- Display remaining time
- Show TAT status text
- [ ] Tab navigation:
- Overview (default)
- Workflow
- Documents
- Activity
- [ ] Spectators list sidebar
- [ ] Quick Actions sidebar (for approvers):
- Add Work Note
- Add Approver
- Add Spectator
- Approve Request
- Reject Request
**Dependencies:** TASK-FE-301
**Deliverable:** Request detail overview
---
#### **TASK-FE-304: Request Detail - Workflow Tab**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Create Workflow Tab component
- [ ] Fetch approval hierarchy (GET /api/v1/workflows/:id/approvals)
- [ ] Display approval levels in vertical timeline:
- Level number and name
- Approver name and designation
- TAT allocation (hours/days)
- Status indicator (Pending, In Progress, Approved, Rejected, Completed)
- Action date/timestamp
- Approver comments
- [ ] Highlight current active level
- [ ] Show TAT tracking for each level:
- Elapsed time
- Remaining time
- TAT status (on track, approaching, breached)
- Color-coded progress bars
- [ ] Display completion checkmarks for approved levels
- [ ] Show rejection reason if rejected
**Dependencies:** TASK-FE-303
**Deliverable:** Workflow timeline view
---
#### **TASK-FE-305: Request Detail - Documents Tab**
**Priority:** High | **Estimated Time:** 5 hours
- [ ] Create Documents Tab component
- [ ] Fetch documents (GET /api/v1/workflows/:id/documents)
- [ ] Display documents in list/grid view:
- File name
- File type icon
- File size
- Uploader name
- Upload timestamp
- Preview button (PDF/images only)
- Download button
- [ ] Implement PDF preview modal (inline viewer)
- [ ] Implement image preview modal (lightbox)
- [ ] Download document (GET /api/v1/documents/:id/download)
- [ ] Display Google Docs/Sheets links separately
- [ ] Show empty state if no documents
**Dependencies:** TASK-FE-303
**Deliverable:** Documents tab with preview
---
#### **TASK-FE-306: Request Detail - Activity Tab**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Create Activity Tab component
- [ ] Fetch activities (GET /api/v1/workflows/:id/activities)
- [ ] Display activity timeline (reverse chronological):
- Event icon (color-coded by type)
- Event description
- User name (if user action)
- Timestamp (relative time: "2 hours ago")
- Metadata (if applicable)
- [ ] Activity types:
- Request created
- Request submitted
- Approver added
- Spectator added
- Document uploaded
- Document deleted
- Work note added
- Approval/rejection
- TAT warning
- TAT breach
- Status change
- [ ] Filter by activity type (optional)
- [ ] Auto-refresh on page load
**Dependencies:** TASK-FE-303
**Deliverable:** Activity timeline view
---
#### **TASK-FE-307: Approve/Reject Modal**
**Priority:** Critical | **Estimated Time:** 6 hours
- [ ] Create Approve Request modal component
- Display request ID and title
- Mandatory comments field (max 500 chars)
- Character counter
- "Approve Request" button
- "Cancel" button
- [ ] Create Reject Request modal component
- Display request ID and title
- Mandatory rejection reason (max 500 chars)
- Character counter
- "Reject Request" button (red/danger)
- "Cancel" button
- [ ] Form validation (comments required)
- [ ] Connect to APIs:
- PATCH /api/v1/workflows/:id/approvals/:levelId/approve
- PATCH /api/v1/workflows/:id/approvals/:levelId/reject
- [ ] Show loading state during submission
- [ ] Success notification
- [ ] Refresh request detail after action
- [ ] Handle errors (not authorized, already actioned, etc.)
**Dependencies:** TASK-FE-303
**Deliverable:** Approval/rejection modals
---
#### **TASK-FE-308: Add Work Note / Chat Component**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Create Work Notes component (chat interface)
- [ ] Fetch work notes (GET /api/v1/workflows/:id/work-notes)
- [ ] Display messages in chronological order:
- User avatar
- User name and role badge
- Message text (support line breaks)
- Timestamp (relative time)
- Reactions (emoji reactions)
- Attachments (if any)
- [ ] Message composer at bottom:
- Text input (textarea, auto-expand)
- @mention autocomplete dropdown
- Attach file button
- Send button
- Character counter (max 2000 chars)
- [ ] Implement @mention detection and autocomplete
- [ ] Send message (POST /api/v1/workflows/:id/work-notes)
- [ ] Upload attachments with messages
- [ ] Implement reactions (POST /api/v1/work-notes/:id/reactions)
- [ ] Scroll to bottom on new message
- [ ] Auto-refresh messages (polling or websocket)
**Dependencies:** TASK-FE-303
**Deliverable:** Work notes chat interface
---
#### **TASK-FE-309: Add Approver/Spectator Modal**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Create "Add Approver" modal
- User search/autocomplete with @mention
- Dropdown showing matching users
- Display user name, email, department
- "Add" and "Cancel" buttons
- Connect to POST /api/v1/workflows/:id/approvals
- [ ] Create "Add Spectator" modal
- Same UI as Add Approver
- Connect to POST /api/v1/workflows/:id/participants
- [ ] Show success notification
- [ ] Refresh request detail after adding
- [ ] Handle errors (user already added)
**Dependencies:** TASK-FE-303
**Deliverable:** Add participant modals
---
### **SPRINT 4: Notifications & Dashboard**
#### **TASK-FE-401: Notification System**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create NotificationBell component in header
- [ ] Display unread notification count badge
- [ ] Fetch notifications (GET /api/v1/notifications)
- [ ] Create notification dropdown panel:
- List of recent notifications (max 10)
- Notification item with:
- Type icon
- Title
- Message
- Timestamp (relative)
- Read/unread indicator
- "View All" link
- "Mark All as Read" button
- [ ] Click notification to:
- Mark as read (PATCH /api/v1/notifications/:id/read)
- Navigate to related request
- [ ] Create full Notifications page (optional)
- [ ] Implement polling for new notifications (every 30 sec)
- [ ] Show toast notifications for high-priority alerts
- [ ] Handle notification types:
- Approval assignment
- TAT warning
- TAT breach
- Work note mention
- Approval/rejection
- Request closure
**Dependencies:** TASK-FE-007
**Deliverable:** Notification system
---
#### **TASK-FE-402: Dashboard Page**
**Priority:** Medium | **Estimated Time:** 8 hours
- [ ] Create Dashboard page (`src/pages/Dashboard/Dashboard.tsx`)
- [ ] Fetch dashboard statistics (GET /api/v1/dashboard/stats)
- [ ] Display key metrics cards:
- Total Requests
- Pending Approvals
- Approved Requests
- Rejected Requests
- TAT Breached
- Avg. Approval Time
- [ ] Create Recent Activities widget
- Fetch GET /api/v1/dashboard/recent
- Display last 10 activities
- [ ] Create Pending Actions widget
- Fetch GET /api/v1/dashboard/pending-actions
- Show requests requiring user's action
- [ ] Create charts (using Recharts):
- Requests by Status (pie chart)
- Requests by Priority (bar chart)
- Approval Trend (line chart over time)
- [ ] Add date range filter
- [ ] Make dashboard responsive
**Dependencies:** TASK-FE-401
**Deliverable:** Dashboard with statistics
---
#### **TASK-FE-403: Conclusion Remark UI**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Create Conclusion section in Request Detail
- [ ] Show after final approval
- [ ] Display AI-generated conclusion
- [ ] For Initiator only:
- "Edit Conclusion" button
- Edit modal with textarea
- "Save" and "Cancel" buttons
- Connect to PUT /api/v1/workflows/:id/conclusion
- [ ] For other users: Read-only view
- [ ] Display conclusion in:
- Request detail page
- My Requests (approved)
- Open Requests
- Closed Requests
- [ ] Show placeholder if no conclusion exists
**Dependencies:** TASK-FE-303
**Deliverable:** Conclusion remark UI
---
#### **TASK-FE-404: Workflow Closure UI**
**Priority:** High | **Estimated Time:** 3 hours
- [ ] Add "Close Request" button in request detail
- Only visible to initiator
- Only after final approval
- Requires conclusion remark
- [ ] Create Close Request confirmation modal
- Display summary
- Show final conclusion
- "Confirm Close" button
- "Cancel" button
- [ ] Connect to PATCH /api/v1/workflows/:id/close
- [ ] Show success notification
- [ ] Redirect to Closed Requests or stay on page
- [ ] Update request status to CLOSED
- [ ] Display closure date
**Dependencies:** TASK-FE-403
**Deliverable:** Workflow closure functionality
---
### **SPRINT 5: Polish & User Experience**
#### **TASK-FE-501: Search & Filter Components**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Create SearchBar component (reusable)
- [ ] Create FilterPanel component
- Status filter (checkboxes)
- Priority filter (checkboxes)
- Date range filter (date pickers)
- Department filter (dropdown)
- Initiator filter (user search)
- [ ] Implement search logic (debounce 300ms)
- [ ] Implement filter application
- [ ] Add "Clear Filters" button
- [ ] Show active filter count
- [ ] Persist filters in URL query params
- [ ] Apply to:
- My Requests
- Open Requests
- Closed Requests
**Dependencies:** TASK-FE-301, TASK-FE-302
**Deliverable:** Search and filter functionality
---
#### **TASK-FE-502: Responsive Design & Mobile**
**Priority:** High | **Estimated Time:** 8 hours
- [ ] Make all pages responsive
- [ ] Test on breakpoints:
- Mobile (320px - 767px)
- Tablet (768px - 1023px)
- Desktop (1024px+)
- [ ] Adjust layouts:
- Collapsible sidebar on mobile
- Hamburger menu
- Stack cards vertically on mobile
- Adjust table to cards on mobile
- Responsive modals
- [ ] Test touch interactions
- [ ] Optimize images and assets
- [ ] Test on real devices
**Dependencies:** All frontend tasks
**Deliverable:** Fully responsive UI
---
#### **TASK-FE-503: Loading States & Error Handling**
**Priority:** High | **Estimated Time:** 4 hours
- [ ] Add loading skeletons for all data fetching
- Request list skeleton
- Request detail skeleton
- Dashboard skeleton
- [ ] Create ErrorState component (empty state)
- [ ] Create EmptyState component (no data)
- [ ] Add error boundaries around major sections
- [ ] Implement retry logic for failed requests
- [ ] Show user-friendly error messages
- [ ] Add toast notifications for actions
- [ ] Handle network errors gracefully
**Dependencies:** All data-fetching tasks
**Deliverable:** Better UX with loading/error states
---
#### **TASK-FE-504: Accessibility (A11y)**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Add ARIA labels to interactive elements
- [ ] Ensure keyboard navigation works
- [ ] Add focus indicators
- [ ] Test with screen readers
- [ ] Ensure proper heading hierarchy
- [ ] Add alt text to images
- [ ] Ensure color contrast meets WCAG AA
- [ ] Add skip navigation links
- [ ] Test tab order
**Dependencies:** All component tasks
**Deliverable:** Accessible application
---
### **SPRINT 6: Testing & Deployment**
#### **TASK-FE-601: Unit Testing**
**Priority:** High | **Estimated Time:** 10 hours
- [ ] Setup Vitest testing framework
- [ ] Setup React Testing Library
- [ ] Write component tests:
- Login component test
- Registration component test
- Workflow wizard tests
- Request card test
- Approval modal test
- Work notes test
- Notification test
- [ ] Write Redux slice tests
- [ ] Write utility function tests
- [ ] Achieve >70% code coverage
- [ ] Mock API calls
**Dependencies:** All component tasks
**Deliverable:** Component test suite
---
#### **TASK-FE-602: Integration Testing**
**Priority:** High | **Estimated Time:** 6 hours
- [ ] Test complete user flows:
- User registration → login flow
- Create workflow → submit flow
- Approve/reject workflow flow
- Add work note flow
- Upload document flow
- [ ] Test navigation between pages
- [ ] Test Redux state updates
- [ ] Test API integration with mock server
- [ ] Test error scenarios
**Dependencies:** TASK-FE-601
**Deliverable:** Integration test suite
---
#### **TASK-FE-603: Performance Optimization**
**Priority:** Medium | **Estimated Time:** 4 hours
- [ ] Implement code splitting with React.lazy
- [ ] Optimize bundle size (tree shaking)
- [ ] Lazy load images
- [ ] Implement virtualization for long lists
- [ ] Memoize expensive components (React.memo)
- [ ] Optimize Redux selectors (reselect)
- [ ] Add service worker for offline support (optional)
- [ ] Compress assets
- [ ] Analyze bundle with Vite build analyzer
**Dependencies:** All frontend tasks
**Deliverable:** Optimized frontend performance
---
#### **TASK-FE-604: Deployment Setup**
**Priority:** High | **Estimated Time:** 4 hours
- [ ] Create Dockerfile for frontend
- [ ] Create nginx configuration
- [ ] Setup environment variables for production
- [ ] Configure production build (npm run build)
- [ ] Setup CI/CD pipeline (GitHub Actions)
- [ ] Configure GCP Cloud Run or Storage
- [ ] Setup CDN for static assets
- [ ] Configure HTTPS
- [ ] Test production build locally
**Dependencies:** TASK-FE-603
**Deliverable:** Deployment-ready frontend
---
## Task Dependencies
### Critical Path (Must be completed in order)
```
BACKEND CRITICAL PATH:
TASK-BE-001 → TASK-BE-002 → TASK-BE-003 → TASK-BE-004
TASK-BE-101 → TASK-BE-102 → TASK-BE-103
TASK-BE-201 → TASK-BE-202 → TASK-BE-301 → TASK-BE-302
TASK-BE-401 → TASK-BE-402
FRONTEND CRITICAL PATH:
TASK-FE-001 → TASK-FE-002 → TASK-FE-003 → TASK-FE-004
TASK-FE-101 → TASK-FE-102
TASK-FE-201 → TASK-FE-202 → ... → TASK-FE-207 → TASK-FE-208
TASK-FE-301 → TASK-FE-303 → TASK-FE-307
```
### Parallel Tasks (Can be done simultaneously)
**Sprint 0:**
- TASK-BE-001 and TASK-FE-001 (both teams can setup repos)
- TASK-BE-002 (DB) and TASK-FE-002 (UI framework)
**Sprint 1:**
- TASK-BE-103 (User APIs) and TASK-FE-103 (Password reset)
**Sprint 3:**
- TASK-FE-304, TASK-FE-305, TASK-FE-306 (all tabs can be done in parallel)
**Sprint 5:**
- TASK-FE-501, TASK-FE-502, TASK-FE-503, TASK-FE-504 (all polish tasks)
---
## Revised Timeline & Milestones (Week-Based with Current Status)
### Updated Week-by-Week Breakdown
| Week | Sprint | Backend Tasks | Backend Time | Frontend Tasks | Frontend Time | Status | Milestone |
|------|--------|---------------|--------------|----------------|---------------|--------|-----------|
| **Week 1** | Sprint 0 | BE-001 to BE-004 | 3 days | FE-001, FE-002, FE-006, FE-007 (UI) | 0 days (Figma) | 🔄 Both In Progress | UI extraction ongoing |
| **Week 2** | Sprint 0+1 | BE-004 (Complete)<br>BE-101 Start | 2 days | FE-003, FE-004, FE-005<br>FE-101 Start | 4 days | 🔄 Current Week | Foundation + Auth Start |
| **Week 3** | Sprint 1+2 | BE-101 to BE-103<br>BE-201 Start | 4 days | FE-101 to FE-104<br>FE-201 to FE-203 | 4 days | ⏳ Upcoming | Auth Complete + Workflow Start |
| **Week 4** | Sprint 2 | BE-201, BE-202 | 4 days | FE-204 to FE-207 | 4 days | ⏳ Upcoming | Workflow wizard functional |
| **Week 5** | Sprint 2+3 | BE-203, BE-204<br>BE-301 Start | 4 days | FE-208, FE-301, FE-302 | 4 days | ⏳ Upcoming | Workflow + Approvals Start |
| **Week 6** | Sprint 3 | BE-301, BE-302 | 4 days | FE-303 to FE-306 | 4 days | ⏳ Upcoming | Approval flow working |
| **Week 7** | Sprint 3+4 | BE-303, BE-401 | 4 days | FE-307 to FE-309, FE-401 | 4 days | ⏳ Upcoming | Approvals + Docs Start |
| **Week 8** | Sprint 4+5 | BE-402, BE-403, BE-501 | 4 days | FE-402 to FE-404, FE-501 | 4 days | ⏳ Upcoming | Docs + Dashboard |
| **Week 9** | Sprint 5+6 | BE-502, BE-503, BE-601 | 4 days | FE-502 to FE-504, FE-601 | 4 days | ⏳ Upcoming | Testing starts |
| **Week 10** | Sprint 6 | BE-602 to BE-605 | 4 days | FE-602 to FE-604 | 4 days | ⏳ Upcoming | Testing + Deployment |
**Revised Timeline:**
- **Frontend:** 7-8 weeks (due to API integration work)
- **Backend:** 8 weeks (as planned)
- **Overall:** ~10 weeks total
---
## Task Estimation Summary (Week-Based)
### Backend Tasks (Time Estimates in Days/Weeks)
| Sprint | Task ID | Task Name | Estimated Time | Status |
|--------|---------|-----------|----------------|--------|
| **Sprint 0** | BE-001 | Repository Setup | 0.5 days | 🔄 In Progress |
| | BE-002 | Database Schema | 1 day | ⏳ Pending |
| | BE-003 | Backend Configuration | 0.5 days | ⏳ Pending |
| | BE-004 | Sequelize ORM Setup | 1 day | ⏳ Pending |
| | **Sprint 0 Total** | | **3 days** | |
| **Sprint 1** | BE-101 | Authentication System | 2 days | ⏳ Pending |
| | BE-102 | User Management APIs | 1 day | ⏳ Pending |
| | BE-103 | User Profile | 1 day | ⏳ Pending |
| | **Sprint 1 Total** | | **4 days** | |
| **Sprint 2** | BE-201 | Workflow Creation APIs | 2 days | ⏳ Pending |
| | BE-202 | Approval Hierarchy | 1.5 days | ⏳ Pending |
| | BE-203 | Participant Management | 1 day | ⏳ Pending |
| | BE-204 | Workflow Listing/Filtering | 1.5 days | ⏳ Pending |
| | **Sprint 2 Total** | | **2 weeks (8 days)** | |
| **Sprint 3** | BE-301 | Approval/Rejection Actions | 2 days | ⏳ Pending |
| | BE-302 | TAT Tracking & Monitoring | 2 days | ⏳ Pending |
| | BE-303 | Notification System | 2 days | ⏳ Pending |
| | **Sprint 3 Total** | | **1.5 weeks (6 days)** | |
| **Sprint 4** | BE-401 | Document Management | 2 days | ⏳ Pending |
| | BE-402 | Work Notes & Chat | 2 days | ⏳ Pending |
| | BE-403 | Activity Log System | 1 day | ⏳ Pending |
| | **Sprint 4 Total** | | **1 week (5 days)** | |
| **Sprint 5** | BE-501 | Dashboard Statistics | 1.5 days | ⏳ Pending |
| | BE-502 | AI Conclusion Generation | 1.5 days | ⏳ Pending |
| | BE-503 | Workflow Closure | 1 day | ⏳ Pending |
| | **Sprint 5 Total** | | **4 days** | |
| **Sprint 6** | BE-601 | Unit Testing | 2 days | ⏳ Pending |
| | BE-602 | Integration Testing | 2 days | ⏳ Pending |
| | BE-603 | API Documentation | 1 day | ⏳ Pending |
| | BE-604 | Performance Optimization | 1.5 days | ⏳ Pending |
| | BE-605 | Deployment Setup | 1.5 days | ⏳ Pending |
| | **Sprint 6 Total** | | **2 weeks (8 days)** | |
| **TOTAL BACKEND** | | **25 Tasks** | **~8 weeks (42 days)** | |
---
### Frontend Tasks (Time Estimates in Days/Weeks)
| Sprint | Task ID | Task Name | Estimated Time | Status |
|--------|---------|-----------|----------------|--------|
| **Sprint 0** | FE-001 | Repository Setup | 0 days | ✅ Complete |
| | FE-002 | UI Framework | 0 days | ✅ Complete |
| | FE-003 | Redux Store Setup | 2 days | ❌ NOT STARTED |
| | FE-004 | API Service Layer | 1 day | ❌ NOT STARTED |
| | FE-005 | Route Guards | 1 day | ❌ NOT STARTED |
| | FE-006 | Components (Figma UI) | 0 days (80% done) | 🔄 In Progress |
| | FE-007 | Layout (Figma UI) | 0 days (80% done) | 🔄 In Progress |
| | **Sprint 0 Actual** | | **1 week (4 days)** | **16% Done** |
| **Sprint 1** | FE-101 | SSO Callback & Routes | 1 day | ⏳ Waiting for BE-101 |
| | FE-102 | Login/Logout Buttons | 0.5 days | ⏳ Pending |
| | FE-103 | User Profile Header | 1 day | ⏳ Pending |
| | **Sprint 1 Total** | | **2.5 days** | **SSO: No login/signup screens** |
| **Sprint 2** | FE-201 | Wizard Structure + Redux | 1 day | 🔄 UI Done, Need Redux |
| | FE-202 | Template Selection | 0.5 days | 🔄 UI Done, Need Logic |
| | FE-203 | Basic Info + Validation | 1 day | 🔄 UI Done, Need Validation |
| | FE-204 | Approval Workflow + Logic | 2 days | 🔄 UI Done, Need TAT Logic |
| | FE-205 | Participants + API | 1 day | 🔄 UI Done, Need API |
| | FE-206 | Documents Upload + API | 1 day | 🔄 UI Done, Need Upload Logic |
| | FE-207 | Review & Submit + API | 1 day | 🔄 UI Done, Need API |
| | FE-208 | Full API Integration | 2 days | ❌ NOT STARTED |
| | **Sprint 2 Revised** | | **2 weeks (9 days)** | **UI: 80%, Logic: 0%** |
| **Sprint 3** | FE-301 | My Requests + API | 1.5 days | 🔄 UI Done, Need API |
| | FE-302 | Open/Closed + API | 1 day | 🔄 UI Done, Need API |
| | FE-303 | Request Detail + API | 2 days | 🔄 UI Done, Need API |
| | FE-304 | Workflow Tab + API | 1 day | 🔄 UI Done, Need API |
| | FE-305 | Documents Tab + API | 1 day | 🔄 UI Done, Need API |
| | FE-306 | Activity Tab + API | 1 day | 🔄 UI Done, Need API |
| | FE-307 | Approve/Reject + API | 1.5 days | 🔄 UI Done, Need API |
| | FE-308 | Work Notes + Backend | 1 day | 🔄 UI + Partial Logic Done |
| | FE-309 | Add Approver/Spectator | 1 day | 🔄 UI Done, Need API |
| | **Sprint 3 Revised** | | **2 weeks (10 days)** | **UI: 80%, API: 0%** |
| **Sprint 4** | FE-401 | Notification + Polling | 1.5 days | 🔄 UI Done, Need API |
| | FE-402 | Dashboard + Charts | 2 days | 🔄 UI Done, Need API |
| | FE-403 | Conclusion + AI | 1 day | 🔄 UI Done, Need API |
| | FE-404 | Workflow Closure | 1 day | 🔄 UI Done, Need API |
| | **Sprint 4 Revised** | | **1 week (5 days)** | **UI: 80%, API: 0%** |
| **Sprint 5** | FE-501 | Search & Filter | 1 day | ⏳ Pending |
| | FE-502 | Responsive Design | 1 day | ⏳ Pending |
| | FE-503 | Loading/Error States | 0.5 days | ⏳ Pending |
| | FE-504 | Accessibility (A11y) | 0.5 days | ⏳ Pending |
| | **Sprint 5 Total** | | **3 days** | |
| **Sprint 6** | FE-601 | Unit Testing | 2 days | ⏳ Pending |
| | FE-602 | Integration Testing | 1 day | ⏳ Pending |
| | FE-603 | Performance Optimization | 1 day | ⏳ Pending |
| | FE-604 | Deployment Setup | 1 day | ⏳ Pending |
| | **Sprint 6 Total** | | **1 week (5 days)** | |
| **TOTAL FRONTEND** | | **40 Tasks** | **~7 weeks (35 days)** | **16% Complete (UI Only)** |
---
### ⚠️ REVISED FRONTEND EFFORT BREAKDOWN
**Figma UI Extraction vs Actual Development:**
| Work Category | Figma Extracted | Still Required | Total Time |
|--------------|-----------------|----------------|------------|
| **Visual UI Components** | 80% Done | 20% remaining | 1-2 days |
| **Redux Store Setup** | 0% | 100% needed | 2-3 days |
| **API Service Layer** | 0% | 100% needed | 1 day |
| **Route Guards & Auth** | 0% | 100% needed | 1 day |
| **Form Validations** | 0% | 100% needed | 3-4 days |
| **API Integration (All Pages)** | 0% | 100% needed | 10-12 days |
| **State Management Logic** | 0% | 100% needed | 5-6 days |
| **Error Handling** | 0% | 100% needed | 2-3 days |
| **Loading States** | 0% | 100% needed | 2-3 days |
| **Testing** | 0% | 100% needed | 5 days |
| **TOTAL** | **16%** | **84%** | **~35 days** |
**Key Insight:**
- Figma gave us the "look and feel" (16% of work)
- We still need to build the "brain and connections" (84% of work)
---
## Task Summary
### Backend Tasks Summary
- **Sprint 0:** 4 tasks (Setup & Infrastructure)
- **Sprint 1:** 3 tasks (Authentication)
- **Sprint 2:** 4 tasks (Workflow Creation)
- **Sprint 3:** 3 tasks (Approvals & Notifications)
- **Sprint 4:** 3 tasks (Documents & Work Notes)
- **Sprint 5:** 3 tasks (Dashboard & AI)
- **Sprint 6:** 5 tasks (Testing & Deployment)
**Total Backend Tasks:** 25 tasks
### Frontend Tasks Summary
- **Sprint 0:** 7 tasks (Setup & Components)
- **Sprint 1:** 4 tasks (Authentication)
- **Sprint 2:** 8 tasks (Workflow Wizard)
- **Sprint 3:** 9 tasks (Request Management)
- **Sprint 4:** 4 tasks (Notifications & Dashboard)
- **Sprint 5:** 4 tasks (Polish & UX)
- **Sprint 6:** 4 tasks (Testing & Deployment)
**Total Frontend Tasks:** 40 tasks
---
## Notes for Development Team
### Backend Team Notes
1. **Standard Login First:** Implement email/password authentication before SSO integration
2. **Database First:** Complete database schema before starting API development
3. **Testing:** Write tests alongside development, not at the end
4. **Documentation:** Document all APIs in Swagger as you build them
5. **TAT Logic:** TAT calculation is critical - test thoroughly
6. **Notifications:** Build notification system early as many features depend on it
### Frontend Team Notes
1. **Component Library First:** Build reusable components before pages
2. **Redux Structure:** Plan Redux structure carefully to avoid refactoring
3. **API Service Layer:** Keep all API calls in service files, not in components
4. **Responsive from Start:** Build responsive layouts from the beginning
5. **Accessibility:** Consider keyboard navigation and screen readers
6. **Loading States:** Always show loading indicators for async operations
### Key Integration Points
1. **Authentication:** Backend must provide JWT tokens, frontend must store and send them
2. **File Upload:** Backend accepts multipart/form-data, frontend uses FormData
3. **TAT Display:** Backend sends TAT in hours, frontend converts to days/hours for display
4. **Real-time Updates:** Use polling (every 30 sec) for notifications and work notes
5. **Error Handling:** Backend returns consistent error format, frontend displays user-friendly messages
---
## Risk Management
### High Risk Areas
1. **TAT Calculation Logic:** Complex business rules for working days vs calendar days
2. **Multi-level Approvals:** Ensure workflow progression logic is bulletproof
3. **File Upload:** Large files, network issues, storage quotas
4. **Real-time Notifications:** Polling vs WebSockets decision
5. **AI Integration:** Third-party API dependency for conclusion generation
### Mitigation Strategies
1. **TAT:** Write comprehensive unit tests, create test scenarios document
2. **Approvals:** State machine diagram, thorough testing of all paths
3. **Files:** Implement chunked upload, progress indicators, retry logic
4. **Notifications:** Start with polling, plan for WebSocket upgrade
5. **AI:** Mock AI responses for development, have fallback to manual conclusion
---
## Definition of Done (DoD)
### For Backend Tasks
- [ ] Code written and follows TypeScript best practices
- [ ] API endpoint tested with Postman/Insomnia
- [ ] Unit tests written and passing (>80% coverage)
- [ ] API documented in Swagger
- [ ] Error handling implemented
- [ ] Logging added for debugging
- [ ] Code reviewed and merged to develop branch
### For Frontend Tasks
- [ ] Component/page implemented and styled
- [ ] Responsive design tested (mobile, tablet, desktop)
- [ ] Connected to backend API (if applicable)
- [ ] Loading and error states handled
- [ ] Component tests written (if reusable)
- [ ] Accessibility considerations addressed
- [ ] Code reviewed and merged to develop branch
---
## Getting Started
### For Backend Developers
1. Clone `re-workflow-backend` repository
2. Install Node.js 22 LTS and PostgreSQL 16
3. Run `npm install` to install dependencies
4. Create `.env` file from `.env.example`
5. Setup database with schema SQL file
6. Start development: `npm run dev`
7. Pick tasks from Sprint 0 and start building!
### For Frontend Developers
1. Clone `re-workflow-frontend` repository
2. Install Node.js 22 LTS
3. Run `npm install` to install dependencies
4. Create `.env` file from `.env.example`
5. Configure API base URL to backend
6. Start development: `npm run dev`
7. Pick tasks from Sprint 0 and start building!
---
## Communication & Coordination
### Daily Standup Questions
1. What did you complete yesterday?
2. What will you work on today?
3. Any blockers or dependencies?
4. Any integration points with other tasks?
### Weekly Sync
1. Review sprint progress
2. Demo completed features
3. Discuss upcoming integration points
4. Adjust timeline if needed
### Tools
- **Project Management:** Jira / Linear / Trello
- **Communication:** Slack / Microsoft Teams
- **Code Review:** GitHub Pull Requests
- **API Testing:** Postman (shared collection)
- **Documentation:** Confluence / Notion
---
---
## 📊 Visual Timeline & Current Progress
### Project Progress Overview
```
PROJECT START ─────────────────────────────────── PROJECT END
↓ YOU ARE HERE (Week 2)
Week 1: ████████░░░░ 80% 🔄 Frontend Sprint 0 - UI Only (No Functionality)
Week 1: ███████░░░░░ 70% 🔄 Backend Sprint 0 In Progress
Week 2: ██░░░░░░░░░░ 15% 🔄 Sprint 1 - Authentication (CURRENT)
Week 3: ░░░░░░░░░░░░ 0% ⏳ Sprint 2 Part 1 - Workflow Creation
Week 4: ░░░░░░░░░░░░ 0% ⏳ Sprint 2 Part 2 - Workflow Creation
Week 5: ░░░░░░░░░░░░ 0% ⏳ Sprint 3 Part 1 - Approvals
Week 6: ░░░░░░░░░░░░ 0% ⏳ Sprint 3 Part 2 - Approvals
Week 7: ░░░░░░░░░░░░ 0% ⏳ Sprint 4 - Documents & Work Notes
Week 8: ░░░░░░░░░░░░ 0% ⏳ Sprint 5 - Dashboard & AI
Week 9: ░░░░░░░░░░░░ 0% ⏳ Sprint 6 Part 1 - Testing
Week 10: ░░░░░░░░░░░░ 0% ⏳ Sprint 6 Part 2 - Deployment
OVERALL PROGRESS: ██░░░░░░░░░░░░░░░░░░ 10% Complete (Mostly UI)
⚠️ WARNING: 80% UI ≠ 80% Complete
- UI extraction is only 20% of total work
- 80% UI done = 16% of frontend complete
- Still need: Redux, API integration, validations, business logic
```
---
### Sprint-by-Sprint Detailed Timeline
#### 🔄 IN PROGRESS: Sprint 0 (Week 1-2) - Frontend
**Status:** 80% UI EXTRACTED (Visuals Only)
**What's Actually Complete:**
- ✅ FE-001: Repository & Environment Setup (100%)
- ✅ FE-002: UI Framework & Styling (Material-UI configured) (100%)
- 🔄 FE-003: Redux Store & State Management (0% - NOT STARTED)
- 🔄 FE-004: API Service Layer (0% - NOT STARTED)
- 🔄 FE-005: Routing & Navigation Guards (0% - NOT STARTED)
- ✅ FE-006: Common Components Library - UI Only (80% - Dummy Data)
- ✅ FE-007: Layout Components - UI Only (80% - Dummy Data)
**Achievement:**
- ✅ Visual UI extracted from Figma (80% complete)
- ✅ Mobile responsive design included
- ✅ All packages installed and dependencies resolved
-**But:** No Redux, no API calls, no validations, no business logic
**Remaining Sprint 0 Work (1 week):**
- Complete 20% UI extraction (1-2 days)
- Setup Redux store and all slices (2-3 days)
- Configure Axios service layer (1 day)
- Implement route guards (1 day)
- Add basic form validations (1-2 days)
**Revised Sprint 0 Completion:** End of Week 2
---
#### 🔄 IN PROGRESS: Sprint 0 (Week 1) - Backend
**Status:** 70% COMPLETE
**Completed Tasks:**
- ✅ BE-001: Repository & Environment Setup (70% done)
**Remaining Tasks (0.5 weeks):**
- ⏳ BE-001: Complete repository setup (30% remaining)
- ⏳ BE-002: Database Setup & Schema (1 day)
- ⏳ BE-003: Backend Configuration (0.5 days)
- ⏳ BE-004: Sequelize ORM Setup (1 day)
**Target Completion:** End of Week 1
---
#### 🔄 CURRENT: Sprint 1 (Week 2) - Authentication
**Status:** ACTIVE THIS WEEK
**Start Date:** Week 2 Day 1
**Target Completion:** Week 2 End
**Backend Tasks (4 days):**
- ⏳ BE-101: User Authentication System (2 days)
- JWT configuration
- Register, login, password reset APIs
- Authentication middleware
- ⏳ BE-102: User Management APIs (1 day)
- ⏳ BE-103: User Profile Management (1 day)
**Frontend Tasks (2 days):**
- 🔄 FE-101: Login Page (0.5 days) - IN PROGRESS
- ⏳ FE-102: Registration Page (0.5 days)
- ⏳ FE-103: Forgot/Reset Password (0.5 days)
- ⏳ FE-104: User Profile & Header (0.5 days)
**Milestone:** Fully working authentication with login, registration, and user profile.
---
#### ⏳ UPCOMING: Sprint 2 (Weeks 3-4) - Workflow Creation
**Duration:** 2 weeks
**Frontend Advantage:** Wizard UI already complete from Figma!
**Week 3 Tasks:**
- Backend: BE-201 (Workflow APIs), BE-202 (Approval Hierarchy)
- Frontend: Connect wizard steps to backend APIs (FE-203, FE-204)
**Week 4 Tasks:**
- Backend: BE-203 (Participants), BE-204 (Filtering)
- Frontend: Complete wizard integration (FE-205 to FE-208)
**Milestone:** Complete workflow creation wizard functional end-to-end.
---
#### ⏳ UPCOMING: Sprint 3 (Weeks 5-6) - Approvals & Actions
**Duration:** 2 weeks
**Frontend Advantage:** Request pages & modals already built!
**Week 5 Tasks:**
- Backend: BE-301 (Approval Actions), BE-302 (TAT Tracking)
- Frontend: Connect request listing pages to APIs (FE-301 to FE-303)
**Week 6 Tasks:**
- Backend: BE-303 (Notifications)
- Frontend: Connect tabs and modals (FE-304 to FE-309)
**Special Note:** FE-308 (Work Notes) is ALREADY COMPLETE with full functionality! ✅
**Milestone:** Full approval workflow operational with notifications.
---
#### ⏳ UPCOMING: Sprint 4 (Week 7) - Documents & Collaboration
**Duration:** 1 week
**Frontend Advantage:** UI already complete, only need API integration!
**Backend Tasks (4 days):**
- BE-401: Document Management (2 days)
- BE-402: Work Notes APIs (2 days) - Frontend already has UI!
- BE-403: Activity Log System (1 day)
**Frontend Tasks (2 days):**
- Connect document upload/preview to APIs
- Connect work notes chat to backend
- Wire up activity timeline
**Milestone:** Documents and collaboration features working.
---
#### ⏳ UPCOMING: Sprint 5 (Week 8) - Dashboard & Polish
**Duration:** 1 week
**Backend Tasks:**
- BE-501: Dashboard Statistics (1.5 days)
- BE-502: AI Conclusion Generation (1.5 days)
- BE-503: Workflow Closure (1 day)
**Frontend Tasks:**
- FE-501: Search & Filter Components (1 day)
- FE-502: Responsive Design Polish (1 day)
- FE-503: Loading & Error States (0.5 days)
- FE-504: Accessibility Improvements (0.5 days)
**Milestone:** Complete feature set with analytics.
---
#### ⏳ UPCOMING: Sprint 6 (Weeks 9-10) - Testing & Deployment
**Duration:** 2 weeks
**Week 9 - Testing:**
- Unit tests (backend & frontend)
- Integration tests
- API documentation
- Bug fixes
**Week 10 - Deployment:**
- Performance optimization
- Production deployment setup
- CI/CD pipeline
- Final QA and go-live
**Milestone:** Production deployment! 🚀
---
## 🎯 Critical Path & Priorities
### THIS WEEK (Week 2) - Must Complete:
1. **Backend Priority:**
- ✅ Complete BE-001 (finish repo setup)
- 🔥 BE-002: Database schema MUST be done (blocks everything)
- 🔥 BE-101: Authentication APIs (blocks frontend integration)
2. **Frontend Priority:**
- 🔄 FE-101: Complete login page integration
- FE-102 to FE-104: Wire up remaining auth pages
### NEXT WEEK (Week 3) - Prepare Now:
- Review workflow creation requirements
- Ensure backend workflow APIs design is ready
- Frontend wizard UI is ready (already done ✅), just need backend connection
---
## 📈 Velocity & Progress Tracking (REALISTIC)
### Completed Work:
- **Frontend UI:** 80% complete (visual components only, NO functionality)
- Translation: 16% of total frontend work (UI is ~20% of effort)
- Still need: Redux, API integration, validations, state management
- **Frontend Functionality:** 5% complete (work notes partial)
- **Backend:** 10% complete (repo setup in progress)
- **Overall Project:** 10% complete (mostly static UI)
### ⚠️ Reality Check - What "80% UI" Means:
**Completed:**
- Visual components (buttons, inputs, cards, modals)
- Layout and styling
- Mobile responsive design
- Dummy data display
**NOT Completed (This is 84% of remaining work):**
- Redux state management (0%)
- API integration (0%)
- Form validations (0%)
- Error handling (0%)
- Loading states (0%)
- Business logic (0%)
- Authentication (0%)
- Route guards (0%)
### Estimated Remaining:
- **Backend:** ~8 weeks (42 days remaining)
- **Frontend:** ~7-8 weeks (35 days remaining)
- Redux setup: 3 days
- API integration: 12 days
- Validations: 4 days
- State management: 6 days
- Error/Loading states: 5 days
- Testing: 5 days
- **Overall:** ~10 weeks to production
### Time Actually Saved:
- **Frontend UI Extraction:** Saved ~1 week (not 2-3 weeks as initially thought)
- Figma generated HTML/CSS/basic JSX
- Still need all functionality (API, Redux, logic)
- **Work Notes Feature:** UI done, partial functionality (emoji, doc selection)
- Still need: Backend API integration, @mentions, notifications
- Saved: ~2-3 days
---
## 🚨 Risks & Mitigation
### Current Risks:
1. **Backend Setup Delay:** If BE-002 (database) takes longer, it blocks everything
- **Mitigation:** Prioritize database schema completion this week
2. **API Integration Complexity:** Frontend-backend integration may reveal issues
- **Mitigation:** Early API testing, clear documentation, Postman collections
3. **TAT Calculation Logic:** Complex business rules for working days
- **Mitigation:** Dedicated unit tests, test scenarios document
### Advantages We Have:
1. ✅ Frontend UI 80% extracted from Figma (saves ~1 week)
2. ✅ Mobile responsive design included (saves testing time)
3. ✅ Work notes UI + partial functionality (saves 2-3 days)
4. ✅ Clear requirements from documentation
5. ✅ Modern tech stack (TypeScript, React 19, Node.js 22)
6. ✅ No need to design UI (Figma already provided)
### Challenges We Face:
1.**False sense of completion:** UI looks done but needs 84% more work
2.**Integration complexity:** Each page needs API + Redux + validation
3.**Backend dependency:** Frontend blocked until APIs are ready
4.**TAT logic complexity:** Working days calculation is non-trivial
5. ⚠️ **SSO uncertainty:** May need to refactor auth later
---
## 📅 Key Dates & Milestones
| Date | Week | Milestone | Status |
|------|------|-----------|--------|
| Oct 16-20 | Week 1 | Figma UI Extraction Started | 🔄 80% Complete (Visual Only) |
| Oct 21-25 | Week 2 | Sprint 0 Complete (Foundation) | 🔄 IN PROGRESS |
| Oct 28 - Nov 1 | Week 3 | Authentication Working | ⏳ Target |
| Nov 4-8 | Week 4 | Workflow Creation Started | ⏳ Upcoming |
| Nov 11-15 | Week 5 | Workflow Creation Complete | ⏳ Upcoming |
| Nov 18-22 | Week 6 | Approvals 50% | ⏳ Upcoming |
| Nov 25-29 | Week 7 | Approvals Complete | ⏳ Upcoming |
| Dec 2-6 | Week 8 | Documents & Work Notes | ⏳ Upcoming |
| Dec 9-13 | Week 9 | Dashboard & AI | ⏳ Upcoming |
| Dec 16-20 | Week 10 | Testing Phase | ⏳ Upcoming |
| Dec 23-27 | Week 11 | **PRODUCTION LAUNCH** 🚀 | ⏳ Revised Target |
**Timeline Adjustment:** +1 week due to realistic frontend effort assessment
---
## 💡 Recommendations for Success
### For Backend Team:
1. **This Week:** Focus 100% on database schema (BE-002) - this is critical path
2. **Next Week:** Authentication APIs must be solid for frontend integration
3. **Use Swagger:** Document APIs as you build them
4. **Test Early:** Use Postman collections for quick testing
5. **Communication:** Sync with frontend daily on API contracts
### For Frontend Team:
1. **🔥 THIS WEEK (CRITICAL):** Complete Sprint 0 foundation
- Finish last 20% UI extraction (1-2 days)
- **Setup Redux store with ALL slices** (2-3 days) ← MUST DO
- **Configure Axios service layer** (1 day) ← MUST DO
- Implement route guards (1 day)
- Without these, you CANNOT integrate with backend!
2. **Understand the Reality:**
- Having UI ≠ Having functionality
- Every page needs:
- Redux actions/reducers connected
- API service calls implemented
- Form validation logic
- Error handling
- Loading states
- Success/failure notifications
- Example: Login page needs ~1 day AFTER backend API is ready
3. **Don't Underestimate Integration:**
- Each form needs validation (1-2 hours)
- Each API call needs error handling (1 hour)
- Each list needs loading skeleton (1 hour)
- Each action needs success/error toast (30 min)
- Total: API integration ≈ 30-40% of total frontend work
4. **Prepare for Sprint 1:**
- Review auth API contracts from backend team
- Plan Redux auth flow (login → store token → redirect)
- Understand JWT storage strategy
- Plan form validation rules
5. **Work Smart:**
- Create reusable hooks (useApi, useForm, useNotification)
- Create reusable validation functions
- Create reusable error handling
- Don't repeat code across pages
### For Both Teams:
1. **Daily Standup:** Quick 15-min sync every morning
- What did you complete?
- What are you working on today?
- Any blockers?
- Any dependencies on other team?
2. **Integration Points:** Test API integration early and often
- Backend: Provide Postman collection with example requests
- Frontend: Test API calls as soon as endpoints are ready
- Don't wait until sprint end to integrate!
3. **Code Review:** Review each other's code for consistency
- All PRs need 1 approval before merge
- Check for TypeScript errors
- Check for security issues
- Check for code duplication
4. **Git Workflow:** Use feature branches, PR reviews mandatory
- Branch naming: `feature/TASK-BE-001-repo-setup`
- Commit messages: Follow conventional commits
- Squash commits before merge
5. **Realistic Expectations:**
- ✅ You have good UI foundation (16% done)
- ❌ You're not 60% done (common misconception)
- 💪 You have 84% of challenging work ahead
- 🎯 Focus on quality, not speed
- 📅 10-11 weeks is realistic, don't rush
---
**Document Prepared By:** .NET Expert Team
**Last Updated:** October 23, 2025
**Status:** ✅ Updated with REALISTIC Progress Assessment
**Total Estimated Duration:** 10-11 weeks (Target: End Dec 2025 / Early Jan 2026)
**Current Progress:** 10% Complete (Week 2 of 11)
**Frontend Reality:** 80% UI ≠ 80% Complete (Actually 16% complete)
---
## Quick Reference
### Backend Ports
- Development: `http://localhost:5000`
- API Docs: `http://localhost:5000/api-docs`
- Health Check: `http://localhost:5000/health`
### Frontend Ports
- Development: `http://localhost:3000`
### Databases
- PostgreSQL: `localhost:5432`
- Database Name: `re_workflow_db`
### Key Environment Variables
**Backend:**
- `NODE_ENV=development`
- `PORT=5000`
- `DB_HOST=localhost`
- `JWT_SECRET=your_secret_key`
**Frontend:**
- `REACT_APP_API_BASE_URL=http://localhost:5000/api/v1`
---
## 🎯 FRONTEND DEVELOPER GUIDE: What to Build Each Week
### ⚠️ REALITY CHECK BEFORE YOU START:
**"We have 80% UI from Figma" does NOT mean "We're 80% done"**
**What it ACTUALLY means:**
- You have pretty buttons, inputs, and layouts (20% of total work)
- You still need to build the "brain" (80% of total work):
- Redux state management
- API integration
- Form validations
- Error handling
- Loading states
- Business logic
- Testing
**Current True Completion:** 16% (not 80%)
---
### 📅 Week-by-Week Frontend Build Plan
#### **WEEK 2 (THIS WEEK - CRITICAL FOUNDATION)**
**🔥 Priority 1: Complete UI Extraction (1-2 days)**
- Finish remaining 20% components
- Fix any styling bugs
- Ensure mobile responsive works on all breakpoints
- **Deliverable:** 100% UI extraction
**🔥 Priority 2: Redux Store Setup (2-3 days) ← CANNOT SKIP**
Create these files:
1. `src/redux/store.ts` - Configure Redux store
2. `src/redux/hooks.ts` - Typed useDispatch and useSelector
3. `src/redux/slices/authSlice.ts` - User auth state
4. `src/redux/slices/workflowSlice.ts` - Workflows state
5. `src/redux/slices/approvalSlice.ts` - Approvals state
6. `src/redux/slices/notificationSlice.ts` - Notifications state
7. `src/redux/slices/documentSlice.ts` - Documents state
8. `src/redux/slices/workNoteSlice.ts` - Work notes state
9. `src/redux/slices/participantSlice.ts` - Participants state
10. `src/redux/slices/uiSlice.ts` - UI state (modals, loading)
**🔥 Priority 3: Axios Service Layer (1 day) ← CANNOT SKIP**
Create these files:
1. `src/services/api.ts` - Axios instance with interceptors
2. `src/services/auth.service.ts` - Auth API calls
3. `src/services/workflow.service.ts` - Workflow API calls
4. `src/services/approval.service.ts` - Approval API calls
5. `src/services/document.service.ts` - Document API calls
6. `src/services/notification.service.ts` - Notification API calls
7. `src/services/workNote.service.ts` - Work note API calls
8. `src/services/participant.service.ts` - Participant API calls
9. `src/services/dashboard.service.ts` - Dashboard API calls
10. `src/services/user.service.ts` - User API calls
**Priority 4: Route Guards (1 day)**
- Create `PrivateRoute` component
- Create `PublicRoute` component
- Protect all authenticated routes
**End of Week 2:** Foundation complete, ready for integration
---
#### **WEEK 3: Authentication Pages Integration**
**Prerequisite:** Backend auth APIs must be ready (BE-101, BE-102)
**Login Page (1 day):**
- Connect form to Redux loginUser action
- Add email validation (regex)
- Add password validation (required)
- Handle form submit
- Call auth API via Redux thunk
- Store JWT token in localStorage + Redux
- Handle errors (401, network errors)
- Show loading state on button
- Redirect to dashboard on success
- Add "Remember Me" functionality
- **Deliverable:** Working login
**Registration Page (0.5 days):**
- Connect form to Redux registerUser action
- Validate all fields (name, email, password, employee ID)
- Password strength indicator
- Confirm password match
- Call register API
- Show success message
- Redirect to login
- **Deliverable:** Working registration
**Password Reset (0.5 days):**
- Forgot password page with email input
- Reset password page with new password
- Connect to backend APIs
- **Deliverable:** Working password reset
**User Profile (0.5 days):**
- Fetch current user from API
- Display in header dropdown
- Edit profile modal
- Update profile API integration
- **Deliverable:** Working profile management
**End of Week 3:** Users can login, register, reset password, edit profile
---
#### **WEEKS 4-5: Workflow Creation Wizard (2 weeks)**
**Week 4: Steps 1-3 (Core Workflow)**
**Template Selection (0.5 days):**
- Connect selection to Redux
- Save choice in workflow state
- Enable/disable based on selection
**Basic Information (1 day):**
- Connect form to Redux
- Validate title (required, max 500 chars)
- Validate description (required, max 5000 chars)
- Integrate rich text editor
- Validate priority selection
- Save to Redux workflow state
- **Complex:** Rich text editor integration
**Approval Workflow Builder (2-3 days) ← MOST COMPLEX:**
- Dynamic level creation (add/remove)
- User search for @mention
- Call user search API as user types
- Display dropdown with results
- Handle selection
- Validate each level:
- Level name (optional)
- Approver (required)
- TAT value (required, > 0)
- **Real-time TAT calculation:**
- Sum all level TATs
- Calculate total hours/days
- Display prominently
- Approval flow summary (live preview)
- Save all levels to Redux
- Validate max 10 levels
- Validate unique approvers
- **Challenge:** Complex form with dynamic fields + real-time calculation
**Week 5: Steps 4-6 (Finalization)**
**Participants & Access (1 day):**
- User search for spectators
- Add multiple spectators
- Display as chips
- Save to Redux
- **Deliverable:** Spectator management
**Documents Upload (1 day):**
- Implement drag-drop (react-dropzone)
- Validate file type
- Validate file size (10MB)
- Show upload progress
- Multiple file upload
- Google Docs/Sheets links
- Save metadata to Redux
- **Challenge:** File upload with progress tracking
**Review & Submit (1 day):**
- Display complete summary from Redux
- Edit buttons (navigate back)
- **Save as Draft:**
- Call POST /api/v1/workflows (is_draft=true)
- Save workflow ID
- Navigate to My Requests
- **Submit Request:**
- Upload all documents (multiple API calls)
- Create workflow (POST /api/v1/workflows)
- Add approval levels (multiple POST calls)
- Add spectators (multiple POST calls)
- Submit workflow (PATCH /api/v1/workflows/:id/submit)
- Handle errors at each step
- Show progress indicator
- Navigate to request detail on success
- **Challenge:** Multi-step API orchestration
**API Integration & Testing (2 days):**
- Connect all wizard steps to backend
- Handle errors
- Test complete flow end-to-end
- Fix bugs
- **Deliverable:** Working workflow creation
**End of Week 5:** Users can create workflows with approvals, spectators, documents
---
#### **WEEKS 6-7: Request Management & Approval Actions (2 weeks)**
**Week 6: Request Listing Pages (1 week)**
**My Requests Page (1.5 days):**
- Fetch workflows via Redux (GET /api/v1/workflows/my-requests)
- Display loading skeleton while fetching
- Handle empty state (no requests)
- Handle error state
- Implement tabs (Total, In Progress, Approved, Rejected, Draft)
- Filter requests by tab
- Implement search (debounced)
- Implement filters (status, priority, date range)
- Implement sorting
- Implement pagination
- Connect click to navigate to detail
- **Deliverable:** Functional request listing
**Open & Closed Requests (1 day):**
- Similar to My Requests
- Different API endpoints
- Show conclusion remarks for closed requests
- **Deliverable:** All listing pages working
**Request Detail Overview (1.5 days):**
- Fetch workflow details (GET /api/v1/workflows/:id)
- Display all information
- Fetch and display TAT status
- Calculate TAT progress percentage
- Color-code progress bar
- Display spectators
- Show quick actions (based on user role)
- **Deliverable:** Request detail page
**Week 7: Tabs & Actions (1 week)**
**Workflow Tab (1 day):**
- Fetch approval hierarchy
- Display approval timeline
- Show status for each level
- Display TAT for each level
- Show approver comments
- **Deliverable:** Approval timeline view
**Documents Tab (1 day):**
- Fetch documents
- Display document list
- Implement PDF preview modal
- Implement image preview modal
- Implement download
- **Deliverable:** Document viewing
**Activity Tab (1 day):**
- Fetch activities
- Display timeline
- Group by date
- Filter by type
- **Deliverable:** Activity timeline
**Approve/Reject Modals (1.5 days):**
- Create modal components
- Validate mandatory comments
- Call approve/reject APIs
- Handle success/errors
- Refresh page after action
- **Deliverable:** Approval actions working
**Add Approver/Spectator (0.5 days):**
- User search
- Call add APIs
- Refresh page
- **Deliverable:** Add participants working
**End of Week 7:** Complete request management + approval actions
---
#### **WEEK 8: Documents, Work Notes & Dashboard**
**Document Upload Integration (1 day):**
- Connect upload to API
- Show upload progress (0-100%)
- Handle upload errors
- **Deliverable:** Document upload working
**Work Notes API Integration (1 day):**
- Connect chat to backend API
- Fetch messages
- Send messages
- Add reactions
- Parse @mentions
- **Deliverable:** Work notes fully functional
**Dashboard (2 days):**
- Fetch statistics API
- Display metric cards
- Integrate charts with real data
- Fetch recent activities
- Fetch pending actions
- **Deliverable:** Working dashboard
**End of Week 8:** Documents, collaboration, dashboard complete
---
#### **WEEK 9: Notifications, Filters & Polish**
**Notification System (1 day):**
- Fetch notifications from API
- Display in bell dropdown
- Mark as read
- Implement polling (every 30 sec)
- Toast for high-priority
- **Deliverable:** Notifications working
**Search & Filters (1 day):**
- Implement search across pages
- Implement filter panels
- URL query params
- **Deliverable:** Search/filter working
**Conclusion & Closure (1 day):**
- Connect to AI conclusion API
- Edit functionality
- Close workflow API
- **Deliverable:** Workflow closure working
**Responsive & Polish (1 day):**
- Fix mobile issues
- Add loading skeletons everywhere
- Add error boundaries
- Accessibility improvements
**End of Week 9:** All features functional
---
#### **WEEK 10: Testing & Deployment**
**Testing (3 days):**
- Write unit tests for components
- Write Redux slice tests
- Integration tests
- Fix bugs found during testing
**Deployment (2 days):**
- Production build
- Docker setup
- CI/CD pipeline
- Deploy to GCP
**End of Week 10:** Production ready! 🚀
---
## 📊 FINAL REALITY CHECK FOR STAKEHOLDERS
### Common Misconceptions vs Reality:
| Misconception | Reality | Impact |
|---------------|---------|--------|
| "80% UI = 80% done" | "80% UI = 16% done" | +6 weeks timeline |
| "Just connect APIs" | "Build Redux, API layer, validations, logic" | +4 weeks effort |
| "Work notes complete" | "Work notes UI done, need backend integration" | +1 week |
| "6 weeks total" | "10-11 weeks realistic" | +4-5 weeks |
| "Launch Dec 15" | "Launch Dec 27 / Early Jan" | +2 weeks |
### Honest Timeline Assessment:
**Optimistic (if everything goes perfect):** 9 weeks
**Realistic (with normal challenges):** 10-11 weeks
**Pessimistic (if issues arise):** 12-13 weeks
**Recommended Target:** Early January 2026 (11-12 weeks)
---
## 💡 FINAL RECOMMENDATIONS
### For Project Manager:
1. **Set realistic expectations** with stakeholders
2. **Communicate:** "UI looks done but needs integration work"
3. **Timeline:** Plan for 10-11 weeks, not 6-8 weeks
4. **Buffer:** Add 1-2 weeks buffer for unforeseen issues
5. **Milestones:** Weekly demos to show actual progress
### For Frontend Team Lead:
1. **This week:** Complete Sprint 0 foundation (Redux + API layer)
2. **Don't rush:** Build it right, don't cut corners
3. **Reusability:** Create hooks and utilities to avoid duplication
4. **Testing:** Test as you build, not at the end
5. **Communication:** Daily sync with backend on API contracts
### For Backend Team Lead:
1. **This week:** Database schema is CRITICAL - blocks everything
2. **Documentation:** Document APIs in Swagger as you build
3. **Postman:** Share collection with frontend team
4. **Testing:** Use Postman to test before frontend integration
5. **Communication:** Notify frontend when APIs are ready
### Success Criteria:
**Week 2:** ✅ Foundation complete (Redux, API layer, DB)
**Week 3:** ✅ Authentication working end-to-end
**Week 5:** ✅ Can create and submit workflows
**Week 7:** ✅ Can approve/reject workflows
**Week 9:** ✅ All features functional
**Week 11:** ✅ Production deployment
---
**🎉 YOU'VE GOT THIS! Focus on building quality software, one sprint at a time. Good luck! 🚀**
---
## 🎯 EXECUTIVE SUMMARY: Where We Stand (REALISTIC ASSESSMENT)
### What's Actually Complete ✅
1. **Frontend UI:** 80% extracted via Figma (visual components ONLY)
- ⚠️ This is just HTML/CSS/JSX with dummy data
- No functionality, no API calls, no state management
2. **Frontend Packages:** All dependencies installed and resolved
3. **Work Notes Feature:** UI complete + basic functionality (emoji, doc selection)
- Still needs: Backend API integration, @mentions, real data
4. **Backend Repository:** 70% setup complete
5. **Mobile Responsive:** All UI is responsive (320px - 1920px)
### What's NOT Complete ❌ (Common Misconception)
1. **Redux Store:** 0% - Not even created yet
2. **API Service Layer:** 0% - Not configured
3. **Form Validations:** 0% - All forms accept any input
4. **API Integration:** 0% - Nothing connects to backend
5. **Business Logic:** 0% - No TAT calculations, no workflows
6. **Authentication:** 0% - Login UI exists but doesn't work
7. **Route Guards:** 0% - All routes are publicly accessible
8. **Error Handling:** 0% - No error messages
9. **Loading States:** 0% - No spinners or skeletons
### What's In Progress 🔄
1. **Backend Setup:** Completing repository (30% remaining)
2. **Frontend UI Extraction:** Completing last 20% of Figma extraction
3. **Work Notes:** Adding remaining functionality
### What's Critical This Week 🔥
1. **Complete Frontend Sprint 0 (This Week):**
- ✅ Finish UI extraction (20% remaining) - 1-2 days
- 🔥 Setup Redux store with all slices - 2-3 days (CRITICAL)
- 🔥 Configure Axios service layer - 1 day (CRITICAL)
- 🔥 Implement route guards - 1 day
- Total: 4-5 days of work
2. **Complete Backend Sprint 0 (This Week):**
- 🔥 BE-002: Database schema MUST be done - 1 day (BLOCKS EVERYTHING)
- BE-003: Backend configuration - 0.5 days
- BE-004: Sequelize ORM setup - 1 day
3. **Start Sprint 1 (Next Week):**
- Backend: Auth APIs (BE-101)
- Frontend: Connect login/register pages
### Time to Production 🚀
- **Estimated:** 9 more weeks (10 weeks total)
- **Target Launch:** End of December 2025 / Early January 2026
- **Current Progress:** 10% complete (realistic)
- **Confidence Level:** Medium (more work than initially thought)
### Reality Check 📊
**Initial Assumption:** "Figma UI = 60% complete"
**Reality:** "Figma UI = 16% complete"
**Why the Gap?**
- Figma only gives you visual components (20% of work)
- Still need to build:
- Redux state management (20% of work)
- API integration (30% of work)
- Validations & logic (20% of work)
- Testing & polish (10% of work)
**Calculation:**
- 80% of 20% = 16% total frontend work complete
- 84% of frontend work still remaining
### Key Success Factors 💪
1. ✅ Frontend UI base ready (saves ~1 week)
2. ✅ Mobile responsive from start (saves testing time)
3. ✅ Clear requirements and documentation
4. ✅ Modern, proven tech stack
5. ❌ Still need significant integration work
6. ⏳ Backend and frontend must sync closely
### Immediate Next Steps (This Week & Next)
#### **WEEK 2 (Current Week) - Complete Sprint 0**
**Backend Priority (2.5 days):**
1. 🔥 BE-002: Setup PostgreSQL database (1 day) ← CRITICAL - BLOCKS EVERYTHING
- Install PostgreSQL 16
- Create database
- Run schema SQL file (from documentation)
- Create all 15+ tables with indexes
- Setup triggers and views
- Verify database connection
2. BE-003: Backend configuration (0.5 days)
- Complete Express.js setup
- Configure all middleware
- Setup Winston logger
- Create error handlers
- Test health check endpoint
3. BE-004: Sequelize ORM setup (1 day)
- Configure Sequelize connection
- Create all TypeScript models
- Define model associations
- Test database queries
**Frontend Priority (4 days):**
1. 🔥 Complete UI extraction - 20% remaining (1-2 days)
- Finish any incomplete pages
- Fix any styling issues
- Ensure all dummy data displays correctly
2. 🔥 FE-003: Setup Redux Store (2-3 days) ← CRITICAL
- Create `src/redux/store.ts`
- Create typed hooks (`src/redux/hooks.ts`)
- Create all Redux slices:
- authSlice (user, token, isAuthenticated)
- workflowSlice (workflows, currentWorkflow, drafts)
- approvalSlice (approvals, currentLevel)
- notificationSlice (notifications, unreadCount)
- documentSlice (documents, uploadProgress)
- workNoteSlice (notes, mentions)
- participantSlice (participants, spectators)
- uiSlice (loading, errors, modals)
- Test Redux DevTools
- Setup Redux persist for auth
3. 🔥 FE-004: Configure Axios Service Layer (1 day) ← CRITICAL
- Create `src/services/api.ts` (Axios instance)
- Configure base URL from .env
- Setup request interceptor (add JWT token to headers)
- Setup response interceptor (handle errors)
- Handle token refresh logic (on 401)
- Create all service files:
- `auth.service.ts`
- `workflow.service.ts`
- `approval.service.ts`
- `document.service.ts`
- `notification.service.ts`
- `workNote.service.ts`
- `participant.service.ts`
- `dashboard.service.ts`
- `user.service.ts`
4. FE-005: Implement Route Guards (1 day)
- Create `PrivateRoute` component
- Create `PublicRoute` component
- Protect all authenticated routes
- Redirect to login if not authenticated
- Redirect to dashboard if already logged in (for login page)
**End of Week 2 Target:**
- ✅ Backend: Database ready, ORM working, server running
- ✅ Frontend: UI 100%, Redux configured, API layer ready, routes protected
- ✅ Both ready for Sprint 1 (Authentication integration)
---
#### **WEEK 3 - Sprint 1: Authentication Integration**
**Backend (4 days):**
1. BE-101: Build authentication APIs (2 days)
- Register, login, logout, token refresh
- Password hashing with bcrypt
- JWT token generation
- Auth middleware
2. BE-102: User management APIs (1 day)
3. BE-103: User profile APIs (1 day)
**Frontend (2.5 days - waiting for backend):**
1. FE-101: Connect login page to backend (1 day)
- Call POST /api/v1/auth/login
- Store JWT in Redux + localStorage
- Handle errors
- Redirect on success
2. FE-102: Connect registration page (0.5 days)
3. FE-103: Connect password reset (0.5 days)
4. FE-104: Connect user profile (0.5 days)
**End of Week 3 Target:**
- ✅ Users can register, login, logout
- ✅ JWT authentication working
- ✅ Protected routes functional
- ✅ User profile management working
---
## 📞 Support & Communication
### Team Collaboration
- **Daily Standup:** 10:00 AM (15 minutes)
- **Weekly Demo:** Friday 3:00 PM
- **Integration Sync:** As needed (Slack/Teams)
### Questions or Blockers?
- **Backend Lead:** Escalate database or API design questions immediately
- **Frontend Lead:** Escalate UI/UX or integration questions
- **Both Teams:** Communicate early and often!
### Success Metrics
- **Sprint Velocity:** Track completed vs planned tasks weekly
- **Code Quality:** Maintain >80% test coverage
- **Integration Success:** All APIs tested before frontend integration
- **Deployment Readiness:** All features tested end-to-end
---
**🎉 CONGRATULATIONS! You're off to a great start with 60% of frontend UI already complete! Let's build something amazing! 🚀**
---
Good luck with the development! 💪