Dev.to WebDev 🛠 Dev 👁 0 📖 1 min read

如何用 osFoundry 的 Custom App 打造並託管小型內部應用程式

週四,距離上線還有兩個小時,而 Dari 是唯一知道 cutover 哪些步驟已經完成的人。檢查清單放在試算表的某個分頁裡,runbook 在共用雲端硬碟上,討論則散落在一個沒人找得到的聊天討論串。團隊真正需要的,是一個只有四個核取方塊、兩位負責人的小應用程式,而且就放在檔案旁邊。寫出來很容易。要託管它、給它一個資料庫、安全保管它的金鑰、再幫它弄一個網址,這些才是通常卡關的地方。 Custom App 這個類別是什麼

如何用 osFoundry 的 Custom App 打造並託管小型內部應用程式

週四,距離上線還有兩個小時,而 Dari 是唯一知道 cutover 哪些步驟已經完成的人。檢查清單放在試算表的某個分頁裡,runbook 在共用雲端硬碟上,討論則散落在一個沒人找得到的聊天討論串。團隊真正需要的,是一個只有四個核取方塊、兩位負責人的小應用程式,而且就放在檔案旁邊。寫出來很容易。要託管它、給它一個資料庫、安全保管它的金鑰、再幫它弄一個網址,這些才是通常卡關的地方。

Custom App 這個類別是什麼

osFoundry 把打造和執行自己的小型應用程式所需的一切,集中在桌面版 app 側邊欄的一個類別裡,名稱是 CUSTOM APP。裡面有五個畫面。Room 是共用空間,應用程式以分頁的形式存在其中。App Code 是應用程式背後的儲存庫。Deployed Apps 是整個 workspace 目前上線項目的清單。Snippets 收集那些從來不需要儲存庫的迷你應用程式。Domains 則管理這些應用程式對外提供服務的網址。如果你用過 Notion,可以想像一個頁面,它的分頁不是文件,而是可以運作的應用程式,底下再加一層類似 Vercel 的小型託管層:每個應用程式都有自己的資料庫、secrets、排程工作和子網域,詳見內部應用程式功能頁。

先看一下建置畫面

osFoundry 桌面版 app 的建置畫面,有 Pages 清單、空白的預覽區、附 Build my site 按鈕的描述框,以及 Maestro 聊天面板

想看一個應用程式是怎麼開始的,最快的方法就是桌面版 app 的建置畫面。這張截圖來自 Websites 建置工具(範例專案「Hearth Bakery」),它用的是和 Room 裡「Describe the app you want」框一樣的「先描述、再建置」流程。

  • 左邊的 Pages:應用程式中已經存在的部分,最下方是 Add page。
  • 中間的預覽區:你正在打造的東西,上方可切換桌機、平板和手機尺寸。「On this computer」標籤表示目前還沒有發布任何東西。
  • 描述框:寫下這個應用程式要做什麼、給誰用、想要什麼感覺,然後按 Build my site。應用程式的 AI 助理 Maestro 就會寫出檔案。
  • 右邊的 Maestro 面板:用來建置和修改應用程式的對話。按 Use a folder 可以讓它參考你自己的素材,而不是自己亂猜。
  • 上方的 Publish needs credits:建置和預覽都在你的電腦上進行;只有託管這一步會用到 workspace 點數。

在 Room 裡也是同樣的概念,只是排列方式不同:上方是一排應用程式分頁,中間是選取的應用程式,右側面板有兩個分頁,Maestro 和 Details。

使用情境 1:發布團隊把檢查清單放在工作現場

誰:一位 release manager 和三位準備上線的隊友。

狀況:cutover 步驟、runbook 和 release tracker 分散在三個工具裡,到了上線當天,沒有人信得過那份試算表。

他們在 osFoundry 裡做的事:

  1. 用 New Room 建立一個叫「Launch Ops」的 room,把 release tracker 和上線相關檔案加成分頁。
  2. 按分頁列上的 + 按鈕。New Tab 選單會列出已安裝的應用程式和一份目錄(Incident log、Retro board、On-call rota、Changelog builder),可以用 All、Forked 或 Snippets 篩選。
  3. 在「Describe the app you want」裡改按 Build a snippet,要求做一份每個項目都有負責人的 cutover 檢查清單。snippet 是由幾個檔案組成、可以直接執行的迷你應用程式。它沒有儲存庫、沒有版本、也不用部署,直接在分頁裡執行。
  4. 檢查清單開著的同時,繼續在右側面板和 Maestro 對話,並用 Details 分頁查看這個 room 的用途和裡面發生過的事。

最後的成果:一個 room 裡,檢查清單(demo 中是 Freeze the 2.4 branch、Run the order-index migration、Smoke-test the order desk、Post the release note)就放在 runbook 和 tracker 旁邊。之後,Snippets 畫面會列出所有 room 裡的 snippet。在那裡可以用 Export 把某個 snippet 匯出成 JSON 給其他 workspace 用,或是在它已經大到不適合待在分頁裡時,用 Promote 升級成真正的儲存庫。

使用情境 2:開發者幫內部工具接上真正的後端

誰:一位獨立開發者,正在為客服團隊打造報名與訂單工具。

狀況:第一版跑在一台筆電上,用的是 SQLite 檔案。現在有三個團隊要用它,它得呼叫金流 API,而且每晚的清理作業必須自動執行,不能靠人記得去按按鈕。

osFoundry IDE 的 Database 分頁,顯示 data/app.db 的 migrations、sessions、users 資料表,以及以唯讀表格呈現的 users 資料列

他在 osFoundry 裡做的事:

  1. 趁應用程式還在本機執行時,在 IDE 打開專案,點 Database 分頁。它會找到應用程式的 .db 和 .sqlite 檔案,以唯讀方式開啟資料表,每頁 200 列(上圖為範例資料),讓你在搬動任何東西之前,先看清楚應用程式實際存了什麼。
  2. 把應用程式搬到共用的 room。Move to cloud 對話框會把應用程式複製到 Cloud room,讓 room 裡的每個人都能使用,並回報哪些資料表已複製、哪些留在裝置上。應用程式和資料也會繼續保留在這台裝置上。
  3. 打開應用程式的分頁設定。在 Secrets 底下,App Runtime Secrets 會列出應用程式宣告的金鑰;Add a custom secret 可以新增一組,Rotate 則會替換某個值。接著應用程式會顯示「Secrets updated. Redeploy to apply changes.」
  4. 在應用程式 manifest 的 container.cron 底下宣告清理作業,然後打開 Scheduled jobs,點 Sync from manifest。每個工作都可以暫停、恢復,或用 Run now 立即執行一次。

最後的成果:一個擁有自己 Postgres 資料庫的應用程式。在 osFoundry 上,每個 Room App 都會配一個,預先裝好 pgvector 和 TimescaleDB,連線字串會在執行時以 secret 的形式提供(每個應用程式專屬的 Postgres)。資料庫瀏覽器有附篩選功能的資料列編輯器,以及只能執行 SELECT 的 SQL 檢視,而 Database snapshots 提供 New snapshot、Restore 和下載連結。程式碼的修改在 App Code 裡進行,開發者可以在 version/2.4 這類版本上作業而不動到 main,檢查 Manifest(進入點、可見性、需要的 connector),並在發布前查看 Versions 樹狀圖。

使用情境 3:店家老闆發布網頁並隨時掌握狀況

誰:一位經營小麵包店、不會寫程式的人。

狀況:她想要一個有菜單和營業時間的簡單網站,用自己的網址,也想知道維持網站上線要花多少錢。

osFoundry Websites 建置工具,預覽區顯示第一版三頁式麵包店網站,Maestro 回覆說在老闆提供菜單和照片之前,文字都只是暫定內容

她在 osFoundry 裡做的事:

  1. 打開 Websites,按 New Website,描述一下麵包店,再按 Build my site。第一版(上圖為範例)用的是暫代文字,Maestro 也會直接講明。
  2. 按 Use a folder,選擇放有真正菜單和照片的資料夾,然後用平常的話要求修改,例如「Make the headline bigger.」
  3. 看起來沒問題就發布。託管會用到 workspace 點數。Who can open it 可以選 Workspace members only、Anyone with the link,或應用程式自己的登入機制;公開的麵包店網站選 Anyone with the link。
  4. 在 Domains 註冊網域,或加入自己原本就有的網域,然後編輯 DNS 紀錄。Events 會顯示誰改了哪筆紀錄,Settings 裡則有續約、隱私設定和轉移碼。

osFoundry 預覽中完成的範例麵包店網站,麵包照片上有大大的標題,Maestro 確認標題已修改

最後的成果:一個用她自己的文字和照片、架在她自己網域上的網站。之後 Deployed Apps 就能回答老闆真正會問的問題。Apps 顯示每個應用程式和它的服務位置,Activity 顯示有哪些變更,Usage 顯示每個應用程式的建置和儲存成本,Previews 則列出仍在執行的預覽版本。

它如何和 osFoundry 其他功能銜接

Custom App 很少單獨運作。Maestro 是每個 Room 右側面板和建置畫面裡的助理,會和你一起撰寫、修改程式碼。IDE 提供 Database 分頁、版本控制,以及給那些從你電腦上某個資料夾起步的應用程式使用的編輯器。如果所謂的「應用程式」其實是個公開網站,用 Websites 會更快。Snippets 只透過 Promote 和 App Code 連結,所以一個用完即丟的小工具,不必重寫就能變成持續維護的儲存庫。應用程式內的排程工作由 app cron job 負責,詳見 app cron 平台頁面。

新手常問的問題

Room 是聊天室嗎?
不是。Room 的核心是它的應用程式分頁。Maestro 聊天位在右側的輔助面板,就在 room 的 Details 旁邊。

什麼時候該做 snippet,而不是應用程式?
當工具只有幾個檔案,而且只需要在一個 room 裡執行時,例如日期格式化工具或 webhook 檢查。儲存 snippet 不會安裝任何東西,也不會部署任何東西。如果之後需要版本、secrets 或資料庫,再用 Promote 把它升級成儲存庫。

兩個應用程式可以共用一個資料庫嗎?
每個應用程式都有自己的 Postgres。要共用必須透過明確授權:room 的 Database 分頁會顯示 Incoming Requests、Active Grants 和 Outgoing Access,每個請求都可以核准或拒絕。

試用要花錢嗎?
在你的電腦上建置和預覽不需要點數。發布、部署和註冊網域會用到 workspace 點數。桌面版 app 可以在 osfoundry.io/zh/download 下載。

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.