Cross-platform desktop app (Windows / macOS) for English learning, built with Wails v3 and sqlc over SQLite.
- Go 1.24+ (this project uses
toolchain go1.25.4for Wails v3 alpha.60) - Wails v3 CLI:
go install github.com/wailsapp/wails/v3/cmd/wails3@v3.0.0-alpha.60 - Pin
@wailsio/runtimeto3.0.0-alpha.76infrontend/package.json(must match the Go Wails module version family) - Node.js (for the React frontend)
- Optional: sqlc for regenerating query code
Run wails3 doctor to verify your environment.
cd frontend && npm install && cd ..
wails3 devProduction build:
wails3 buildCross-compile (from macOS or Windows with toolchains installed):
wails3 build GOOS=windows
wails3 build GOOS=darwin| Path | Purpose |
|---|---|
main.go |
Wails app entry, service registration |
appservice.go |
Backend API exposed to the frontend |
frontend/ |
React + TypeScript UI (Vite) |
internal/database/schema.sql |
SQLite schema (sqlc source of truth, embedded at runtime) |
db/queries/ |
SQL queries consumed by sqlc |
internal/store/ |
sqlc-generated Go data access (task sqlc) |
internal/database/ |
DB open, embedded schema apply, default path |
sqlc.yaml |
sqlc configuration |
- Engine: SQLite via
modernc.org/sqlite(pure Go; works with Wails Windows builds whereCGO_ENABLED=0) - Default file:
talus-mofish/talus-mofish.dbunder the OS user data directory:- Windows:
%LOCALAPPDATA%\talus-mofish\(internal/database/paths_windows.go) - macOS:
~/Library/Application Support/talus-mofish/ - Linux:
$XDG_CONFIG_HOME/talus-mofish/or~/.config/talus-mofish/(paths_unix.go)
- Windows:
- Schema: idempotent SQL in
internal/database/schema.sql(embedded indatabase.goat build time)
Print the default DB path:
task db:path
# or
go run ./cmd/dbpathRegenerate store code after changing SQL:
task sqlc- Edit
internal/database/schema.sql(or add numbered migration files later). - Add queries under
db/queries/*.sql. - Run
task sqlcand commitinternal/store/changes.
AppService— settings CRUD, config, autostart, andDatabasePath()
Bindings are generated under frontend/bindings/ when running wails3 dev or wails3 build.