Skip to content

feat: Web app version hosted on Vercel #17

@dernerl

Description

@dernerl

Problem Description

ManagedFavsGenerator is currently macOS-only. IT admins on Windows or Linux have no access to the tool, and there is no way to share or use it without installing a native app.

Proposed Solution

Build a web app version of ManagedFavsGenerator using React + TypeScript, hosted on Vercel as a static site — no backend required, everything runs in the browser.

Why Vercel over GitHub Pages / Netlify

GitHub Pages Netlify Vercel
Auto-deploy on push Manual/Actions
PR Preview deployments
React/Vite zero-config
GitHub integration Native Good Good
Free tier

Vercel is the natural fit for a React app and PR preview deployments are especially valuable for open source contributions — every pull request gets a live preview URL automatically.

Architecture

  • React + TypeScript (static, no backend)
  • Port core logic from Swift to TypeScript:
    • FormatGenerator → JSON & Plist output
    • FormatParser → JSON & Plist import
    • FavoritesViewModel → React state
  • Browser APIs replace native services (Clipboard API, file download/upload, localStorage)
  • Favicon loading via existing Google/DuckDuckGo providers

Suggested Phases

Phase 1 — Core Logic
Port FormatGenerator and FormatParser to TypeScript including unit tests

Phase 2 — UI
Rebuild the favorites list, folder management, and output panels in React (with drag & drop)

Phase 3 — Features
Import JSON/Plist, favicon loading, localStorage persistence

Phase 4 — Deployment
Vercel setup, custom domain (optional), GitHub Actions integration

Bonus

The environment/profile feature (see #15) can be built in from the start — localStorage makes per-environment persistence straightforward.

Alternatives Considered

  • GitHub Pages: requires manual GitHub Actions configuration for React builds, no PR previews
  • Netlify: viable alternative, but Vercel has better React/Vite defaults and is the de-facto standard for React deployments

Additional Context

  • No backend needed — the tool is purely client-side logic
  • The clean MVVM architecture of the existing Swift code maps well to React
  • The only non-trivial port is Plist (Apple XML format) — the plist npm package handles this

Priority

Medium - Would improve workflow

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions