daily-tasks

byJatin Yadav

create a daily tasks tracker SPA

LandingTaskFormDashboardTaskCard
Landing

Comments (0)

No comments yet. Be the first!

Project Tasks25

#1

Implement Navbar for Landing

To Do

As a frontend developer, implement the Navbar section for the Landing page. The component uses useState for `scrolled` and `menuOpen` states, and useRef for `innerRef`, `brandRef`, `strokeRef`, and `checkRef`. On mount, a GSAP timeline animates a path-draw of the SVG logo (rect + checkmark path) using strokeDasharray/strokeDashoffset. A scroll listener triggers GSAP animations to compress the navbar height from 72px to 58px and scale the brand logo to 0.85 when scrollY > 24. A mobile drawer is toggled via `menuOpen` with body scroll lock. NAV_LINKS array defines three routes: Home (/Landing), Features (/Dashboard), About (/TaskCard). Imports Navbar.css, framer-motion AnimatePresence/motion, and gsap.

AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#20

Task Database Model Migration

To Do

As a Backend Developer, define the Task SQLAlchemy model with fields: id (UUID or auto-increment int PK), title (VARCHAR 100, NOT NULL), description (TEXT, nullable), is_completed (BOOLEAN, default false), priority (ENUM or VARCHAR, nullable), created_at (DATETIME, default now), updated_at (DATETIME, auto-update on change). Create the Alembic initial migration script to generate the tasks table in MySQL/MariaDB. Configure the database connection via environment variable DATABASE_URL. Ensure Alembic env.py is wired to the SQLAlchemy Base metadata.

AI 65%
Human 35%
High Priority
1 day
Backend Developer
#21

Setup Theme and Design System

To Do

As a Frontend Developer, set up the global design system and theme configuration for the daily-tasks SPA. Create a CSS variables file (or theme constants module) defining all SRD colors: --primary: #4A90E2, --primary-light: #A6C8F0, --secondary: #F5A623, --accent: #7ED321, --highlight: #F8E71C, --bg: #FFFFFF, --surface: rgba(250,250,250,0.8), --text: #333333, --text-muted: #777777, --border: rgba(200,200,200,0.5). Configure global base CSS resets, font imports, and responsive breakpoints. Set up framer-motion provider and GSAP imports as shared utilities. Ensure all page-level CSS files can consume these variables consistently.

AI 60%
Human 40%
High Priority
0.5 days
Frontend Developer
#22

Setup Frontend API Client

To Do

As a Frontend Developer, create a shared API client module (e.g. src/api/tasksApi.js) that encapsulates all HTTP calls to the FastAPI backend. Implement functions: createTask(data), getTasks(filters), getTask(id), updateTask(id, data), deleteTask(id). Use fetch or axios with a configurable base URL from environment variable (REACT_APP_API_URL). Include centralized error handling and response parsing. This module will be imported by Dashboard, TaskForm, and TaskCard page components to replace the current mock/static data with real API calls. Note: depends on the backend Tasks CRUD API being available (temp_backend_tasks_api).

AI 70%
Human 30%
High Priority
0.5 days
Frontend Developer
#2

Implement LandingHero for Landing

To Do

As a frontend developer, implement the LandingHero section for the Landing page. The component uses useRef for `rootRef`, `headlineRef`, `subRef`, and `todRef`. Framer Motion `useScroll` drives parallax: `rawScale` transforms from 1 to 1.2, `rawOpacity` from 1 to 0, and `rawY` from 0 to 60 — all smoothed via `useSpring` (stiffness 120, damping 30). A TIME_OF_DAY array defines four rgba color stops (dawn/midday/dusk/night) interpolated via a custom `colorAt` lerp function subscribed to `scrollYProgress.on('change')` and applied as a CSS linear-gradient to `todRef`. HEADLINE_LINES defines a two-line headline with an `accent` flag for styled text. On mount, GSAP staggers headline word spans and the subtitle ref for entry animations. Imports LandingHero.css and gsap.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#3

Implement LandingTaskCanvas for Landing

To Do

As a frontend developer, implement the LandingTaskCanvas section for the Landing page. The component renders three demo TASKS (plan/inbox/design), each with id, title, desc, state ('active'|'done'), meta, and steps array. The `TaskCanvasCard` sub-component uses useState for `flipped` and `dragging` states and Framer Motion `motion.div` with `drag`, `dragConstraints` (bound to a container dragRef), `dragElastic: 0.18`, `dragTransition`, and `whileDrag` (scale 1.05, zIndex 5). A flip animation rotates the card on its Y axis via `motion.div` with `animate={{ rotateY: flipped ? 180 : 0 }}` using a spring config (stiffness 200, damping 25). Cards have a front face (badge with dot, title, desc, meta, flip button) and a back face (steps list). A `CheckIcon` SVG component is used for done-state indicators. An `onFirstDrag` callback surfaces a drag-hint hint. Imports LandingTaskCanvas.css, framer-motion motion/AnimatePresence.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#4

Implement LandingFeatures for Landing

To Do

As a frontend developer, implement the LandingFeatures section for the Landing page. The component uses useState for `hovered` (index | null) to drive hover/dim effects across four FEATURES cards (Create Tasks, Track Progress, Organize Priorities, Stay Focused) each with title, desc, label (01–04), and an inline SVG icon. A `containerVariants` object staggers children with `staggerChildren: 0.05`; `cardVariants` animates each card from `{ opacity: 0, y: 28 }` to visible using a spring (stiffness 240, damping 22). The `motion.div` grid uses `whileInView` with `viewport={{ once: true, amount: 0.2 }}`. Two CSS parallax layers (`lf-bg-layer`, `lf-mid-layer`) use a CSS custom property `--scroll` for translateY offsets (-0.3px and -0.5px multipliers). Cards apply `is-hovered` and `is-dimmed` classes when `Math.abs(hovered - index) > 1`. Imports LandingFeatures.css and framer-motion.

Depends on:#1
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#5

Implement LandingCTA for Landing

To Do

As a frontend developer, implement the LandingCTA section for the Landing page. The component uses useRef for `btnRef`, useState for `magnet` ({x,y}) and `burst` (particle array). A `handleMouseMove` callback computes magnetic pull toward the CTA button when cursor is within `MAGNET_RADIUS` (80px), applying up to `MAGNET_MAX` (12px) offset via normalized dx/dy — translated to a Framer Motion `animate` on the button wrapper. A `handleBurst` callback calls `makeBurst()` to generate 10 particles with randomized angle, distance (46–84px), color from `PARTICLE_COLORS`, and scale — rendered via `AnimatePresence` as `motion.div` elements that animate out after 600ms via `window.setTimeout`. The headline uses `motion.h2` with a `whileHover` color animation cycling through `PALETTE` (`#4A90E2`, `#F5A623`, `#7ED321`) over 1.6s infinite loop. Two CSS parallax layers (`cta-bg-layer`, `cta-mid-layer`) use `--scroll` custom property. Imports LandingCTA.css and framer-motion.

Depends on:#1
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#6

Implement Footer for Landing

To Do

As a frontend developer, implement the Footer section for the Landing page. The component uses useRef for `colsRef` (array of column refs) and `rootRef`, and useState for `openCol` (mobile accordion state, defaulting to 'Product'). On mount, GSAP sets all column refs to `{ opacity: 0, y: 18 }`, then an `IntersectionObserver` (threshold 0.2) triggers a staggered GSAP tween (`duration: 0.6, stagger: 0.1, ease: 'power2.out'`) to reveal columns. Four `linkColumns` (Product, Company, Resources, Legal) each contain four href links. Three `socials` (Twitter, GitHub, LinkedIn) are rendered as SVG icon buttons with a `handleSocialEnter` GSAP path-length hover animation. Mobile accordion toggled by `openCol` state via `setOpenCol`. Note: this Footer component may already exist from a previous page and should be reused if available. Imports Footer.css and gsap.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
Medium Priority
1 day
Frontend Developer
#7

Implement DashboardSidebar for Dashboard

To Do

As a frontend developer, implement the DashboardSidebar section for the Dashboard page. Build the sidebar component using React with useState for activeFilter ('all'|'completed'|'pending'|'priority') and drawerOpen toggle state, and useMemo for stats computation. Render a dsb-stats section with animated motion.div stat cards (Total, Done, Pending) using framer-motion spring animations (stiffness 260, damping 24) and whileHover scale/y transforms. Render a dsb-filters section mapping over FILTERS array (ListTodo, CheckCircle2, Clock, Star lucide icons) with motion.button filter buttons that highlight the active filter. Include a 'Create Task' button that navigates to /TaskForm via window.location.href. Support a mobile drawer toggle via toggleDrawer handler with AnimatePresence for open/close animation. Use MOCK_COUNTS object for badge counts per filter. Import and apply DashboardSidebar.css styles.

Depends on:#1
Waiting for dependencies
AI 88%
Human 12%
High Priority
1.5 days
Frontend Developer
#8

Implement DashboardTopbar for Dashboard

To Do

As a frontend developer, implement the DashboardTopbar section for the Dashboard page. Build the topbar component accepting viewMode and setViewMode props. Manage useState hooks for search string, filterActive boolean, sortOpen boolean, sortBy key ('newest'|'oldest'|'title'|'priority'), and taskCount. Use useRef for sortRef (outside-click detection) and inputRef (focus control). Implement two useEffect hooks: one for keyboard shortcuts (Escape closes sort dropdown, Ctrl+K focuses search input via inputRef), and one for closing the sort dropdown on outside mousedown click using sortRef. Render a dtb-search-wrap with a framer-motion animated search input (spring stiffness 380, damping 28), Search and X lucide icons, and a handleClear useCallback. Render a sort dropdown button with ArrowUpDown icon that opens a SORT_OPTIONS menu with Check icon on selected option, animated with AnimatePresence. Render VIEW_MODES toggle buttons (LayoutGrid for canvas, List for list) that call setViewMode. Apply DashboardTopbar.css styles.

Depends on:#1
Waiting for dependencies
AI 87%
Human 13%
High Priority
1.5 days
Frontend Developer
#9

Implement DashboardCanvas for Dashboard

To Do

As a frontend developer, implement the DashboardCanvas section for the Dashboard page. Build the canvas component managing INITIAL_TASKS array in useState (6 tasks with id, title, description, priority, completed, date fields). Use useState for flipped map (card flip state keyed by task id) and dragId for drag-and-drop tracking, plus useRef for dragRef. Implement useMemo for getTimeOfDayGreeting() returning label, emoji, and bg color based on current hour. Render a time-of-day greeting header using the tod memoized value. Render task cards as a kanban-style canvas grid, each card supporting: cardFlipVariants (rotateY 0/180 spring stiffness 260, damping 26) for front/back flip animation via framer-motion, GripVertical drag handle, Edit3 and Trash2 action icons, CheckCircle2/Circle completion toggle, RotateCcw restore for completed tasks, Calendar date display via formatDate helper, priority badge (high/medium/low), and ArrowLeft back button on card back face. Support drag-and-drop reordering with dragId state and dragRef. Include a Plus button to navigate to /TaskForm. Apply DashboardCanvas.css styles.

Depends on:#1
Waiting for dependencies
AI 85%
Human 15%
High Priority
2.5 days
Frontend Developer
#10

Implement DashboardTaskList for Dashboard

To Do

As a frontend developer, implement the DashboardTaskList section for the Dashboard page. Build the list component using useState for expandedId (accordion expand/collapse per row). Render a dtl-header with List lucide icon, 'All Tasks' title, and total count badge. Compute pendingCount and completedCount from TASKS array filtering by status. Implement a desktop dtl-table with thead columns (Task, status, priority, created date) and tbody rows. Each row renders: a ChevronDown icon toggling expandedId via toggleExpand handler, Edit3 action button, CheckCircle2 completion indicator, Trash2 delete button, Calendar/Clock icons for date display via formatDate helper (toLocaleDateString en-US). Use AnimatePresence with motion.div for animated accordion expansion of task description. Render a mobile-friendly card layout as an alternative to the table. Apply priority badge styling for High/Medium/Low values. Apply DashboardTaskList.css styles.

Depends on:#1
Waiting for dependencies
AI 88%
Human 12%
High Priority
1.5 days
Frontend Developer
#11

Implement DashboardEmpty for Dashboard

To Do

As a frontend developer, implement the DashboardEmpty section for the Dashboard page. Build the empty-state component using useRef for sectionRef. Implement containerVariants (staggerChildren 0.12, delayChildren 0.1) and itemVariants (opacity/y spring stiffness 280, damping 26) for framer-motion staggered entrance animation triggered by whileInView (once: true, amount: 0.3). Render decorative de-bg-glow with two de-glow-orb divs (blue and green ambient glows, aria-hidden). Render a de-illustration block containing two de-pulse-ring divs (second with delay class), a de-circle, three de-dot elements, and a de-icon-box wrapping ClipboardList lucide icon (size 34, strokeWidth 1.8) — all animated via itemVariants. Render de-heading 'No tasks yet!', de-subtitle paragraph, and a motion.button CTA with Plus icon (size 20, strokeWidth 2.3) that calls handleCreate (navigates to /TaskForm via window.location.href) with whileHover scale 1.04 and whileTap scale 0.97 spring. Render de-hints section with keyboard shortcut hints using Command lucide icon. Apply DashboardEmpty.css styles.

Depends on:#1
Waiting for dependencies
AI 92%
Human 8%
Medium Priority
0.5 days
Frontend Developer
#19

Tasks CRUD API Endpoints

To Do

As a Backend Developer, implement the Tasks REST API using FastAPI. Create endpoints: POST /api/tasks (create task with title, description, is_completed), GET /api/tasks (list all tasks with optional filter by status), GET /api/tasks/{id} (get single task), PUT /api/tasks/{id} (update task title, description, is_completed), DELETE /api/tasks/{id} (delete task). Include request/response Pydantic schemas, proper HTTP status codes, and error handling (404 for not found, 422 for validation). Note: Frontend section tasks DashboardTaskList, DashboardCanvas, DashboardSidebar, TaskFormActions, TaskFormFields, TaskCardMain, TaskCardActions, TaskCardRelated all depend on this API.

Depends on:#20
Waiting for dependencies
AI 70%
Human 30%
High Priority
2 days
Backend Developer
#12

Implement TaskCardHeader for TaskCard

To Do

As a frontend developer, implement the TaskCardHeader section for the TaskCard page. This section renders a motion.div root container with framer-motion entrance animation (opacity: 0→1, y: -12→0, 0.4s easeOut). Inside, it contains a back-navigation button (motion.a with whileHover scale 1.05, whileTap scale 0.96) linking to /Dashboard with a chevron-left SVG icon, and a breadcrumb nav (aria-label='Breadcrumb') with three levels: 'daily-tasks' linking to /Landing, 'Dashboard' linking to /Dashboard, 'Tasks' linking to /Dashboard, and a static current-page span showing 'Review Q3 Marketing Plan'. Separator chevrons are rendered as inline SVG polylines. Apply TaskCardHeader.css with tch-root, tch-inner, tch-back-btn, tch-breadcrumb, tch-breadcrumb-link, tch-breadcrumb-sep, and tch-breadcrumb-current class styles.

Depends on:#7
Waiting for dependencies
AI 90%
Human 10%
High Priority
0.5 days
Frontend Developer
#23

Integrate Dashboard with API

To Do

As a Tech Lead, verify the end-to-end integration between the Dashboard frontend implementation and the Tasks CRUD backend API. Ensure DashboardTaskList, DashboardCanvas, DashboardSidebar, DashboardTopbar, and DashboardEmpty all fetch real task data via the API client, handle loading/error states gracefully, and that create/complete/delete actions correctly call the API and refresh the UI. Confirm data flows correctly, API responses are handled properly in the UI, and all interactions work as expected. Note: depends on existing Dashboard section tasks (149361e7, 1e8ac875, c49addb8, d3dfb3a2, f32335a7) and the backend API (temp_backend_tasks_api) and frontend API client (temp_frontend_api_client).

Depends on:#19#22
Waiting for dependencies
AI 55%
Human 45%
High Priority
1 day
Tech Lead
#24

Integrate TaskForm with API

To Do

As a Tech Lead, verify the end-to-end integration between the TaskForm frontend implementation and the Tasks CRUD backend API. Ensure TaskFormFields collects valid data, TaskFormActions calls the correct API endpoint (POST for create, PUT for update), handles API errors and success responses in the UI status message, and navigates correctly on success. Confirm that the simulated async handlers in TaskFormActions are replaced with real API client calls. Note: depends on existing TaskForm section tasks (267d6d19, 92224a5d, cb7a842d) and the backend API (temp_backend_tasks_api) and frontend API client (temp_frontend_api_client).

Depends on:#22#19
Waiting for dependencies
AI 55%
Human 45%
High Priority
0.5 days
Tech Lead
#25

Integrate TaskCard with API

To Do

As a Tech Lead, verify the end-to-end integration between the TaskCard frontend implementation and the Tasks CRUD backend API. Ensure TaskCardMain fetches the real task by ID from the API, TaskCardActions calls DELETE and PATCH (mark complete) endpoints correctly, TaskCardRelated fetches related or recent tasks from the API, and all UI states (loading, error, success) are handled properly. Confirm that static taskData and RELATED_TASKS arrays are replaced with live API data. Note: depends on existing TaskCard section tasks (54601700, 76f5fe90, 81a5c27d, 87188bd6) and the backend API (temp_backend_tasks_api) and frontend API client (temp_frontend_api_client).

Depends on:#22#19
Waiting for dependencies
AI 55%
Human 45%
Medium Priority
0.5 days
Tech Lead
#13

Implement TaskCardMain for TaskCard

To Do

As a frontend developer, implement the TaskCardMain section for the TaskCard page. This section uses useState(isFlipped), useRef(cardRef), useMotionValue(rotateY), and useTransform to drive a flip-card animation between a front face (task details) and a back face (edit/complete/delete actions). Static taskData object (id, title, description, status, priority, createdAt, updatedAt) is used for display. A formatDate helper formats ISO timestamps to locale strings. Priority is mapped to CSS classes tcm-priority-high/medium/low and statusClass tcm-completed. The flip is triggered by handleFlip (useCallback). The front face shows title, description, priority badge, status badge, and timestamps. The back face exposes edit (pencil SVG), complete (check SVG), and delete (trash SVG) action buttons. Spring config uses stiffness 260, damping 26. frontOpacity and backOpacity are driven by useTransform on rotateY [-90,0] and [0,90]. Apply TaskCardMain.css with tcm-* class variants.

Depends on:#12
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#14

Implement TaskCardActions for TaskCard

To Do

As a frontend developer, implement the TaskCardActions section for the TaskCard page. This section manages three interactive actions using useState and useCallback: (1) isComplete toggle via handleComplete setting isComplete to true, (2) showDeleteConfirm two-step delete flow via handleDeleteClick which auto-dismisses after 3000ms using deleteTimerRef (useRef) with cleanup on unmount via useEffect, and (3) handleEdit navigating to /TaskForm via window.location.href. AnimatePresence wraps tooltip visibility with tooltipVariants (hidden/visible/exit using spring stiffness 600, damping 30). buttonSpring config uses stiffness 500, damping 28, mass 0.8. Inline SVG icon components: EditIcon (pencil path), CheckIcon and CheckDoneIcon (polyline check), TrashIcon (trash bin with lid and lines). deleteHovered state controls hover styling on delete button. Apply TaskCardActions.css with tca-* class variants.

Depends on:#12
Waiting for dependencies
AI 85%
Human 15%
High Priority
1 day
Frontend Developer
#15

Implement TaskCardRelated for TaskCard

To Do

As a frontend developer, implement the TaskCardRelated section for the TaskCard page. This section renders a horizontally scrollable carousel of related tasks from a static RELATED_TASKS array (5 items with id, title, description, category, status, date fields). Uses useState for canScrollLeft, canScrollRight, and inView, with useRef(trackRef) pointing to the scroll container. Scroll state is updated via checkScroll (useCallback) listening to scroll and resize events via useEffect. An IntersectionObserver on the .ta-rel-root container sets inView to trigger staggered card entrance animations using CARD_VARIANTS (hidden: opacity 0, y 30; visible: opacity 1, y 0 with per-index delay i*0.08 and cubic-bezier easing). STATUS_BADGE maps status strings to label/cls pairs; STATUS_ICON maps to ✓ and ◉ symbols; CATEGORY_COLOR_MAP maps Work→#4A90E2 and Personal→#F5A623 via categoryColor helper. Each card is wrapped in a motion.div with custom={i} for stagger. isEmpty state shows an empty state fallback. Apply TaskCardRelated.css with ta-rel-* class variants.

Depends on:#12
Waiting for dependencies
AI 85%
Human 15%
Medium Priority
1 day
Frontend Developer
#16

Implement TaskFormHeader for TaskForm

To Do

As a frontend developer, implement the TaskFormHeader section for the TaskForm page. This section renders an animated page header using framer-motion. It includes: (1) a decorative gradient accent bar that animates scaleX from 0 to 1 on mount; (2) an animated breadcrumb nav with Dashboard → TaskForm crumbs using ChevronRight separator from lucide-react; (3) a title row with a spring-animated ClipboardList icon (scale+rotate entry) and a character-by-character animated 'Add New Task' h1 where each char uses useMemo-cached spring transitions with staggered delays (0.12 + i*0.04s), rotateX from 40 to 0, and the first 3 chars receive the 'tfh-char-secondary' class; (4) an animated subtitle paragraph; and (5) a 'New Entry' status badge. Uses BREADCRUMB, TITLE_CHARS, and STATUS_BADGE constants. Note: Navbar component may already exist from Landing/Dashboard pages.

Depends on:#12
Waiting for dependencies
AI 88%
Human 12%
High Priority
1 day
Frontend Developer
#17

Implement TaskFormFields for TaskForm

To Do

As a frontend developer, implement the TaskFormFields section for the TaskForm page. This section provides the core form input fields using React useState and useCallback hooks. It includes: (1) a Task Title input (id='tff-title') with TITLE_MAX=100 char limit, live character counter, aria-required/aria-invalid attributes, and onBlur-triggered validation that checks for non-empty (required) and minimum 3-character length; (2) a Description textarea with DESC_MAX=500 char limit and overflow validation; (3) an isCompleted toggle for task status; (4) a touched/errors state system that shows validation messages only after blur; (5) AnimatePresence-wrapped error messages using AlertCircle and success indicators using CheckCircle2 from lucide-react; (6) conditional CSS classes 'tff-has-error' and 'tff-is-valid' on field wrappers; and (7) helper text with aria-describedby linking. The validate useCallback mutates an errors copy and calls setErrors.

Depends on:#16
Waiting for dependencies
AI 85%
Human 15%
High Priority
1.5 days
Frontend Developer
#18

Implement TaskFormActions for TaskForm

To Do

As a frontend developer, implement the TaskFormActions section for the TaskForm page. This section renders the form action buttons using a custom MagneticButton wrapper component. MagneticButton uses useRef, useMotionValue, and useSpring (stiffness:300, damping:22) to apply a magnetic cursor-follow effect via onMouseMove/onMouseLeave handlers, with whileTap scale:0.96. The section manages: (1) saving state with a 1400ms simulated async handleSave that shows 'Task updated/created successfully!' or error via AnimatePresence statusMessage; (2) deleting state with a window.confirm guard and 1000ms simulated handleDelete that redirects to /Dashboard on success; (3) handleCancel that navigates to /Dashboard; (4) an isBusy flag disabling all buttons during async ops; (5) isEditMode=true flag controlling save button label; and (6) Save (Save icon), Cancel (X icon), and Delete (Trash2 icon) buttons from lucide-react, with CheckCircle and AlertCircle for status feedback.

Depends on:#17
Waiting for dependencies
AI 87%
Human 13%
High Priority
1.5 days
Frontend Developer
TaskForm design preview
Landing: View App
Dashboard: View Tasks
Dashboard: Create Task
TaskForm: Add Details
Dashboard: View Tasks
TaskCard: View Details
TaskCard: Edit Task
TaskForm: Update Details
TaskCard: Mark Complete
TaskCard: Delete Task