Skip to content

feat(export): implement CSV and Excel export for task data#3229

Open
desireddymohithreddy0925 wants to merge 14 commits into
Priyanshu-byte-coder:mainfrom
desireddymohithreddy0925:feature/csv-export
Open

feat(export): implement CSV and Excel export for task data#3229
desireddymohithreddy0925 wants to merge 14 commits into
Priyanshu-byte-coder:mainfrom
desireddymohithreddy0925:feature/csv-export

Conversation

@desireddymohithreddy0925

Copy link
Copy Markdown
Contributor

Summary

Adds the ability to export task data to both CSV and Excel (.xlsx) formats directly from the dashboard, addressing requests for reporting and external stakeholder sharing.

Closes #2887

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (fix or feature that changes existing functionality)
  • 📝 Documentation update
  • 🎨 Code style update (formatting, renaming)
  • ♻️ Refactoring (no functional changes)
  • 🧪 Testing
  • 🏗️ Build / CI/CD / Infrastructure

Description

This PR addresses issue #2887 by extending our tasks schema to support complex project management data and introducing a dual-format export widget.

Changes made:

  • Database Schema Upgrades: Extended the tasks schema via migration to include status, priority, due_date, and tags columns. (Includes backward compatibility fallback for older completed boolean tasks).
  • API Extension: Updated GET, POST, PUT on /api/tasks and /api/tasks/[id] to seamlessly manage and return the new data structures securely using RLS.
  • TaskExportButton Component: Built a dedicated UI component capable of two operations:
    • CSV Export: Uses native browser blobs to generate cleanly formatted .csv reports with robust string escaping for task titles and tags.
    • Excel Export: Utilizes SheetJS (dynamically imported to preserve small initial bundle sizes) to generate formatted .xlsx workbooks.
  • Dashboard Integration: Mounted the new export capabilities alongside the existing export workflows within DashboardPage.

Testing

  • Confirmed database migration applied smoothly and legacy data is handled cleanly.
  • Verified CSV payload is well-formed even if users include commas or quotes inside their Task Titles.
  • Verified xlsx dynamic import successfully generates valid Excel files.
  • Executed local static analysis (pnpm typecheck) flawlessly.

Screenshots / Screen Recording

(Attach a screenshot of the new Export buttons in the dashboard, or a snippet of the generated CSV file)

@github-actions github-actions Bot added type:bug GSSoC type bonus: bug fix type:feature GSSoC type bonus: new feature gssoc26 GSSoC 2026 contribution type:testing GSSoC type bonus: tests (+10 pts) type:design GSSoC type bonus: UI/design (+10 pts) type:performance GSSoC type bonus: performance (+15 pts) labels Jul 24, 2026
@github-actions

Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc26 GSSoC 2026 contribution type:bug GSSoC type bonus: bug fix type:design GSSoC type bonus: UI/design (+10 pts) type:feature GSSoC type bonus: new feature type:performance GSSoC type bonus: performance (+15 pts) type:testing GSSoC type bonus: tests (+10 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(export): implement CSV and Excel export for task data

1 participant