new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻譯準備中
Ask Xpert AI, Ghandhara Estate's real estate assistant, about buying, selling or renting property in Islamabad and Rawalpindi — houses, plots, apartments, farmhouses and commercial space. Get clear an
翻譯準備中
行銷TypeScript · JavaScriptGitHub @itsmeharoon112233-netizen上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證dgfhfhjfh
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
An AI real estate assistant for ghandharaestate.com, powered by Claude.
Visitors ask about buying, selling or renting property in Islamabad and Rawalpindi, get clear streamed
answers, and can send an inquiry to your team with one click.
Built with Next.js 16 (App Router), React 19, TypeScript and Tailwind CSS 4.
Requires Node.js 20.9+.
1. Push this folder to a GitHub repository (.env.local is git-ignored — never commit it).
2. On vercel.com → Add New → Project → import the repo. Framework is detected as Next.js; keep the defaults.
3. In Settings → Environment Variables, add the variab檢視完整 README ↗An AI real estate assistant for ghandharaestate.com, powered by Claude. Visitors ask about buying, selling or renting property in Islamabad and Rawalpindi, get clear streamed answers, and can send an inquiry to your team with one click.
Built with Next.js 16 (App Router), React 19, TypeScript and Tailwind CSS 4.
Requires Node.js 20.9+.
npm install
cp .env.example .env.local # then put your Claude API key in .env.local
npm run dev # http://localhost:3000
Other scripts:
| Command | What it does |
|---|---|
npm run build | Production build (also type-checks) |
npm start | Run the production build |
npm run typecheck | TypeScript check only |
npm test | Server tests against a mock Claude API (no key needed) |
| Name | Required | Purpose |
|---|---|---|
ANTHROPIC_API_KEY | Yes | One AI key: a Claude key (sk-ant-…, platform.claude.com) or an OpenAI key (sk-…). The app picks the provider from the key. Server-only. |
OPENAI_MODEL | No | Model used with an OpenAI key, default gpt-5.4-mini. |
CLAUDE_MODEL | No | Default claude-sonnet-5-5. Use claude-haiku-4-5-20251001 for lower cost. |
CLAUDE_MAX_TOKENS | No | Max reply length, default 2048. |
LEAD_WEBHOOK_URL | No | Where "Talk to an agent" inquiries are POSTed as JSON (n8n, Zapier, Make, Google Apps Script…). |
EMBED_ALLOWED_ORIGINS | For the embed | Your existing site(s), space-separated: https://ghandharaestate.com https://www.ghandharaestate.com |
NEXT_PUBLIC_SITE_URL | No | Where this app lives, for SEO links, e.g. https://chat.ghandharaestate.com. |
.env.local is git-ignored — never commit it).ANTHROPIC_API_KEY and EMBED_ALLOWED_ORIGINS).chat.ghandharaestate.com and create the CNAME record your DNS provider shows.EMBED_ALLOWED_ORIGINS later, redeploy (it is applied at build time).Once deployed, paste this one line into your site's footer:
<script src="https://YOUR-DEPLOYED-URL/embed.js" defer></script>
Easiest way on WordPress: install the free WPCode plugin → Code Snippets → Header & Footer → paste into Footer → Save.
A green "Chat with Xpert AI" button appears in the bottom corner of every page. The chat loads only when clicked,
so it doesn't slow your site down. Options: data-label="Ask our AI" and data-position="left" on the script tag.
You can also simply link to the app from your menu (e.g. "AI Assistant" → https://chat.ghandharaestate.com).
| To change… | Edit |
|---|---|
| How the AI behaves, business facts, areas served | src/config/ai.ts (SYSTEM_PROMPT, BUSINESS_INFO) |
| Name, tagline, phone/WhatsApp/email, welcome prompts | src/config/site.ts |
| Message length / history limits | src/config/limits.ts |
| Colours (light & dark) | CSS variables at the top of src/app/globals.css |
| Logo | src/components/brand/Logo.tsx and src/app/icon.svg |
The assistant only states business facts that appear in BUSINESS_INFO. It has no live listing data, so it sends
people to your website listings or an agent for specific properties.
src/
app/
api/chat/route.ts POST /api/chat → streams Claude's reply (NDJSON)
api/lead/route.ts POST /api/lead → forwards inquiries to your webhook
layout.tsx fonts, SEO metadata, theme bootstrapping
page.tsx the chat app
robots.ts, sitemap.ts, icon.svg, opengraph-image.tsx
components/
chat/ ChatApp, MessageList, MessageItem, Markdown, CodeBlock, Composer, WelcomeScreen, LeadDialog
layout/ Sidebar (drawer on mobile), ChatHeader
ui/ Icons, Toast, Dialog
theme/ ThemeProvider (light/dark)
config/ site.ts, ai.ts, limits.ts
hooks/ useChat (conversation state + streaming), useAutoScroll
lib/
server/ Claude client + SSE parser, validation, errors, rate limiting, handlers
storage/chat-store.ts chat history storage (swap for a database here)
chat-client.ts browser side of the stream
types/chat.ts
public/embed.js drop-in chat button for other sites
tests/server.test.ts
/api/chat. The server validates it (empty / too-long messages,
role order), trims old history to a budget, and calls the Claude Messages API with streaming.History is saved in each visitor's browser (localStorage): private, no sign-up, no database.
The ChatStore interface in src/lib/storage/chat-store.ts is the single place to change if you later
want accounts and server-side history (e.g. Supabase/Postgres + Auth.js).