惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

Jan Miksovsky’s blog

Origami Projector: a Glitch-like app for site editing Map-based trees in Zig How and why I journal Code is more concise than configuration: comparing a sample blog in Web Origami and Eleventy Code is more expressive than configuration: comparing a sample blog in Web Origami and Eleventy Code is more coherent than configuration: comparing a sample blog in Web Origami and Eleventy Code is easier to follow than configuration: comparing a sample blog in Web Origami and Eleventy Promoting a design and development tool through comics 2025 Web Origami year-end report Fixing the under-appreciated JavaScript Map class and using it to construct a build system Creating a simple blog in Python with Origami concepts
Who else would use a shared Electron library to create an...
2026-03-05 · via Jan Miksovsky’s blog

I’m interested in helping to create a shared JavaScript library for letting Electron apps authenticate with Netlify (and potentially GitHub/GitLab pages) via OAuth for the purpose of creating new projects and uploading files to existing projects.

The users in the web publishing ecosystem are benefiting from Electron becoming a de facto standard for user-facing tools. As Niki relates, Electron is winning because “native has nothing to offer”. Many developers are voting for Electron these days; I’m one of them.

One task I want my Electron app to perform for end users is helping them select or create a site on a static site host and later deploy locally-built files to that site. Netlify is an attractive target because it supports OAuth; GitHub Pages and GitLab Pages are others.

As it stands today, many tools that want to perform this task on the user’s behalf msut guide the user through creating an account with a host, obtaining a developer credential such as an access token, then copying the token and various other details into the tool. This is complex enough for a developer — and ridiculously complex for a non-developer. I think Publii’s walkthrough of this process is as clear as possible and it’s probably still daunting to many people that might want to create a site.

Netlify offers developers the possibility of an OAuth-based UI flow, but that’s a non-trivial thing to create from scratch:

  • Create a window or dialog in the Electron renderer
  • Define an HTML-based wizard that walks the user through the process, asking the absolute minimum number of questions
  • Negotiate the OAuth exchange (as I understand it, this requires a server)
  • Figure out what files need to be uploaded for a Manual Deploy, or bundle files for a ZIP deploy
  • Upload the files
  • Display progress feedback to the user
  • Communicate success and errors in a meaningful way

Even with the help of AI, creating and maintaining this would be some work. But much of this work would be generic — so it could be implemented in a library shared by multiple tools.

A conceptual, back-of-the-envelope API sketch for a hypothetical NetlifyPublish library:

// Select the site or create a new one
const siteDetails = await NetlifyPublish.selectSite({ name: "My blog" });

if (siteDetails) {
  // Successful, deploy build to site
  const files = await doTheBuild(); // However the tool wants to do that
  const success = await NetlifyPublish.deploySite(siteDetails, files);
}

There are many details to hammer out — how is work split across the main Electron process and the renderer? To what extent can the server component be generalized and shared as a community service? On the renderer side, how is the UI made modal: a <dialog> or a separate BrowserWindow? How are the built files represented? How is the UI themed? etc.

If you work on a tool that would might benefit from such a shared library, or are interested in participating in its design and/or implementation, please get in touch!