Skip to content

[GSOC'26] Template Playground: Persistent Template Playground #487

@JiyaGupta-cs

Description

@JiyaGupta-cs

Problem

The current template playground is stateless. When users leave or refresh the page, all progress is lost. This breaks real-world authoring workflows where lawyers and contract managers expect to pause, revisit, iterate their work over time.

Additionally, maintaining persistence via a traditional database introduces infrastructure cost, operational overhead, and reduced openness, which goes against the goal of keeping the product open-source and lightweight.

Proposed Solution

  • Authentication: Allow users to sign in (e.g., GitHub OAuth).
  • Save & Resume: Provide an explicit “Save” option so users can persist their playground state and continue later.
  • Storage via GitHub:
    - Use Octokit.js to interact with GitHub APIs.
    - Use SimpleGit on the backend to manage commits.
    - Automatically create or use a private repository under the user’s GitHub account.
    - All implementation details are abstracted - users only need a GitHub account, no Git knowledge required

Outcomes

  • Users can save, resume, and continue their work seamlessly across sessions.
  • No work is lost; every save is versioned, enabling easy rollback to any previous state.
  • The product remains open-source, with no dependency on a managed database.
  • Zero Git complexity for users - all repository, commit, and version handling is fully automated.
  • Strong user trust and data ownership, since work is stored in the user’s own GitHub account.
  • Improved productivity and user retention, as users can pause and return without friction.

Alternatives to Explore

  • GitHub Gists for lighter-weight persistence.
  • Client-side storage (IndexedDB) for unauthenticated users.

Skills required/preferred:

React.js, OctoKit.js, SimpleGit

Possible Mentors:

Matt Roberts, Dan Selman

Expected size of project:

175 hours (medium)

Expected difficulty:

Medium

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions