Go to file
2026-09-16 19:08:06 +08:00
.cursor feat: init 2026-09-16 19:08:06 +08:00
api/proto feat: init 2026-09-16 19:08:06 +08:00
cmd/server feat: init 2026-09-16 19:08:06 +08:00
configs feat: init 2026-09-16 19:08:06 +08:00
deploy/nginx feat: init 2026-09-16 19:08:06 +08:00
docs feat: init 2026-09-16 19:08:06 +08:00
internal feat: init 2026-09-16 19:08:06 +08:00
migrations feat: init 2026-09-16 19:08:06 +08:00
.gitignore feat: init 2026-09-16 19:08:06 +08:00
.golangci.yaml feat: init 2026-09-16 19:08:06 +08:00
AGENTS.md feat: init 2026-09-16 19:08:06 +08:00
go.mod feat: init 2026-09-16 19:08:06 +08:00
go.sum feat: init 2026-09-16 19:08:06 +08:00
Makefile feat: init 2026-09-16 19:08:06 +08:00
README.md feat: init 2026-09-16 19:08:06 +08:00

spark-server

Spark IM modular monolith. Architecture: docs/architecture-v3.md.

  • Go 1.26
  • Gin HTTP on 127.0.0.1:8080
  • gnet TCP on 127.0.0.1:9000 (EventLoop + TaskPool). gnet v2.10 has no built-in TLS; production terminates TLS at Nginx or a PROXY+TLS wrapper in front of gnet. Loopback is not public.
  • Public entry is Nginx :443 only (SNI split)
go build -o bin/spark-server ./cmd/server
./bin/spark-server -config configs/config.yaml
make lint

Agent conventions live in .cursor/rules and .cursor/skills/spark-im-v3. Lint conventions live in .golangci.yaml.