feat: web UI + HTTP server + Electron shell #10

Merged
david merged 4 commits from wip into main 2026-06-22 02:48:06 +00:00
5 changed files with 75 additions and 3 deletions
Showing only changes of commit 9657aaa523 - Show all commits
+1
View File
@@ -10,6 +10,7 @@ akaiutil-4.6.7/
# Build artifacts # Build artifacts
*.o *.o
*.obj *.obj
third_party/akaiutil/akaiutil
# Data # Data
*.iso *.iso
+6 -2
View File
@@ -13,7 +13,8 @@ RUN make
FROM golang:1.26-alpine AS fetch-builder FROM golang:1.26-alpine AS fetch-builder
WORKDIR /src WORKDIR /src
COPY go.mod main.go /src/ COPY go.mod main.go serve.go /src/
COPY web/ /src/web/
RUN CGO_ENABLED=0 go build -o /fetch . RUN CGO_ENABLED=0 go build -o /fetch .
# Stage 3: Runtime image # Stage 3: Runtime image
@@ -24,10 +25,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \ ca-certificates \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
RUN mkdir -p /data/output/isos /data/output/wavs
COPY --from=akaiutil-builder /src/akaiutil/akaiutil /usr/local/bin/ COPY --from=akaiutil-builder /src/akaiutil/akaiutil /usr/local/bin/
COPY --from=fetch-builder /fetch /usr/local/bin/fetch COPY --from=fetch-builder /fetch /usr/local/bin/fetch
COPY scripts/extract_wavs.sh /usr/local/bin/ COPY scripts/extract_wavs.sh /usr/local/bin/
WORKDIR /data WORKDIR /data
EXPOSE 8080
ENTRYPOINT ["fetch"] ENTRYPOINT ["fetch"]
CMD ["--help"] CMD ["serve", "-p", "8080"]
+40 -1
View File
@@ -1,21 +1,60 @@
BIN := fetch BIN := fetch
IMAGE := akai-fetch IMAGE := akai-fetch
REMOTE := dhg.lol REMOTE := dhg.lol
ELECTRON_DIR := electron
build: build:
CGO_ENABLED=0 go build -buildvcs=false -o $(BIN) . CGO_ENABLED=0 go build -buildvcs=false -o $(BIN) .
akaiutil:
$(MAKE) -C third_party/akaiutil
all: build akaiutil
docker: docker:
docker build -t $(IMAGE) . docker build -t $(IMAGE) .
docker-run: docker-run:
docker run --rm -v "$(PWD)/output:/data" $(IMAGE) $(ARGS) docker run --rm -v "$(PWD)/output:/data" $(IMAGE) $(ARGS)
docker-up:
docker compose up --build
docker-down:
docker compose down
serve: build
./$(BIN) serve
# ─── Electron targets ──────────────────────────────────────
electron-deps:
cd $(ELECTRON_DIR) && npm install
electron-dev: build
cd $(ELECTRON_DIR) && npx electron .
electron-build: build akaiutil
cd $(ELECTRON_DIR) && npx electron-builder --dir
electron-build-mac: build akaiutil
cd $(ELECTRON_DIR) && npx electron-builder --mac --dir
electron-build-linux: build akaiutil
cd $(ELECTRON_DIR) && npx electron-builder --linux --dir
# ─── Server / remote ───────────────────────────────────────
install: build install: build
scp $(BIN) $(REMOTE):/tmp/$(BIN) && \ scp $(BIN) $(REMOTE):/tmp/$(BIN) && \
ssh $(REMOTE) "sudo mv /tmp/$(BIN) /DATA/Downloads/akai/$(BIN) && sudo chmod +x /DATA/Downloads/akai/$(BIN)" ssh $(REMOTE) "sudo mv /tmp/$(BIN) /DATA/Downloads/akai/$(BIN) && sudo chmod +x /DATA/Downloads/akai/$(BIN)"
clean: clean:
rm -f $(BIN) rm -f $(BIN)
rm -rf $(ELECTRON_DIR)/dist
rm -rf $(ELECTRON_DIR)/node_modules
$(MAKE) -C third_party/akaiutil clean
.PHONY: build docker docker-run install clean .PHONY: build akaiutil all docker docker-run docker-up docker-down serve \
electron-deps electron-dev electron-build electron-build-mac electron-build-linux \
install clean
+9
View File
@@ -0,0 +1,9 @@
services:
akai-utils:
build: .
ports:
- "8080:8080"
volumes:
- ./output:/data/output
environment:
- AKAIUTIL=/usr/local/bin/akaiutil
+19
View File
@@ -0,0 +1,19 @@
[tools]
go = "1.26"
node = "22"
[env]
CGO_ENABLED = "0"
[tasks]
build = "go build -buildvcs=false -o fetch ."
akaiutil = "make -C third_party/akaiutil"
all = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil" }
serve = { run = "go build -buildvcs=false -o fetch . && ./fetch serve" }
lint = "go vet ./..."
electron-deps = "cd electron && npm install"
electron-dev = { run = "go build -buildvcs=false -o fetch . && cd electron && npx electron ." }
electron-build = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil && cd electron && npx electron-builder --dir" }
electron-build-mac = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil && cd electron && npx electron-builder --mac --dir" }
docker-up = "docker compose up --build"
docker-build = "docker build -t akai-fetch ."