π‘ Idea
An desktop app that take screenshot every specified minutes and upload to the server so your manager can track your work progress (read micro management).
π Requirements
- Not electron
- Cross platform
- Fun to develop
π οΈ Tech Stack
Wails with Golang for OS level’s tasks
Vue for frontend (UI will be simple, so Vue, React, Angular, whatsoever is fine)
π Design
I found the Linear design system is very cool and it has a community version in Figma https://www.figma.com/community/file/1222872653732371433/linear-design-system, so let’s use it.
π Development
Wails doc is good enough, so I will just write down some notes here.
wails init -n myproject -t vue-ts
Ok we got this, basically a Go application with Vue inside the frontend
directory
.
βββ README.md
βββ app.go
βββ build
βΒ Β βββ README.md
βΒ Β βββ appicon.png
βΒ Β βββ bin
βΒ Β βΒ Β βββ myproject.app
βΒ Β βΒ Β βββ Contents
βΒ Β βΒ Β βββ Info.plist
βΒ Β βΒ Β βββ MacOS
βΒ Β βΒ Β βΒ Β βββ myproject
βΒ Β βΒ Β βββ Resources
βΒ Β βΒ Β βββ iconfile.icns
βΒ Β βββ darwin
βΒ Β βΒ Β βββ Info.dev.plist
βΒ Β βΒ Β βββ Info.plist
βΒ Β βββ windows
βΒ Β βββ icon.ico
βΒ Β βββ info.json
βΒ Β βββ installer
βΒ Β βΒ Β βββ project.nsi
βΒ Β βΒ Β βββ wails_tools.nsh
βΒ Β βββ wails.exe.manifest
βββ frontend
βΒ Β βββ READ-THIS.md
βΒ Β βββ README.md
βΒ Β βββ index.html
βΒ Β βββ package.json
βΒ Β βββ src
βΒ Β βΒ Β βββ App.vue
βΒ Β βΒ Β βββ assets
βΒ Β βΒ Β βΒ Β βββ fonts
βΒ Β βΒ Β βΒ Β βΒ Β βββ OFL.txt
βΒ Β βΒ Β βΒ Β βΒ Β βββ nunito-v16-latin-regular.woff2
βΒ Β βΒ Β βΒ Β βββ images
βΒ Β βΒ Β βΒ Β βββ logo-universal.png
βΒ Β βΒ Β βββ components
βΒ Β βΒ Β βΒ Β βββ HelloWorld.vue
βΒ Β βΒ Β βββ main.ts
βΒ Β βΒ Β βββ style.css
βΒ Β βΒ Β βββ vite-env.d.ts
βΒ Β βββ tsconfig.json
βΒ Β βββ tsconfig.node.json
βΒ Β βββ vite.config.ts
βΒ Β βββ wailsjs
βΒ Β βββ go
βΒ Β βΒ Β βββ main
βΒ Β βΒ Β βββ App.d.ts
βΒ Β βΒ Β βββ App.js
βΒ Β βββ runtime
βΒ Β βββ package.json
βΒ Β βββ runtime.d.ts
βΒ Β βββ runtime.js
βββ go.mod
βββ go.sum
βββ main.go
βββ wails.json
Install Tailwinds
cd myproject/frontend
# More here π https://v2.tailwindcss.com/docs/guides/vue-3-vite
npm install -D tailwindcss@latest postcss@latest autoprefixer@latest
npx tailwindcss init -p
Wails will bind Go code to Window and generate corresponding Typescript for us, so we can use it in frontend.
Ok let’s implement the UI first. It’s all about me, Tailwind classes and Vue components, nothing fancy here. It took me about 1 hours Sunday afternoon to get this screen.
(To be continue…)