[object Object]

← back to Commercialrealestate

FHA loans: add /fha-loans route + /api/fha-loans JSON endpoint to serve.js

4191307b04372ea3618b148fae82b638f7041ca8 · 2026-06-30 16:44:04 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 4191307b04372ea3618b148fae82b638f7041ca8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Jun 30 16:44:04 2026 -0700

    FHA loans: add /fha-loans route + /api/fha-loans JSON endpoint to serve.js
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 scripts/serve.js | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/scripts/serve.js b/scripts/serve.js
index fd469c1..9bf8904 100644
--- a/scripts/serve.js
+++ b/scripts/serve.js
@@ -125,6 +125,21 @@ app.get('/api/brokers/linkedin', async (req, res) => {
   } catch (e) { res.status(502).json({ error: String(e.message).split('\n')[0], people: [] }); }
 });
 
+// ALL brokers/agents with EVERY field — backs the sortable/searchable broker grid+list (broker-grid.html).
+app.get('/api/brokers/all', async (req, res) => {
+  if (!brokerdb) return res.json({ brokers: [], unavailable: true });
+  try {
+    const rows = (await brokerdb.pool.query(
+      `SELECT b.id, b.name, f.name firm, b.agent_type, b.phone, b.email, b.website, b.linkedin,
+              b.license, b.title, b.total_assets, b.specialties, b.office_addr, b.crexi_id, b.source, b.created_at,
+              (SELECT count(*) FROM broker_listing bl WHERE bl.broker_id=b.id)
+              + (SELECT count(*) FROM broker_condo bc WHERE bc.broker_id=b.id) AS listings
+         FROM broker b LEFT JOIN firm f ON f.id=b.firm_id
+         ORDER BY listings DESC NULLS LAST, b.name`)).rows;
+    res.json({ brokers: rows, total: rows.length });
+  } catch (e) { res.status(502).json({ error: String(e.message).split('\n')[0], brokers: [] }); }
+});
+
 // Best leads for Frank — rank brokers by how financeable their CURRENT listings are for Arcstone's
 // non-QM / portfolio products (mixed-use, non-warrantable condo, DSCR multifamily — the deals
 // conventional lenders pass on). Returns ranked brokers WITH their current listings (MLS-like fields).

← 06ad891 auto-save: 2026-06-30T16:41:53 (10 files) — public/condos.ht  ·  back to Commercialrealestate  ·  Broker grid+list view — all 2,537 brokers, every field sorta ddcd86b →