尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Lead tracking for a service company: import leads, call and follow up, collect requirements, run the prototype loop, negotiate, win. CRM Administrators get a dashboard.
Pages: / home, /login, then /dashboard (CRM Administrators), /leads, /follow-ups, /calendar, /import, /team, /settings, /profile. Press Ctrl+K anywhere inside the app to search leads or jump to a page. The logo animation plays once when someone clicks Sign in on the home page.
| Part | Tech | Folder |
|---|---|---|
| Website | Next.js 16 (React, Tailwind, Recharts) | frontend/ |
| API | Django, plain SQL through psycopg (no ORM) | backend/ |
| Database | PostgreSQL on Neon (27 tables, see backend/schema.sql) | |
| Console in development, Brevo SMTP when configured | ||
| Files | Local backend/media/ until Backblaze B2 is configured |
You need Python 3.12+ and Node 20+. Open two terminals.
1. API (port 8001, because 8000 is blocked on some Windows machines)
cd backend
pip install -r requirements.txt
python manage.py runserver 8001
backend/.env must contain your Neon DATABASE_URL. The tables already exist. To start again from scratch (deletes every lead and user, then creates the three team accounts):
python manage.py setup_team
2. Website (port 3000)
cd frontend
npm install
npm run dev
Open http://localhost:3000. The website forwards every /api/... request to the API, so there is no CORS setup.
| Name | Role | |
|---|---|---|
| Aayush Mahendru | [email protected] | CRM Administrator |
| Aditi Vad | [email protected] | CRM Administrator |
| Kishore Reddy R | [email protected] | Technical Analyst |
The first-time password is INITIAL_PASSWORD in backend/crm/management/commands/setup_team.py (or set SETUP_PASSWORD before running the command). Everyone should change it on their Profile page.
Set these in backend/.env (and in Render's environment). Without them, emails print in the API terminal.
BREVO_SMTP_USER=your-brevo-login
BREVO_SMTP_KEY=your-brevo-smtp-key
DEFAULT_FROM_EMAIL=CRM <you@your-verified-sender>
APP_URL=https://your-website-url
Verify the sender address (or domain) in Brevo first, or mail will land in spam.
Create a private bucket and an application key, then set:
B2_ENDPOINT=https://s3.<region>.backblazeb2.com
B2_KEY_ID=...
B2_APP_KEY=...
B2_BUCKET=...
The Files tab switches to B2 automatically; downloads use a 5-minute signed link. Files already saved locally are not moved.
People can change their password on Profile, or use Forgot password? on the login page to get a one-time link by email (valid for one hour). Until Brevo is connected, the email text prints in the API terminal.
Set CRON_SECRET to a long random string, then have a free scheduler (cron-job.org or a GitHub Action) call this every 10 minutes:
GET https://your-api-url/api/cron/reminders?token=<CRON_SECRET>
Or run python manage.py send_reminders from any scheduler.
backend): build pip install -r requirements.txt, start gunicorn config.wsgi. Set DEBUG=0, SECRET_KEY (long random), ALLOWED_HOSTS (your Render host), DATABASE_URL, and the email, B2 and cron variables above. Use Neon's pooled connection string.frontend): build npm run build, start npm start. Set BACKEND_URL to the API's public URL.DATABASE_URL once if backend/.env is missing, starts the API and the website, and opens http://localhost:3000.| CRM Administrator | Technical Analyst | CRM Executive | |
|---|---|---|---|
| Leads visible | All | Prototype stage onward, plus ones assigned to them | Ones they added or own |
| Dashboard | Yes | No | No |
| Team and dropdown lists | Edit | No | No |
| Delete a lead | Yes | No | No |
backend/
schema.sql the 27 tables, indexes, seed lists
config/ settings and URL routes
crm/db.py psycopg connection pool and helpers
crm/auth.py signed-cookie login
crm/views/ accounts, leads, work (calls, follow-ups, requirements, rounds),
meetings, dashboard, files
crm/emails.py email sending and calendar files
crm/reminders.py due follow-up emails
crm/storage.py local folder or Backblaze B2
frontend/
app/ pages: dashboard, leads, lead detail, follow-ups, calendar, import, team
components/ shared UI, lead dialogs, lead tabs, meeting dialog
lib/ API client, types, formatting, auth and lookups context
See the CRM Database Guide (PDF) for what every table and column means.