import { Link } from "react-router-dom"; const workflow = [ { label: "Input", title: "Choose a tool", copy: "Paste text, pick a file, or adjust options in a generated tool panel.", icon: ( ), }, { label: "Run", title: "Process locally", copy: "The plugin runs in your browser using JavaScript, workers, Canvas, or PDF libraries.", icon: ( <> ), }, { label: "Output", title: "Copy or download", copy: "Results appear immediately in the page. Files stay on the device unless you export them.", icon: ( <> ), }, ]; const principles = [ { title: "No upload step", copy: "Plimi does not send your inputs to an application server for conversion.", }, { title: "Plugin boundaries", copy: "Each utility declares its own inputs, options, permissions, and result type.", }, { title: "Responsive execution", copy: "Heavier work can move off the main interface thread so the page stays usable.", }, { title: "Explicit results", copy: "Tools return structured outputs: copied text, rendered previews, or downloadable files.", }, ]; const layers = [ { name: "Tool manifest", detail: "Inputs, options, permissions" }, { name: "Generated UI", detail: "Forms, sliders, selects, validation" }, { name: "Runner", detail: "Browser APIs, workers, local libraries" }, { name: "Result panel", detail: "Preview, copy, download" }, ]; function IconFrame({ children }: { children: React.ReactNode }) { return ( ); } export function HowItWorksPage() { return (
browser-first architecture

Your files stay where they started.

Plimi is a collection of small local utilities. The interface loads the tool, runs the work in the browser, then hands the result back to you without a server round trip.

{workflow.map((step, index) => (
{step.icon} {String(index + 1).padStart(2, "0")}
{step.label}

{step.title}

{step.copy}

))}
{principles.map((item) => (

{item.title}

{item.copy}

))}
plugin model

One shell, many tools.

Plimi keeps the application shell simple. Each tool contributes a compact manifest and a runner, so new utilities can share the same dependable interface.

{layers.map((layer, index) => (
{index + 1}

{layer.name}

{layer.detail}

))}

Ready to run something?

Pick a utility and the same local workflow applies.

Browse tools
); }