See your backend's flow,
drawn from the code.
archview reads your Go source and renders the live path from endpoint → controller → service → repository. No annotations. Click any node to open it in your editor.
What you get
go-callvis, plus the three things it never knew.
Layer-aware
Each function placed as controller, service or repository — grouped into module swimlanes.
Route-aware
Endpoints detected from your gin and net/http registrations, wired to their handlers.
Click to source
Every node deep-links to file:line in VS Code or Cursor.
Pattern-aware
Modular MVC or hexagonal ports & adapters — arrows follow your real call graph.
Framework-agnostic
gin and net/http out of the box; add any framework with a single interface.
Zero annotations
Pure static analysis via a CHA call graph. No tags, no comments, no decorators.
Three lines
Mount it. Open /graph.
archview owns its own path and hands the rest back to your router. It analyzes the module at startup, so the graph is always current with your code.
Read the quickstart// analyze source, serve the graph
av, _ := archview.New(archview.Options{Root: "."})
av.Mount(mux)
http.ListenAndServe(":8080", mux)The pipeline