| .cursor | ||
| api/proto | ||
| cmd/server | ||
| configs | ||
| deploy/nginx | ||
| docs | ||
| internal | ||
| migrations | ||
| .gitignore | ||
| .golangci.yaml | ||
| AGENTS.md | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
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
:443only (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.