Skip to content

Financial calendar app designed for both casual and professional investors that automatically tracks important stock events such as earnings calls and dividend dates, while also allowing users to add their own custom events.

Notifications You must be signed in to change notification settings

Shayan925/Equidate

Repository files navigation

Equidate

Screenshot

My Image

YouTube demo

Here

Product Vision

Description of Product:

Equidate is a financial calendar app designed for both casual and professional investors that automatically tracks important stock events such as earnings calls and dividend dates, while also allowing users to add their own custom events. The biggest differentiator between Equidate and generic calendar apps is that Equidate is purpose-built for organizing market events, reminders, and personal investment notes in a clear, clutter-free workspace for every stock on your watchlist.

Target Users:

  • Individual investors
  • Active traders
  • Finance enthusiasts who want a focused tool for managing investment-related timelines without mixing them into their personal or work calendars

Problem Space:

Investors often struggle to stay on top of key stock events across multiple tickers, such as earnings dates, dividend announcements, and product launches, while also keeping track of personal reminders like “buy before ex-dividend date” or “set alert for earnings call”. Existing calendars (Google Calendar, Outlook, Apple Calendar) are too broad and would lead to clutter and missed opportunities if all these events were mixed with everyday tasks.

Equidate solves this by providing a dedicated stock-centric calendar that automatically adds market events for tracked stocks while also allowing users to add their own custom events and providing reminders/notifications to ensure investors never miss a critical date. This focus area makes Equidate a great solution for stock event management as it combines automation with personalization in a way that normal calendars and traditional finance apps cannot.

Personas

Jordan

Jordan is a 20-year-old business student at the University of Waterloo who just started learning about investing through social media and stock analysis videos. He follows a few companies closely for class case studies but struggles to stay organized. He often forgets about earnings announcements or product launches until after they happen, making it difficult for him to connect real-world events with market reactions. Jordan wants to develop more consistent investing habits and learn to plan around important stock events like a professional would.

Priya

Priya is a 35-year-old marketing professional who invests in dividend-paying ETFs and blue-chip stocks as a way to supplement her income. She doesn’t trade often, but she depends on her quarterly dividends for budgeting. Right now, she manually tracks payout dates and portfolio notes in a spreadsheet, which she often forgets to update. Priya wants a simpler, less error-prone way to keep her financial timelines in one place without spending extra time maintaining them.

Daniel

Daniel is a 29-year-old software engineer who invests casually, mostly in large tech companies. His investment style is passive—he buys when he has extra savings and rarely checks market calendars. However, he’s missed several key dates like ex-dividend deadlines and shareholder meetings because he relies on irregular brokerage emails. He wants an easy, minimal-effort way to stay aware of events for a few stocks he cares about, without turning investing into a daily chore.

Scenario

Jordan

Jordan is sitting in his finance lecture, where the professor discusses how earnings announcements can shift stock prices. He realizes he missed the last two announcements for a company he follows. Since he doesn’t have a clear way to organize these events, he often learns about them too late through social media. His main challenge is developing consistent awareness of important dates without having to manually look them up.

Priya

Priya reviews her finances at the end of every month to plan her household budget. She uses a spreadsheet to track expected dividend payments, but the data quickly becomes outdated as companies adjust schedules or change payout amounts. She often has to check multiple sources to confirm when funds will arrive, which takes more time than she’d like. Her challenge is staying confident in her financial planning without needing to constantly double-check information.

Daniel

Daniel’s workdays are busy, and he rarely thinks about his portfolio until tax season. When he finally logs in to his brokerage account, he notices he’s missed an ex-dividend date for one of his favorite stocks. He finds the process of manually searching for event information tedious, and he dislikes having his inbox flooded with random financial alerts. His challenge is keeping light, reliable awareness of his investments without extra effort or noise.

Problems Identified

We identified the following problems from the scenarios above. We will address these in user stories:

  • Investors often forget important events (e.g. earnings, dividends, product launches) because they are buried in generic calendars.
  • Manual tracking with spreadsheets or reminders is clunky and error-prone.
  • Beginners lack understanding of what certain events mean and miss the chance to learn from them.
  • Professional investors need to manage many events without mixing them with work or family tasks.
  • Casual investors want a simple, lightweight solution that reminds them of only what matters.
  • All users need customizable notifications that fit their style without becoming overwhelming.

User Stories

Equidate is a mobile application that provides a dedicated stock-focused calendar, combining automatic event imports with personal reminders.

  1. As a user, I need earnings dates and product launches to be automatically added for the stocks on my watchlist so I can stay aware of key events without manually tracking them.
  2. As a user, I want to set reminders and filter events by ticker or category so I can focus only on the companies that matter to me.
  3. As a user, I need dividend payment dates to appear automatically for my holdings so I can plan my finances more accurately.
  4. As a user, I want to add personal reminders or notes linked to stock events so I can record my thoughts or follow-up actions.
  5. As a new investor, I want clear explanations of event types (e.g. earnings, dividend, stock split) so I can understand their impact on my investments.
  6. As a user, I want to maintain a separate stock calendar that is not mixed with my personal or work events so I can stay organized and focused.
  7. As a user, I want to quickly import or sync my watchlist of companies so I do not have to enter tickers manually.
  8. As a user, I want to create personal financial reminders not tied to a specific stock (e.g. “top up TFSA”) so I can track general financial goals.
  9. As a user, I want to adjust notification preferences such as timing and frequency so reminders remain helpful and not distracting.
  10. As a user, I want to sign up and sign in securely so I can access my watchlist and saved events from any device.

Project Plan

gantt
    title Equidate — Course-aligned Project Plan & Sprints (2025)
    dateFormat  YYYY-MM-DD
    axisFormat  %b %d

    section Proposal
    Course intro and team setup           :done,    2025-09-03, 3d
    Project repo setup and docs           :active,  2025-09-06, 3d
    Proposal writeup and review           :         2025-09-09, 12d
    Proposal due                          :milestone, 2025-09-26, 0d

    section Sprint 1 — Architecture & Design
    Gradle project and scaffold           :crit,    2025-09-29, 4d
    Domain and entity classes             :         2025-10-03, 6d
    Unit tests with fake data             :         2025-10-09, 2d
    Supabase authentication (backend)     :         2025-09-29, 12d
    Sprint 1 demo                         :milestone, 2025-10-10, 0d

    section Sprint 2 — User Interface
    Figma mockups (watchlist, calendar)   :         2025-10-13, 4d
    Watchlist screen (ViewModel wired)    :         2025-10-17, 7d
    Calendar screen (ViewModel wired)     :         2025-10-17, 7d
    Auth UI integration (login/signup)    :         2025-10-24, 4d
    Sprint 2 demo                         :milestone, 2025-10-31, 0d

    section Sprint 3 — Database & Modeling
    ER diagram and schema design          :         2025-11-03, 4d
    Supabase tables and migrations        :crit,    2025-11-07, 7d
    Persist watchlists and events         :         2025-11-14, 6d
    Database unit tests                   :         2025-11-20, 4d
    Sprint 3 demo                         :milestone, 2025-11-14, 0d

    section Sprint 4 — Final Review
    Notifications and preferences         :         2025-11-17, 7d
    Personal reminders and notes          :         2025-11-24, 5d
    Event type explanations and UX copy   :         2025-11-24, 4d
    Sprint 4 demo                         :milestone, 2025-11-28, 0d

    section Release
    QA and final polish                   :         2025-11-29, 3d
    Final software release (GitLab)       :milestone, 2025-12-02, 0d
Loading

Acknowledgements

Market data: Financial Modeling Prep

Backend and authentication: Supabase

Team: Mingchung, Shayan, Alina, Yazan

User guide

Our tech stack is composed of the following:

Getting started

You will need to install Java v17 and Ruby v2.6.10. jEnv is a useful Java version manager. asdf is a recommended Ruby version manager.

It is also recommended to use the latest versions of Android Studio (for Android + KMP development) and Xcode (iOS development) on macOS with Apple Silicion architecture.

The Kotlin Multiplatform plugin is also required for Android Studio. It is recommended to use Project view for file layout.

Configuration

⚠️ IMPORTANT: API Keys Required

Before running the app, you need to configure the following API keys:

  1. Supabase Credentials (for authentication and database):

  2. Financial Modeling Prep API Key (for stock market data):

For Android: Set the following environment variables before running:

export SUPABASE_URL="your_supabase_url"
export SUPABASE_ANON_KEY="your_supabase_anon_key"
export FMP_API_KEY="your_fmp_api_key"

Alternatively, you can configure them in androidApp/build.gradle.kts using buildConfigField or in local.properties (which is already gitignored).

For iOS: Set the following environment variables in Xcode:

  1. Go to Product > Scheme > Edit Scheme
  2. Select "Run" > "Arguments"
  3. Add environment variables:
    • SUPABASE_URL = your_supabase_url
    • SUPABASE_ANON_KEY = your_supabase_anon_key
    • FMP_API_KEY = your_fmp_api_key

Alternatively, you can configure them in Info.plist or use Xcode's build settings.

Note: Never commit API keys to version control. The .gitignore file is configured to exclude .env files and other sensitive configuration files.

Usage guide

You can watch these YouTube videos to watch the setup and build process for:

shared

The shared/ directory contains the shared business logic and data layers for iOS and Android (Kotlin Multiplatform).

Important: When pulling new changes from git, in Android Studio you must do File > Invalidate Caches, and check to clean everything to refresh the IDE.

iOS App

The iosApp/ directory contains the code for the iOS app (Swift / SwiftUI). To run it in Xcode, run the Fastlane script to build and generate the project:

cd iosApp
fastlane build_xc_project arch:SimulatorArm64 configuration:Debug

Supported architectures: X64, SimulatorArm64, Arm64

Supported configurations: Debug, Release

If you did not change Tuist project settings (i.e. no framework or dependency changes), you can speed up the Fastlane script by by-passing Tuist cleanup and re-installations by using the cache with the no_clean flag:

fastlane build_xc_project arch:SimulatorArm64 configuration:Debug no_clean:true

Behind the scenes, this Ruby script will generate shared resources, manage XC frameworks, bundle, and use Tuist to generate a Xcode project.

Important: When the shared code changes, you must rerun the Fastlane script to rebuild the Xcode Framework.

Android App

The androidApp/ directory contains the code for the Android app (Kotlin / Jetpack Compose). It can be run directly in Android Studio.

Design documents

ERD diagram

My Image

Class diagrams

My Image

About

Financial calendar app designed for both casual and professional investors that automatically tracks important stock events such as earnings calls and dividend dates, while also allowing users to add their own custom events.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published