As a developer, I need to create a normalized user model with roles and permissions to support multiple personas and ensure secure access control.
As a frontend developer, implement the Navbar section for the Landing page. This section provides a shared navigation shell across the app, featuring a brand logo, navigation links, a responsive mobile hamburger toggle, and authentication state indicators. Use motion/react for animations, including a path-draw effect for the logo and a slide-in menu for mobile. Ensure the Navbar supports responsive design, collapsing to a hamburger menu below 768px. The Navbar should display different links based on the user's authentication state and the current page path. Acceptance criteria: The Navbar must render on the Landing page, displaying the brand logo with an animated path-draw effect. Navigation links should be visible and functional, with a responsive hamburger toggle for mobile. Auth state indicators ('Sign In' or 'Account') must update based on user login status. The Navbar should not block content and must adhere to the design theme specified in the CSS.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingHeroAnimation section to render an animated garden canvas featuring the 'Review Garden' concept. This section should include a continuous 10-second animation loop using motion/react and GSAP, displaying seeds being planted and growing into vibrant plants. The animation should pause on the first frame when not in motion to ensure clarity of CTAs. The animation consists of three layers: soil, seeds/plants, and interactive overlays. Use Intersection Observer to pause/resume the GSAP timeline when the section leaves/enters the viewport. Ensure the animation scales gracefully across devices without clipping. Acceptance criteria: The Landing page must render the LandingHeroAnimation component exactly once. The animation loop must play on load and repeat every 10 seconds, pausing on the first frame when not in view. The design structure must preserve the layered parallax soil/plant/light theme. No backend integration is required for this section. Access is shared among all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingGardenHover section to provide an interactive hover layer over the animated garden canvas. This section should enable users to hover over growing plants to reveal review details such as star rating, quote snippet, and author profession. Use motion/react for spring-physics animations of popover cards that appear on hover. Ensure the popover cards are positioned correctly and disappear when the hover ends. Acceptance criteria: The Landing page must render the LandingGardenHover component exactly once. Hovering over a plant should reveal a popover with review details, which should spring in and out smoothly. The design must ensure no overflow beyond garden bounds on mobile. No backend integration is required for this section. Access is shared among all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingValue section on the Landing page. This section should articulate the platform's core benefits through 3-4 key value statements, each with supporting copy and icons. Use scroll-triggered animations to reveal the content as the user scrolls into view. The section should include subtle hover animations on value cards. Ensure the animations trigger only once per scroll into view. Acceptance criteria: The LandingValue section must render exactly once on the Landing page. It should display the value statement cards with icons and supporting text. The design must follow the provided layout and theme, with animations implemented using motion/react. The section should be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingFeatures section on the Landing page. This section should showcase profession-specific features for five target industries using interactive cards. Each card should include a profession icon, title, key benefit statement, and signature features. Implement hover animations for subtle expand/highlight transitions. Ensure the layout is responsive, switching from a horizontal carousel on desktop to a stack on mobile. Acceptance criteria: The LandingFeatures section must render exactly once on the Landing page. It should display all five profession cards with accurate details. The design must follow the provided layout and theme, with responsive behavior and hover animations implemented using motion/react. The section should be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingHowItWorks section on the Landing page. This section should display a step-by-step process flow showing how the platform transforms reviews into reputation growth. Use a horizontal timeline or vertical stack with connecting visual elements and scroll-triggered animations. Each step should include a headline, icon, and description. Acceptance criteria: The LandingHowItWorks section must render exactly once on the Landing page. It should display 4-5 sequential steps with connecting visual elements. The design must follow the provided layout and theme, with animations implemented using motion/react and gsap. The section should be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the LandingTestimonials section to display a carousel of customer testimonials. Use motion/react for animations and spring physics for smooth transitions. The section should feature 3-4 testimonials visible at a time on desktop with manual and auto-advance controls, and a vertical stack on mobile. Each testimonial includes a customer avatar, quote, name, profession/title, and optional star rating. Ensure the carousel auto-advances every 5 seconds unless user interaction occurs. Acceptance criteria: The LandingTestimonials section must render on the Landing page, displaying testimonials in a responsive carousel on desktop and a vertical stack on mobile. The carousel should auto-advance every 5 seconds and allow manual navigation. Testimonials must include avatars, quotes, names, professions, and star ratings. The design must match the provided CSS, and the section should be accessible to all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the Footer section for the Landing page. This section is a global footer shared across all app pages, featuring brand/logo, product links (Dashboard, Reviews, Reports, Settings, Jobs, Reminders), company links (About, Blog, Contact), legal links (Privacy, Terms), and social media icons. The footer should have a responsive layout with a multi-column grid on desktop and a single-column stack on mobile. It should use consistent typography and spacing aligned with the platform's teal (#004d40) and amber (#ffab00) accent color scheme. Implement animated link underline reveal and staggered column fade-in using motion/react. Ensure hover effects on links and responsive layout collapse to a single column. The footer should conclude every routed page with consistent navigation and legal information. Acceptance criteria:
- The Footer component must render exactly once on the Landing page.
- Visible controls include brand/logo, product, company, legal links, and social media icons with hover effects.
- The design structure/theme must preserve the teal and amber color scheme with responsive layout.
- No backend integration is required as the footer does not interact with backend data.
- The page's access behavior is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the DashboardSidebar section to provide navigation and quick actions for the dashboard. This section should include links to Overview, Recent Reviews, Active Jobs, Weekly Reports, and Settings, with badges indicating status where applicable. Implement quick action buttons for 'Send Review Reminder' and 'Generate AI Reply'. The sidebar should be responsive, collapsing to a drawer on mobile. Acceptance criteria: The DashboardSidebar must render exactly once on the Dashboard page, providing navigation and quick actions as specified. The design must match the provided CSS, ensuring responsive behavior. No backend integration is required for the simulated quick actions. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the DashboardMetricCards section to display key performance indicators. This section should include four metric cards showing Total Reviews, Average Rating, New Reviews (Pending), and Jobs Completed, with values and comparison to the previous week. Each card should include an icon and color-coded change indicator. Acceptance criteria: The DashboardMetricCards must render exactly once on the Dashboard page, displaying the metrics as specified. The design must match the provided CSS, ensuring responsive behavior. No backend integration is required for this static data display. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the TopImprovementAreas section on the Reports page. This section displays a grid of insights with icons, titles, descriptions, and links to various settings and dashboards. Each insight card includes an icon from lucide-react, a title, a description, and a link with an ArrowRight icon. The section uses a CSS grid layout with responsive design adjustments for different screen sizes. Acceptance criteria: The Reports page must render the TopImprovementAreas component exactly once. The component must display four insight cards with the correct icons, titles, descriptions, and links as specified in the JSX. The design must match the provided CSS, including hover effects and responsive behavior. The links must navigate to the correct pages: '/Settings', '/Reminders', '/Reviews', and '/Dashboard'. The section must be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, and Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
As a frontend developer, implement the TrendChart section on the Reports page. This section displays a line chart showing the average weekly rating trend over time. The chart includes interactive elements such as hoverable points that display tooltips with rating and review count information. The chart is rendered using SVG elements and includes a gradient fill for the area under the line. Acceptance criteria: The Reports page must render the TrendChart component exactly once. The component must display a line chart with correctly plotted points based on the 'reports' prop data. The chart must include interactive tooltips that appear on hover, displaying the correct rating and review count. The design must match the provided CSS, including responsive behavior. The section must be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, and Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Implement and verify the project capability `ai.customization` required by generated downstream tasks. Expose a stable implementation contract and satisfy every linked consumer without frontend mocks.
Implement and verify the project capability `data.jobs` required by generated downstream tasks. Expose a stable implementation contract and satisfy every linked consumer without frontend mocks.
Implement and verify the project capability `notification.preferences` required by generated downstream tasks. Expose a stable implementation contract and satisfy every linked consumer without frontend mocks.
As a developer, I need to create a review model to store user reviews and AI-generated replies, ensuring data integrity and efficient retrieval.
Depends on:#1
Waiting for dependencies
As a developer, I need to create a reminder model to manage automated review reminders for users, ensuring timely notifications.
Depends on:#1
Waiting for dependencies
As a developer, I need to create a report model to generate and store weekly performance reports for users, supporting data-driven insights.
Depends on:#1
Waiting for dependencies
As a developer, I need to implement authentication APIs using JWT to secure user access and manage sessions.
Depends on:#1
Waiting for dependencies
As a frontend developer, implement the LandingHeroHeadline section for the Landing page. This section includes a primary headline, subheadline, and supporting copy that contextualizes the animated garden below. Use motion/react to animate the headline and subheadline with a word-by-word stagger effect on page load. The supporting copy should fade in sequentially after the headline animation completes. Acceptance criteria: The LandingHeroHeadline must render on the Landing page, displaying the primary headline 'Turn Reviews into Reputation Growth' with a staggered word-by-word animation. The subheadline and supporting copy should follow with a similar staggered animation. The section must maintain the design theme and typography as specified in the CSS, and the animations should not compete with the garden animation below.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#10
Waiting for dependencies
As a frontend developer, implement the LoginContainer section to provide a full-height centered container for the login page body. This section should ensure visual centering and a responsive layout for the authentication panel. The desktop layout should use a flexbox row with a teal accent gradient background on the left side, while the login card sits on the right with a white background and shadow. On tablet and mobile, the layout should stack with the accent gradient above the card, centering the card on full width. Ensure the container has a min-height of 100vh to center the card vertically even with short content. Acceptance criteria: The LoginContainer must render exactly once on the Login page, providing vertical and horizontal centering, managing responsive layout shifts (desktop row to mobile stack), and applying visual framing with an accent gradient on larger screens. The section should not require backend integration and should be accessible to all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#10
Waiting for dependencies
As a frontend developer, implement the SignupHero section for the Signup page. This section introduces the signup journey with a heading, subheading, and a brief value proposition. It uses the `motion` library for animations and includes icons for various professions using `lucide-react`. Ensure the section is styled according to the provided CSS, with responsive design for different screen sizes. Acceptance criteria: The SignupHero component must render exactly once on the Signup page. It should display the heading 'Grow your reputation from the roots up' and a subheading explaining the platform's benefits. The section should animate into view with a fade and slide effect. Icons for professions like Dentist, Plumber, etc., should be displayed in a grid format. The design must match the provided CSS, including color and typography. The section should be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor. This section depends on the Navbar from the Landing page.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#10
Waiting for dependencies
As a frontend developer, implement the SettingsNotifications section to manage notification preferences. This section includes toggle switches for enabling/disabling Review Alerts, Weekly Digest, and System Updates, along with a save button. Ensure the component updates state correctly and provides feedback when preferences are saved. Acceptance criteria: The Settings page must render the SettingsNotifications component exactly once, with all toggles and the save button functioning as specified. The design must match the provided CSS, including responsive behavior. The section must integrate with the backend to save notification preferences, requiring the 'notification_preferences' capability. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#53
As a frontend developer, implement the SettingsAICustomization section to customize AI-generated reply behavior. This section includes a dropdown selector for reply tone, a preview area showing a sample AI reply, and a save button. Ensure the component updates state correctly and provides feedback when customization is saved. Acceptance criteria: The Settings page must render the SettingsAICustomization component exactly once, with the dropdown, preview, and save button functioning as specified. The design must match the provided CSS, including responsive behavior. The section must integrate with the backend to save AI customization settings, requiring the 'ai_customization' capability. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#51
As a frontend developer, implement the SettingsAccountManagement section on the Settings page. This section includes displaying profile information (name, email, account type/profession), a button to edit the profile, a button to change the password, and a 'danger zone' button for account deletion. The section uses state hooks to manage modal visibility for password change and account deletion confirmation. Ensure the password change form validates input for matching passwords and minimum length. The account deletion button triggers a confirmation modal. The section must adhere to the provided CSS styles for layout and design consistency. Acceptance criteria: 1) The SettingsAccountManagement component must render exactly once on the Settings page. 2) The profile information, edit profile button, change password button, and danger zone delete button must be visible and functional. 3) The design must match the provided CSS, including responsive behavior. 4) The password change and account deletion actions must trigger appropriate modals with correct validation and state management. 5) The page is accessible by all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#1
Waiting for dependencies
As a frontend developer, implement the JobsList section for the Jobs page. This section displays a list of job cards with filtering, sorting, and quick-action capabilities. Each job card includes a title, customer name, job date, status badge, profession icon, and quick-action buttons ('Mark Complete', 'Send Reminder', 'View Details'). The section manages the entire jobs workflow state, including search, filter, sort, and job actions. It must handle loading, error, and empty states. Acceptance criteria: The Jobs page must render the JobsList section exactly once. The section must display job cards with accurate data and support search, filter, and sort functionalities. The quick-action buttons must perform their respective actions, updating the job state. The design must adhere to the CSS styles, including responsive behavior. The section must be accessible only by the Plumber persona.
Page access: Plumber only. Verify the existing restricted-access contract; change authentication or RBAC only in a task that explicitly owns it.
Depends on:#1#52
Waiting for dependencies
As a Backend Developer, implement APIs to support the Dashboard functionality, providing key metrics and options for users. Ensure data isolation in a multi-tenant architecture.
Depends on:#1
Waiting for dependencies
As a Backend Developer, implement APIs for managing customer data and interactions. Ensure data isolation in a multi-tenant architecture.
Depends on:#1
Waiting for dependencies
As a Backend Developer, implement APIs for tracking and managing job-related information. Ensure data isolation in a multi-tenant architecture.
Depends on:#1
Waiting for dependencies
As a Backend Developer, implement a multi-tenant architecture to ensure data isolation between different businesses. Each business should only have access to its own data, and the system should enforce this isolation at the database level. Acceptance criteria: The database schema must support multi-tenancy, and all API endpoints must enforce tenant isolation.
Depends on:#1
Waiting for dependencies
As a developer, I need to implement APIs for managing reviews, including AI-generated replies, to support user interactions.
Depends on:#5#1#2
Waiting for dependencies
As a developer, I need to implement APIs for managing review reminders to automate customer feedback collection.
Depends on:#1#3#5
Waiting for dependencies
As a developer, I need to implement APIs for generating and retrieving weekly performance reports to provide users with actionable insights.
Depends on:#5#4#1
Waiting for dependencies
As a developer, I need to implement integration with Google Business API to sync and manage user reviews for enhanced visibility.
Depends on:#1#5
Waiting for dependencies
As a frontend developer, implement the LandingCTA section to provide a primary call-to-action with a headline, subheadline, and two buttons: 'Sign In' and 'Get Started'. Use motion/react for magnetic button effects and a subtle pulsing glow background. Clicking 'Sign In' should route to /login, and 'Get Started' should route to /signup. Ensure the section maintains visual prominence with brand colors and spacing. Acceptance criteria: The LandingCTA section must render on the Landing page with a headline, subheadline, and two buttons. The buttons must have a magnetic effect and route to the correct pages on click. The background should have a subtle pulsing glow. The section must be accessible to all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#5
Waiting for dependencies
As a frontend developer, implement the LoginHeadline section to display a static headline and supporting text at the top of the authentication card. The headline should read 'Welcome back' or 'Sign in to your account', with supporting text explaining the login purpose and reinforcing platform value, such as 'Access your reputation dashboard, AI-generated replies, and weekly reports'. This section is purely informational with no interaction. Acceptance criteria: The LoginHeadline must render exactly once within the LoginContainer on the Login page, presenting a welcoming headline and reinforcing platform value in supporting text. The design must match the provided styles and be accessible to all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#20
Waiting for dependencies
As a frontend developer, implement the LoginAuthPanel section to provide the core authentication form panel. This section should include email/password inputs, a remember-me checkbox, a submit button, a forgot-password link, and social login options (Google, optional others). All form state (email, password, rememberMe, isLoading, errorMessage) must be managed here. Implement form validation, error messages, loading state, and submit handler. On successful login, route the user to /Dashboard. Include social login buttons below a divider ('or continue with'). Acceptance criteria: The LoginAuthPanel must render exactly once within the LoginContainer on the Login page, managing email/password form state and validation, handling form submission and error display, and routing to the Dashboard on successful login. The section must integrate with the backend for authentication using the 'api.auth' capability and be accessible to all personas.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#20#5
Waiting for dependencies
As a frontend developer, implement the SignupForm section for the Signup page. This section includes a complete signup form with fields for email, password, profession selection, business details, and terms acceptance. It features real-time validation feedback and handles form state, validation, and submission logic. The form must submit data to the backend and handle success and error states. Acceptance criteria: The SignupForm component must render exactly once on the Signup page. It should include inputs for email, password, confirm password, profession, business name, business phone, and Google Business URL, along with a terms acceptance checkbox. The form should provide real-time validation and display error messages as needed. On successful submission, the user should be redirected to the Dashboard. The design must match the provided CSS, including responsive behavior. The section should be accessible to all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor. This section requires backend integration for account creation and depends on the 'Create Auth API' task.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#5
Waiting for dependencies
As a frontend developer, implement the DashboardPageHeader section to display a personalized greeting, current date/time, and a quick status summary. This section should use React hooks to manage the current time and dynamically update the greeting based on the time of day. The greeting should include the user's name, and the date should be formatted in 'en-CA' locale. The summary metrics should display static values for reviews this week, average rating, and jobs in progress. Acceptance criteria: The DashboardPageHeader must render exactly once on the Dashboard page, displaying the greeting, date, time, and summary metrics as specified. The design must match the provided CSS, ensuring responsive behavior. No backend integration is required for this static data display. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#23#20
Waiting for dependencies
As a Backend Developer, implement a scheduler to generate and send weekly performance reports to users. The scheduler should trigger report generation every Monday at 8 AM EST and email the reports to users. Acceptance criteria: The scheduler must reliably trigger report generation and delivery, handle failures gracefully, and log all activities for auditing.
Depends on:#4
Waiting for dependencies
As a Backend Developer, implement APIs for automating review reminders to gather customer feedback efficiently. Ensure data isolation in a multi-tenant architecture.
Acceptance criteria: The API must support creating, updating, and deleting reminders, and ensure reminders are sent at the scheduled time. The API must also log all reminder activities for auditing purposes.
Depends on:#1#3
Waiting for dependencies
As a frontend developer, implement the CustomersList section to manage and display a comprehensive list of customers with search, filter, and sort capabilities. This section should include a search input, profession and status filters, a sort dropdown, and a table or card grid displaying customer details such as name, profession, location, review count, average rating, and status. It should support actions like view, edit, and delete, along with pagination. Acceptance criteria: The Customers page must render the CustomersList component exactly once. The list must allow searching by name or email, filtering by profession and status, and sorting by rating or date joined. Each customer entry must support view, edit, and delete actions. The section must be accessible to all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor) as it is shared across these roles. Backend integration is required for customer data retrieval and manipulation.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#55
Waiting for dependencies
As a frontend developer, implement the DashboardRecentReviews section to display recent reviews with filtering and sorting capabilities. This section should show review cards with author name, rating, text excerpt, status, date, and action buttons. Include filter controls for status and sort options. Clicking a review should navigate to the Reviews page with the selected review ID. Acceptance criteria: The DashboardRecentReviews must render exactly once on the Dashboard page, displaying reviews and allowing filtering and sorting as specified. The design must match the provided CSS, ensuring responsive behavior. Requires backend integration for review data retrieval. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#6#9
Waiting for dependencies
As a frontend developer, implement the DashboardActiveJobs section to display active and recent jobs for plumbers and HVAC professionals. This section should include job cards showing job title, address, status, assigned technician, due date, and client name. Implement filter controls to filter jobs by status (All, In Progress, Completed, Pending) and action buttons for 'View Job Detail' and 'Send Review Reminder' after completion. Clicking a job should navigate to the Jobs page with the selected job ID. Ensure the design matches the provided CSS styles and that the section is accessible to all personas listed in the access context. Acceptance criteria: 1) The DashboardActiveJobs component must render exactly once on the Dashboard page. 2) The section must display job cards with correct details and status badges. 3) Filter controls must allow filtering by job status. 4) Action buttons must function as described, with 'Send Review Reminder' only active for completed jobs. 5) Clicking a job must navigate to the Jobs page with the correct job ID. 6) The section must adhere to the design structure and theme from the provided CSS. 7) The section must be accessible to all personas listed in the access context.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#7
Waiting for dependencies
As a frontend developer, implement the DashboardReportsPreview section to display the latest weekly report summary and provide navigation to full reports. This section should show the current week's report card with key metrics (total reviews, average rating, new reviews, replied count) and a 'View Full Report' button. Include a 'View All Reports' link to navigate to the Reports page and optionally display a previous week summary for comparison. Ensure the design matches the provided CSS styles and that the section is accessible to all personas listed in the access context. Acceptance criteria: 1) The DashboardReportsPreview component must render exactly once on the Dashboard page. 2) The section must display the current week's report card with accurate metrics. 3) The 'View Full Report' button must navigate to the full report page. 4) The 'View All Reports' link must navigate to the Reports page. 5) The section must adhere to the design structure and theme from the provided CSS. 6) The section must be accessible to all personas listed in the access context.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#8
Waiting for dependencies
As a frontend developer, implement the ReviewsList section to display a scrollable list of reviews as cards. Each card should show the author, star rating, review excerpt, date, source (Google), and status badge (New/Responded). Cards must be clickable to open the detailed review view. Implement filters for status (New, Responded, All), rating (5-star to 1-star), and sort order (Newest, Oldest, Highest Rating). Ensure the section responds to applied filters and sort order, and shows an empty state when no reviews match filters. The section should own the complete 'filter_and_sort' workflow using a canonical React state/data source. Acceptance criteria: The ReviewsList component must render exactly once on the Reviews page, displaying the filtered and sorted reviews. The design structure and theme must match the provided CSS. The component must integrate with the backend to fetch reviews data, requiring the 'api.review' capability. The page is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor. The section must link to the Reports page conditionally based on persona access.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#25#6
Waiting for dependencies
As a frontend developer, implement the ReviewDetail section to display detailed information of a selected review. This includes full review content, author info, rating, source, and date. Below the review, implement an AI-generated reply composer with a textarea for drafting/editing the reply, and action buttons (Generate AI Reply, Edit, Save, Post Reply, Discard). The reply composer should be visible only when not yet replied or in edit mode, and show a confirmation state after posting. Acceptance criteria: The ReviewDetail component must render when a review card is clicked in the ReviewsList. The design structure and theme must match the provided CSS. The component must manage the reply workflow, including AI generation and posting, requiring the 'api.review' capability. The page is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#6
Waiting for dependencies
As a frontend developer, implement the ReportsHeader section for the Reports page. This section includes a page title, subtitle, date range picker, and export controls. The export controls should allow exporting the report as PDF, CSV, or via email. The date range picker should update the report view based on the selected range. Ensure the export menu opens and closes correctly when interacting with the export button. Acceptance criteria: The ReportsHeader must render on the Reports page, displaying the title 'Reports' and subtitle. The date range picker must allow selection from predefined ranges ('Last 4 Weeks', 'Last 8 Weeks', etc.) and update the state accordingly. The export button must toggle the export menu, which should offer options to export as PDF, CSV, or email. The section must be responsive, stacking elements on mobile. Access is shared among all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor).
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#8#25
Waiting for dependencies
As a frontend developer, implement the SettingsPageHeader section to introduce the Settings page. This section includes a main heading 'Settings' and a description detailing the page's functionalities. Ensure the design matches the provided CSS styles, with responsive adjustments for different screen sizes. Acceptance criteria: The Settings page must render the SettingsPageHeader component exactly once, displaying the heading and description as specified. The design must adhere to the CSS layout, including responsive behavior. No backend integration is required for this static section. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#25
Waiting for dependencies
As a frontend developer, implement the SettingsGoogleIntegration section to manage Google Business profile connections. This section displays the current connection status, business email, connection date, and includes buttons for connecting, disconnecting, and re-authorizing the Google Business account. Ensure the component handles state changes for connection status and displays toast notifications for user actions. Acceptance criteria: The Settings page must render the SettingsGoogleIntegration component exactly once, with all interactive elements functioning as specified. The design must match the provided CSS, including responsive behavior. The section must integrate with the backend to manage Google Business connections, requiring the 'integration.google.business' capability. Access is shared among all personas: Dentist, HVAC Professional, Lawyer, Plumber, Realtor.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#9
Waiting for dependencies
As a frontend developer, implement the JobsHeader section for the Jobs page. This section is a static header that provides context and a title for the Jobs workflow. It includes a headline ('Jobs'), a subheadline explaining the purpose ('Track completed work and send review reminders to gather customer feedback'), and an optional call-to-action or stats summary. The section is read-only with no interaction. Ensure the design matches the provided CSS, including the animation for the header row. Acceptance criteria: The Jobs page must render the JobsHeader section exactly once. The section must display the headline, subheadline, and optional stats summary as per the JSX. The design must adhere to the CSS styles, including responsive behavior. The 'Set up reminders' link must navigate to the Reminders page, which is accessible only by the Plumber persona. The section must depend on the Dashboard page's header task (task ID: 283420c9-0b9f-404c-8c7f-29d04ef7f17f).
Page access: Plumber only. Verify the existing restricted-access contract; change authentication or RBAC only in a task that explicitly owns it.
Depends on:#1#25
Waiting for dependencies
As a frontend developer, implement the RemindersList section for the Reminders page. This section is responsible for displaying and managing all reminders, including sent, pending, and draft reminders. It includes filter and sort controls, reminder cards with status badges, action buttons (resend, edit, delete), and a detailed view toggle for inspecting reminder content and delivery info. The component should own the complete 'reminder_management' workflow using a canonical React state/data source without duplicating state from sibling components. Ensure the section supports filtering by status (all, sent, pending, draft), sorting by creation date, scheduled date, or status, and provides inline actions such as viewing details, resending, editing drafts, and deleting reminders. Implement bulk actions for selected reminders and display an empty state message when no reminders exist. The page title and description, along with quick stats about reminder activity, should be displayed. Acceptance criteria: The Reminders page must render the RemindersList component exactly once. The section must include visible controls for filtering and sorting reminders, action buttons for each reminder, and a modal for detailed views. The design structure and theme must match the provided CSS. The section must integrate with the backend to fetch and manage reminders, using the 'api.reminder' capability. Access to this page is restricted to the Plumber persona.
Page access: Plumber only. Verify the existing restricted-access contract; change authentication or RBAC only in a task that explicitly owns it.
Depends on:#3#7#1
Waiting for dependencies
As a Backend Developer, implement APIs for generating AI replies to reviews using GPT 5.4. Ensure the API can handle requests for generating, customizing, and posting replies. Acceptance criteria: The API must generate replies within 2 seconds, support customization for different personas, and integrate with the existing review management system.
Depends on:#1#6#2
Waiting for dependencies
As a frontend developer, implement the CustomersHeader section to display the page title, breadcrumb navigation, and a primary action button for adding a new customer. This section should orient users and provide quick access to the customer creation workflow. The breadcrumb should allow navigation back to the Dashboard, and the 'Add Customer' button should link to the customer creation page. Acceptance criteria: The Customers page must render the CustomersHeader component exactly once. The header must include a breadcrumb trail ('Dashboard > Customers') and a 'Customers' title. The 'Add Customer' button must be styled as per the design and navigate to '/Customers/New' on click. The section must be accessible to all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor) as it is shared across these roles.
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#25
Waiting for dependencies
As a Tech Lead, verify the end-to-end integration between the Dashboard frontend implementation and the Dashboard backend API. Ensure data flows correctly, API responses are handled properly in the UI, and all interactions work as expected.
Depends on:#54#25
Waiting for dependencies
As a frontend developer, implement the ReportsList section for the Reports page. This section displays a chronological list of past weekly reports, allowing filtering by date range and sorting by various metrics. Each report row should include week date, review count, average rating, engagement change, and an action menu for viewing, exporting, or archiving the report. The section must manage the report selection state and update dependent sections accordingly. Acceptance criteria: The ReportsList must render on the Reports page, displaying reports in a table format with sorting and filtering capabilities. The action menu must provide options to view, export, or archive reports. The section must be responsive and update the selection state correctly. Access is shared among all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor).
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#33#8#4
Waiting for dependencies
As a frontend developer, implement the ReminderCreatePanel section for the Reminders page. This section is responsible for creating and scheduling new review reminders. It includes a job selector dropdown, customer info preview, reminder type selector, message template editor with smart suggestions, scheduled send date/time picker, and send button with confirmation. The panel should be sticky on desktop and collapsible on mobile. Ensure the following acceptance criteria are met:
- The ReminderCreatePanel component must render exactly once on the Reminders page.
- Users must be able to select a completed job from a dropdown, which populates the customer info preview.
- The reminder type selector must allow users to choose between 'review', 'survey', and 'thank-you'.
- The message template editor should support customization with templates and AI suggestions.
- Users must be able to set a scheduled send date and time, with validation to prevent past dates.
- The send button must trigger a confirmation message upon successful reminder scheduling.
- The draft/save for later option must allow users to save their progress without sending.
- The section must adhere to the design structure and theme as specified in the provided CSS.
- The section must integrate with the backend to submit reminders, requiring the 'api.reminder' capability.
- Access to this section is restricted to the Plumber persona only.
Page access: Plumber only. Verify the existing restricted-access contract; change authentication or RBAC only in a task that explicitly owns it.
Depends on:#1#7#44
Waiting for dependencies
As a Tech Lead, verify the end-to-end integration between the AI Reply frontend implementation and the AI Reply backend API. Ensure data flows correctly, API responses are handled properly in the UI, and all interactions work as expected.
Depends on:#6#48
Waiting for dependencies
As a Backend Developer, implement a scheduler to periodically generate AI replies for new reviews. The scheduler should run every hour and trigger the AI Reply Generator for any new reviews that have not yet received a reply. Acceptance criteria: The scheduler must reliably trigger AI reply generation, handle failures gracefully, and log all activities for auditing.
Depends on:#48
Waiting for dependencies
As a frontend developer, implement the MetricsOverview section for the Reports page. This section displays four metric cards summarizing the current week's data: total reviews, average rating, engagement change, and response rate. Each card should include an icon, label, large metric value, and optional trend indicator. Acceptance criteria: The MetricsOverview must render on the Reports page, displaying four metric cards with accurate data from the selected report. Each card must show the correct icon, label, value, and trend indicator. The section must be responsive, adapting to different screen sizes. Access is shared among all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor).
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#34#4
Waiting for dependencies
As a frontend developer, implement the SentimentBreakdown section for the Reports page. This section displays a sentiment distribution bar chart showing positive, neutral, and negative review sentiments for the selected report. Each segment should be labeled with count and percentage. Acceptance criteria: The SentimentBreakdown must render on the Reports page, displaying a bar chart with segments for positive, neutral, and negative sentiments. Each segment must be accurately labeled with the count and percentage. The section must be responsive, adapting to different screen sizes. Access is shared among all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor).
Page access: shared by all personas (Dentist, HVAC Professional, Lawyer, Plumber, Realtor). This is verification context and does not request role-specific implementation.
Depends on:#34#4
Waiting for dependencies
No comments yet. Be the first!