Skip to content

[Feature] Add a pool deposit schedule calendar view with iCal/Google Calendar export #186

Description

@Sendi0011

Getting Started

  1. Fork the repository: https://github.com/JointSave-org/Joint_Save
  2. Clone your fork:
git clone https://github.com/<your-username>/Joint_Save.git
cd Joint_Save
  1. Create a new branch:
git checkout -b feat/pool-deposit-calendar

Overview

Rotational pool members currently have no way to see their upcoming deposit obligations at a glance across all their pools. The only way to know when a deposit is due is to open each pool's detail page individually and check the round deadline. This becomes especially painful for users in multiple rotational pools — they must manually track when each pool's next round starts and when their deposit is due.

This issue adds a calendar view to the dashboard that shows all upcoming deposit obligations across pools, with the ability to export individual events to iCal/Google Calendar.

Requirements

New Component: DepositCalendar

  • Add a new section or tab within the "My Groups" dashboard tab (or a standalone view toggle)
  • Monthly calendar view showing deposit deadlines as events
  • Each event shows: pool name, deposit amount, pool type badge, and time remaining
  • Color coding: green (>7 days away), yellow (2-7 days), red (<2 days or overdue)
  • Clicking an event opens the pool detail page directly

Data Source

  • For each rotational pool the user is a member of, compute the next deposit deadline from the on-chain next_payout_time field
  • Cross-reference with the has_deposited map to show which deposits are already completed (marked with a checkmark) vs pending
  • Cache computed deadlines alongside the existing pool data in PoolDataProvider to avoid redundant RPC calls

iCal Export

  • Add an "Export to Calendar" button per pool and a "Export All" button
  • Generate a valid .ics file containing VEVENT entries for each upcoming deposit deadline
  • Each event should include:
    • Summary: "Deposit due: [pool name]"
    • Description: "Deposit [amount] [token] to [pool name]. Pool contract: [address]"
    • Start time: the deadline timestamp
    • Duration: 1 hour (all-day event if no specific time)
    • URL: link to the pool detail page
  • Use the ical-generator library (check if already a dependency, otherwise install it)

Mobile Responsiveness

  • On mobile (< 768px), switch from monthly grid to a list/timeline view of upcoming deposits sorted by deadline
  • Swipeable or scrollable list with pool name, amount, and deadline

Empty State

  • When the user has no rotational pools, show a friendly empty state: "You don't have any rotational pools yet. Create or join one to see your deposit schedule here."

Acceptance Criteria

  • Calendar view renders on the dashboard with deposit deadlines shown as events
  • Events are color-coded by urgency (green/yellow/red)
  • Clicking an event navigates to the correct pool detail page
  • "Export to Calendar" generates a valid .ics file that imports correctly into Google Calendar and Apple Calendar
  • "Export All" includes all upcoming deposits across all pools
  • Mobile view switches to a list/timeline layout
  • Empty state displays when no rotational pools exist
  • Calendar correctly reflects deposits already made (shows checkmark)

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official CampaignOfficial Campaign | FWC26Campaign: Official Campaign | FWC26featureNew functionality to addmedium-complexityNot too complex, Few files and some planning needed

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions