宅宅的浪漫:用 AI 為自己的研討會寫一個售票系統

兩個多月,18 萬行程式碼,從開發到部署、上線,一個人。感覺有點夢幻,但好像真的做到了,而且功能還在持續增加中!

故事要從去年的 12 月我們舉辦的 WebConf Taiwan 2024 開始說起。

一直以來,在台灣舉辦的社群活動或技術研討會,報名或售票系統大多是使用活動通或是 KKTIX 之類的服務,我們也是。我覺得很棒,使用上很方便也都沒什麼問題,不過因為身為 SaaS(Software as a Service)終究還是有一些限制,沒辦法為特定客戶做客製化。在我們活動結束後的會後檢討我就想,如果我們有一些自己的需求的話,也許下回我們可以自己來做一個報名系統:

image

為什麼?既然都是工程師們的 Web 研討會,如果能自己做一個系統來用好像不錯,這種「吃自己的狗糧(Eating Your Own Dog Food)」也是一種「工程師的浪漫」(自以為)

講是這樣講,但哪裡這麼簡單。我很常許這種不切實際的願望,大多不了了之,這次原本也不例外。但今年開始眼見 AI Agent 越來越厲害,我發現好像可以試著跟 AI 一起來做這件事,我就找了 Claude Code 來試試看,一試下去才發現不得了,AI Agent 也太厲害了吧,我之前曾經試用過 Cursor 跟 Windsurf 都不錯,但 Claude Code 這種 CLI 模式的開發體驗,跟我過去使用 Vim 開發的習慣非常契合,感覺很不錯。

但講到這裡我必須先說,不是 AI Agent 開下去跟它聊聊天系統就會自動生出來,基本上這個系統我就算不靠 AI 也能自已做出來,只是可能時程至少半年以上,而且照我實際的狀況,大概做一做就會被別的事拉走就放棄了。但跟 AI 一起開發,有種在玩遊戲的感覺,在開發的過程中我甚至會懷疑我自己的存在價值,看著 AI 在幾秒內寫出我要花一小時才能完成的程式碼,那種感覺很微妙。

我曾經估算過,在我狀況好而且不被打擾的情況下,一天大概能寫 1,000 行程式碼,但在 AI 的協助下,兩個月內從零開始寫到 15 萬行程式碼,現在持續增加已經接近 18 萬行,而且都還是在下班或假日的時間在做這件事,這對我這個寫程式寫很多年的老骨頭來說還是很驚人。就是因為這樣,用 AI 開發的「試誤成本」變得非常低,如果寫壞了再請它重寫一次就好,這讓我膽子變大了,開始敢挑戰我以前覺得比較麻煩、花時間的功能。

一開始只是想做個報名、售票的網站,但後來越做越多功能,不只能賣票,還能賣數位內容,接上了物流之後還能賣實體商品:

image

不知不覺越做越多,現在整個系統的程式碼量已經將近 18 萬行,而且整個專案到現在還是就只有我一個人開發。

image

目前 ezBundle 已經有:

還有一些沒列出來的,就以一個賣東西的平台來說雖然還不到很厲害,但差不多該有的功能也都有了,就算沒有我也可以很快再做上去,過陣子我再拍個影片來介紹這個系統的功能 :)

技術上我選用 Ruby on Rails 框架做為主體,也許會好奇為什麼不用更流行的框架?原因很簡單:我寫 Rails 十幾年了,對框架的細節應該不會比 AI 差,我認為身為一位開發者,在跟 AI 協同開發的過程中,對開發工具的熟悉度是很重要的,這樣才能有效引導 AI 產出正確的程式碼,萬一 AI 寫歪了也知道把它拉回來。

上線試用!

再醜的作品總是要拿出來見人,雖然系統還沒到很成熟,但如果不拿出來試一下也不知道到底行不行,所以我就跟朋友商量能不能用他的活動來試試。我刻意開了單人與多人團購票種以及每人限購的組合實驗,活動當天在現場用手機跟桌機都可以順利完成驗票,除了要花點時間找票券之外,整個流程還算順利。

在這裡先感謝大家願意給我當白老鼠做各種測試並且給我寶貴的回饋意見,讓 ezBundle 可以越來越好用。

另外一個是我自己的線上直播課程:https://ezbundle.cc/p/ai-coding

image

同樣除了有早鳥票、單人票、多人票、限購票多種組合,就是刻意模擬 WebConf 研討會可能的票種組合。以售票數來說目前有約 200 人報名了,系統承載沒問題,金流處理也都正常,感謝大家支持,看起來應該沒什麼大問題。

偷偷業配一下,這個直播課程就是把我跟 AI 一起做這個 ezBundle 系統的心得整理出來,然後再用 4 個小時的時間直接實作一個薪資管理系統,讓大家看看我是怎麼跟 AI 一起協作開發的。

我寫的「為你自己學 Python」這本書我也擺上來了:https://ezbundle.cc/p/python-book

image

目前物流還在試驗中所以暫時只能賣數位內容,待完成後就可以像國外的出版社一樣,可以賣實體書、電子書以及實體書加電子書的組合銷售了。

整體來說,這跟我以前開發系統的過程並沒有太大差別,差別在於以前我都是自己一行一行寫程式碼,現在是用對話的方式跟 AI 討論規格,然後盯著它寫,它寫歪了我就把它拉回來或是整段砍掉重寫,但要上線前的測試、上線後的維護、功能的新增,以及「一邊開飛機一邊換引擎」的手感都跟以前沒什麼兩樣。

還有什麼想做的?

有,還很多想要試試看,像是捐款、抖內、團購、訂閱制、推薦獎勵機制,以目前的架構來說應該都不難做。不過不急,如果沒意外的話,今年 12/12(五)、12/13(六)我們舉辦的 WebConf Taiwan 2025 活動會試著使用 ezBundle 來做報名、售票、驗票等功能了。如果七、八百人的活動從報名、售票、驗票、現場票券管理都能用它完成,甚至還能在現場用它玩一些跟贊助商的互動遊戲,那應該就是最好的成果驗收。

有興趣也來用這個平台賣點東西嗎?不管是課程、活動票券、數位內容或實體商品都可以。如果心臟夠大顆 & 信的過我的技術,歡迎私訊給我,我們來聊聊看可以怎麼進行。