開始動手實作pomodoro side project

# flutter# side_project

最近終於開始進行消耗我長期以來一直累積要實作的 side porjects,會加s是因爲有很多projects想做,但是一直pending沒做:P 之前的zettelkasten card and blog static website generator是其中一個,這次要做的是偏向時間管理的工具,其實這種pomodoro 的app有很多,但是基本上都是要錢才能用到大部分功能,免費的功能幾乎只是一個計時器的感覺,當然有些免費的app功能提供不少,但是就是UI或是UX部分用的不是順手,目前免費功能大概覺得還不錯的是這個 https://pomofocus.io/ ,不過要更進階的功能就要付費啦~ 因此就萌生想要開始做一個給自己用的念頭。

前言

pomodoro 這個方法我其實已經用了大概兩年有了吧,但是說實在的我並沒有鑽研到多麼深的境界,起初我是因爲在閱讀書本間歇高效的番茄工作法從中感受到,或許這個可以拿來幫助我專注跟減少拖延症! 所以就抱著嘗試的心態來實驗一下。就目前而言我個人最有感的部分是,pomodoro顯然變成一個專注模式的開關,每當我按下 start 就代表我接下來要認真了,儘量不讓任何事物打擾,內部干擾其實就是自己的內心問題,比較麻煩的是外部干擾的問題。

內部干擾,比如有些人可能就是做事3分鐘熱度,一開始很認真,但是過沒多久心就飄了,雖然他目前可能還在做著事情,但是心裡已經開始想東想西,注意力不集中,以爲自己可以邊動手現在的事情,心裡則是預想其他事情怎麼處理。其實以前我有這樣過,最後很累,而且不一定事情會處理得漂亮,人還是不適合多工啊~

外部干擾,在公司最明顯,太容易被敲訊息,或是有人找上你,這真的只能看你怎麼跟大家做協調了,還有就是不要讓pomodoro session 太長(比如25分鐘),你要在25分鐘內,完全不要有人找你,好像蠻難的? 有可能看職位還有公司工作style啦,總之這個只能儘量。

不過身邊有在用 pomodoro 的人幾乎是沒有,所以比較難做一些意見交換,不確定大家的使用方式是如何,不過我既然初步是想要做一個給自己用順手的,就先按照自己的意思來吧。

構想

這次想要找一些實作的靈感還真是不太好找,除了數量不多(跟其他作品比),大家做的 wireframe 都滿像的,可以參考的範本不多,所以其實這次花在找靈感的時間比之前做部落格還要多更多,大概兩個禮拜多,我心想有點卡太久了,不能夠被 完成 裡面提到的完美主義給拖延到,我還是先從部分想要的跟比較確定開始做做看,試個手感!

老樣子我這邊依然在 figma 上面先記錄一下想法還有簡陋的wireframe

這次的技術方面選擇是打算用 flutter ,關於 flutter 介紹可以去官網 https://flutter.dev/ 看看,會想用這個除了私心想學一下之外,主要是他可以支援編譯你的程式在 windows、macos、linux桌面端之外,連web也可以,甚至是mobile(android、ios),不過或多或少我猜各平臺還是需要tuning啦,但是就當作一個嘗試這樣。 不過我也不是最近才看到這個語言,其實前兩年左右了吧,就有看到了,我想說過了這麼久了,照理說應該相對成熟了不少才對,我看連官方都放上不少showcase了,所以我也多少安心來使用,要不然在這個實作side project 的路上,搞不好光是踩地雷我就飽了,還實作咧 lol

初步規劃大概是以這些爲主軸,細節就之後且戰且走~

Customizable Pomodoro session and break intervals Optional subtle animations and sound effects for enhanced user experience

Smart Reminders

  • Timely break notifications to promote productivity

Advanced Pomodoro Session Management:

  • Seamless transition from Pomodoro to rest session

Task Management:

  • Organize tasks with projects and tags for better prioritization

Insights and Analytics:

  • Comprehensive report and analytics system to track progress

Timely Notifications:

  • Receive alerts before the end of each Pomodoro session

Automated Daily Time Blocking:

  • Generate a daily schedule based on completed Pomodoro sessions"

想法和功能有個大概後,再來就是一些可能需要的 library 調研,其實flutter目前體感上,內建功能就滿足的,像是 state management 其實原生的 provider跟consumer(https://pub.dev/documentation/provider/latest/provider/Consumer-class.html) 就能夠應付大部分狀況,但是我還是用了一個library,叫做 riverpod (https://riverpod.dev/), 老實講目前沒用得很順手,因爲他近期的更新加了一些不兼容的寫法,而且寫法上改變很大,最主要是連他的文檔,關於最新的語法要怎麼用都講的很少,所以我覺得這個不適合剛入門flutter的人用,算是我自討苦吃的一個選擇 lol 另外其實這類的 state management tool 都會搭配 immutability 的特性,所以另外用了 freezed(https://pub.dev/packages/freezed) 這個library,最後推播的套件我是選了https://pub.dev/packages/flutter_local_notifications , 主核心大概就這些,剩下的就看到時候要多什麼feature再多加就行了!

實作過程

我對於flutter其實也是第一次碰,但是最近AI tool實在是進步很快,相信如果你是claude或chatgpt付費用戶,其實要實作應該是滿容易的,甚至是截圖叫它實作畫面大概都有87%像,不過對於我這個免費仔,我都只在必要的時候,用它們的免費額度,主要我是用一些 open source AI model 來幫助我寫code 。不得不說加上AI的幫助,其實寫得很順,尤其是對於一開始常常不知道flutter到底有什麼 widget 可以用在當前場景的時候,問AI通常都可以得到一個不錯的答案,讓我不禁感嘆,如果是以前的時候,這時候都還在努力google or stackoverflow,或是大力啃官方文檔,都不知道消耗多少時間去了! 話雖如此目前AI給的code有不少部分還是得仰賴你自己改(可能是我不是用付費有差吧,很多朋友都說幾乎不用改就可以直接運行),但是真的幫你省了不少心力,有很大部分的感覺是好像多了一個人跟你一起coding的fu跟加上一個超強大的文檔搜尋利器,真心覺得傳統google search會迎來很大的挑戰。

關於AI寫code,等我多累積體驗後再來寫blog表達一下感想,我只能說未來AI取代人力寫code不是不可預期的,只是當前無法,但是你不知道它會進步的多快~

下面這張圖是我目前實作的樣子,其實大概有50%都是AI寫出來的 lol

大致上功能有簡易任務管理跟計時還有自動切換 work / break session,其餘功能會一步一步加上去,當前畫面也是先以desktop爲主,畢竟目前使用上,還是用電腦的時候,才會用到 pomodoro,好像不太有什麼需求是需要隨時使用,但是之後還是會做 responsive 給 mobile 平臺用。

flutter目前體驗還行,主要是麻煩在不知道有什麼widgets可用,還有就是排版不像寫web那樣好用,應該也是因爲我不熟悉的關係? 另外我有發現flutter的library 似乎成熟度沒有很高,不像其他語言那樣使用上不太有問題,flutter的反而我有時候很常需要看github上面issue,有遇到一些而且目前也都是workaround的解法! 對於這個語言的未來其實我也不太確定 lol 而且之前看到一則訊息 https://techcrunch.com/2024/05/01/google-lays-off-staff-from-flutter-dart-python-weeks-before-its-developer-conference/, 連google自己都拿掉一些開發的人了,這雖然不是對flutter宣告死刑,但是也大概透露出一些味道了,加上看一些論壇都在問 flutter的職缺多嗎? 之類的問題。而且 react native,也有人開始幫它增加其他平臺的支援了(https://reactnative.dev/docs/out-of-tree-platforms) ,所以競爭激烈啊。。

總之,我應該會先把flutter當作一個值得玩味的語言工具吧。

心得

現在我用著自己寫的pomodoro app,起碼有初步滿足我個人私心的體驗:p 目前已經取代掉我之前使用的pomofocus了,而且還加了一些他原本要付費的功能,之後打算加一些其他 report 的功能,現在只有簡易的 time blocking

看看之後,能不能將這個使用體驗昇華和提升pomodoro的使用技巧,如同 心流 flow 提到的培養足夠的技能來提升心流體驗,如果我的使用方式一直停留在兩年前,那麼或許我對於這套方式的認知大概就停滯不前了吧? 但是也不是說這樣不對,或許把 pomodoro 當作一個認真模式的觸發器,其實就已經是一個很大功用了,就讓當時的我足夠滿足了。

最近只是來研究跟實驗看看可能性還有動手實現各個side project~

未來

沒意外就是繼續實作功能,其實還有很多可以做跟調整的功能,光是要跨平臺就要很多功夫了,只是目前需要再吸收融會貫通pomodoro的精神,還有自己使用的方式再加入有打動我的功能,之後也會整理一下flutter心得。

If you like my content,

feel free to buy me a coffee

Enjoy crafting new things

Never stop learning.

Life is the sum of your daily habits.

Find things that you enjoy and please

Doit.

Feel free to connect with me.

Created by potrace 1.16, written by Peter Selinger 2001-2019

© Jing 2024. All rights reserved.