opencompany
Self-improving AI that runs your whole business: six AI employees automate development, design, accounting, sales, marketing, and tax with 200+ AI models.
Every lead, every follow-up, every client, in one place.
Translation pending
BusinessTypeScript · PythonGitHub @Kishore-Infinyty-TechOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.