Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🛠️ [TASK] : Persist data in the frontend #1450

Open
5 tasks
Tracked by #1257
minikin opened this issue Dec 30, 2024 · 0 comments
Open
5 tasks
Tracked by #1257

🛠️ [TASK] : Persist data in the frontend #1450

minikin opened this issue Dec 30, 2024 · 0 comments
Assignees
Labels

Comments

@minikin
Copy link
Collaborator

minikin commented Dec 30, 2024

Summary

We need a robust, cross-platform local storage solution for our Flutter application. While our immediate use case involves persisting proposals and comments, the primary focus is on determining an architecture that is both scalable and adaptable to various data types in the future. This solution must function smoothly on web, iOS, Android, macOS, Linux, and Windows.

Description

Currently, the application only retrieves data from the backend and does not store anything locally. To improve user experience (especially when offline) and reduce server load, we want to establish an architectural approach for a local storage mechanism. Please note: this task is for the architecture team—no implementation is required at this stage.

Core Objectives

  1. Evaluate Cross-Platform Storage Options
  2. Define Architectural Patterns
    • Propose how local storage will integrate with existing architecture.
    • Consider service/repository patterns, dependency injection, and any necessary interfaces for maintainability.
  3. Outline Sync & Offline Strategy
    • Sketch how data should be cached, synchronized, and conflict-resolved (at a high level).
  4. Assess Performance & Scalability
    • Identify potential limitations for large datasets.
    • Recommend optimizations or best practices (e.g., indexing, lazy loading).
  5. Address Security Concerns
    • Determine if encryption or secure storage is needed based on data sensitivity.
    • Evaluate potential solutions for data integrity (transactions, error handling, fallback procedures).

Key Requirements

  • No Implementation: Provide architectural recommendations and a high-level design only.
  • Future-Friendly: The proposed architecture should be flexible enough to handle additional data models in future releases.
  • Minimal Platform Constraints: The solution must work seamlessly across the specified platforms (web, iOS, Android, macOS, Linux, Windows).

Deliverables

  1. Architecture Proposal
    • A document or diagram detailing the recommended local storage solution and how it fits into our existing Flutter application.
    • Rationale for choosing (or rejecting) each technology.
  2. Sync Strategy Outline
    • Description of how to handle offline writes and subsequent sync with the backend.
    • Basic conflict-resolution considerations.
  3. Security & Performance Recommendations
    • Any high-level guidance on data encryption, protection, or performance tuning.
  4. Roadmap for Implementation
    • Proposed phases or steps for how the development team can implement this solution in the future.

Acceptance Criteria

  • An architectural proposal is delivered, including recommended local storage library/libraries.
  • A high-level design or diagram shows how this storage layer will integrate with the existing Flutter app.
  • A brief plan for syncing and offline functionality is provided, with notes on potential conflict resolution.
  • Security, performance, and scalability considerations are addressed.
  • Any outstanding concerns or trade-offs are clearly documented (e.g., why one solution might be favored over another).

Additional Notes

  • Please keep the deliverables concise yet comprehensive enough to guide the eventual implementation.
  • If multiple solutions are feasible, include a pros/cons comparison.
  • We will schedule a follow-up session to discuss the final architecture and plan the next steps for development.
@minikin minikin changed the title Persist data (proposals and comments) in the frontend 🛠️ [TASK] : Persist data in the frontend Dec 31, 2024
@minikin minikin moved this from New to 🔖 Ready in Catalyst Dec 31, 2024
@minikin minikin added the F14 label Jan 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: 🔖 Ready
Development

No branches or pull requests

2 participants