Skip to content

Roadmap to Launch πŸš€ β€” for 2025 iOS CohortΒ #60

@7riumph

Description

@7riumph

Context

Currently, this iOS application cannot be published via the app store or TestFlight.

Problem

Challenges meeting the minimum requirements, especially due to an incomplete API.

Solution

Ensure end-to-end utility through a operable UI, a secured API and user session, and a async offline storage method.

Purpose

The purpose of this app is to allow CASA (Court Appointed Special Advocate) volunteers to instantly save vital foster child court report data to their cloud profiles when on the field, anywhere on-the-go, regardless of if they are connected to the internet or not.


Approach

Must-haves:

  1. Required iOS app and API [/api/v1/] exchanges

    Users can login

    Users have a secure and seamless session

    • Client gives users option to "stay logged in" to and server keep users logged in until logout βœ… Click to View, ⬜ TBD
    • Server session tokens in expire in 7 hours βœ… Click to View
    • Client sends token to server upon profile update for validation
    • Client prompts user to re-sign in if session is expired

    Users can view their base profiles

    • Client retrieves logged in user profile data from server and displays it

    Users can view, add, and update their case contacts

    • Client prompts server for logged in user case contact(s) data and displays it
    • Server outputs logged in user case contact data

    • Client sends server a new logged in user case contact with data
    • Server saves new logged in user case contact data to the cloud

    • Client provides interface for adding, updating, and saving case contact data
    • Server updates old user case contact(s) data on the cloud

    Users can sign-out

    • Client gives users option to sign-out on account details screen
    • Server invalidates current session token if user signs out, requiring re-login

  2. Async Offline Storage on iOS app [SQLite, Caching, Upload, Deletion]

    User case contact data is stored locally if saved while offline

    • Client informs user that upload requires an internet connection, and that data is only saved locally
    • Client stores ALL case contact(s) and their data locally in a structured format, via SQLite

    Users can view unuploaded case contact data when offline

    • Client detects user is offline and still displays user data and their updates (it is ALL stored locally)
    • Client displays unuploaded data alert so user is informed an internet connection is required for online upload

    User case contact data updates are posted to the cloud while online

    • Client attempts upload to server if internet connection is established
    • Client deletes and synchronizes relevant local case contact data if upload is successful

  3. UI

    • Draft data privacy policy agreement
    • Add "Stay Logged In" checkbox to login page βœ… Click to View
    • Update CaseListScreen with Case details
    • Enhance AccountScreen with signed-in user details

Task Board

Advanced

  • Users can add new case contacts
  • Users can update old case contacts
  • Client stores ALL case contact(s) and their data locally in a structured format, via SQLite as a backup
  • Ensure when client detects user is offline it still displays user data and their in-progress updates
  • Synchronize relevant local case contact data with server periodically and prompt user to save/discard their in-progress updates
  • Case contact will be saved locally if they don't have internet, and uploaded when they do

PR Template(s) (rubyforgood/casa#3641, rubyforgood/casa#3408)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions