diff --git a/internal/worker/server.go b/internal/worker/server.go
index 9039847..5370300 100644
--- a/internal/worker/server.go
+++ b/internal/worker/server.go
@@ -14,6 +14,7 @@
 	"os"
 	"path/filepath"
 	"strconv"
+	"strings"
 	"sync/atomic"
 	"time"
 
@@ -195,7 +196,8 @@
 	}
 	templatePath := template.TrustedSourceJoin(staticPath, filename)
 	return template.New(filename.String()).Funcs(template.FuncMap{
-		"timefmt": FormatTime,
+		"timefmt":  FormatTime,
+		"commasep": func(s []string) string { return strings.Join(s, ", ") },
 	}).ParseFilesFromTrustedSources(templatePath)
 }
 
@@ -237,42 +239,40 @@
 	Updates          []*store.CommitUpdateRecord
 	CVEsNeedingIssue []*store.CVERecord
 	CVEsUpdatedSince []*store.CVERecord
+	ModuleScans      []*store.ModuleScanRecord
 }
 
 func (s *Server) indexPage(w http.ResponseWriter, r *http.Request) error {
 
-	var (
-		updates                    []*store.CommitUpdateRecord
-		needingIssue, updatedSince []*store.CVERecord
-	)
+	var page = indexPage{
+		CVEListRepoURL: cvelistrepo.URL,
+		Namespace:      s.cfg.Namespace,
+	}
 
 	g, ctx := errgroup.WithContext(r.Context())
 	g.Go(func() error {
 		var err error
-		updates, err = s.cfg.Store.ListCommitUpdateRecords(ctx, 10)
+		page.Updates, err = s.cfg.Store.ListCommitUpdateRecords(ctx, 10)
 		return err
 	})
 	g.Go(func() error {
 		var err error
-		needingIssue, err = s.cfg.Store.ListCVERecordsWithTriageState(ctx, store.TriageStateNeedsIssue)
+		page.CVEsNeedingIssue, err = s.cfg.Store.ListCVERecordsWithTriageState(ctx, store.TriageStateNeedsIssue)
 		return err
 	})
 	g.Go(func() error {
 		var err error
-		updatedSince, err = s.cfg.Store.ListCVERecordsWithTriageState(ctx, store.TriageStateUpdatedSinceIssueCreation)
+		page.CVEsUpdatedSince, err = s.cfg.Store.ListCVERecordsWithTriageState(ctx, store.TriageStateUpdatedSinceIssueCreation)
+		return err
+	})
+	g.Go(func() error {
+		var err error
+		page.ModuleScans, err = s.cfg.Store.ListModuleScanRecords(ctx, 300)
 		return err
 	})
 	if err := g.Wait(); err != nil {
 		return err
 	}
-
-	page := indexPage{
-		CVEListRepoURL:   cvelistrepo.URL,
-		Namespace:        s.cfg.Namespace,
-		Updates:          updates,
-		CVEsNeedingIssue: needingIssue,
-		CVEsUpdatedSince: updatedSince,
-	}
 	return renderPage(r.Context(), w, page, s.indexTemplate)
 }
 
diff --git a/internal/worker/static/index.tmpl b/internal/worker/static/index.tmpl
index f06c48c..6f2ca86 100644
--- a/internal/worker/static/index.tmpl
+++ b/internal/worker/static/index.tmpl
@@ -69,6 +69,23 @@
     {{end}}
   </table>
 
+  <h2>Recent Module Scans</h2>
+  <table>
+    <tr>
+      <th>Module</th><th>Version</th><th>DB Time</th><th>Vulns</th><th>Finished</th><th>Error</th>
+    </tr>
+    {{range .ModuleScans}}
+      <tr>
+        <td>{{.Path}}</td>
+        <td>{{.Version}}</td>
+        <td>{{.DBTime | timefmt}}</td>
+        <td>{{.VulnIDs | commasep}}</td>
+        <td>{{.FinishedAt | timefmt}}</td>
+        <td>{{.Error}}</td>
+      </tr>
+    {{end}}
+  </table>
+
 </body>
 </html>
 
