You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: TODO.md
+15-24Lines changed: 15 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,9 @@
4
4
5
5
Rewrite Ghost Chat from Electron to **Wails v2** with a **Go** backend and **React + TypeScript** frontend.
6
6
7
+
### Learning approach
8
+
When introducing new Go syntax or concepts, always provide a **Node.js/TypeScript equivalent** for comparison. For example: `goroutine` ≈ `Promise`/`async`, `channel` ≈ `EventEmitter`, `interface` ≈ `interface` (but implicit), `defer` ≈ `finally`, etc.
-[x] Add a Go method to `app.go` that returns a string, call it from frontend
@@ -62,7 +65,7 @@ Rewrite Ghost Chat from Electron to **Wails v2** with a **Go** backend and **Rea
62
65
> **Goal**: Set up the real project structure, config persistence, and window basics.
63
66
64
67
### 1.1 Project structure
65
-
-[] Reorganize the scaffolded project into this layout:
68
+
-[x] Reorganize the scaffolded project into this layout:
66
69
```
67
70
ghost-chat/
68
71
├── main.go # Entry point
@@ -101,28 +104,16 @@ Rewrite Ghost Chat from Electron to **Wails v2** with a **Go** backend and **Rea
101
104
│ └── package.json
102
105
└── wails.json
103
106
```
104
-
-[]**Learn**: The `internal/` directory is a Go convention — packages inside cannot be imported by external modules. It signals "private to this project."
107
+
-[x]**Learn**: The `internal/` directory is a Go convention — packages inside cannot be imported by external modules. It signals "private to this project."
105
108
106
109
### 1.2 Config store (Go)
107
-
-[ ] Define the `Config` struct in `internal/config/config.go` mirroring your app's settings:
108
-
```go
109
-
typeConfigstruct {
110
-
Versionstring`json:"version"`
111
-
WindowWindowState`json:"window"`
112
-
SettingsSettings`json:"settings"`
113
-
GeneralGeneral`json:"general"`
114
-
KeybindsKeybinds`json:"keybinds"`
115
-
TwitchTwitchConfig`json:"twitch"`
116
-
YouTubeYouTubeConfig`json:"youtube"`
117
-
ExternalExternalConfig`json:"external"`
118
-
}
119
-
```
120
-
-[ ] Implement `Load(path string) (*Config, error)` — reads JSON file, returns config with defaults for missing fields
0 commit comments