尚未检测到更新。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.