Why CRM Manager
What makes it better
than the alternatives
- 01
Customer quote acceptance
Signed links let customers read, accept or decline quotes online; accepting wins the deal at the quote total
- 02
Round-robin assignment
Public contact form creates a deal and assigns it to the next sales rep in turn, with a follow-up task scheduled
- 03
Stale deal detection
Automatically flags open deals with no pending activity or nothing logged for 14 days
- 04
Weighted forecast
Groups open deals by expected close month, weighted by stage probability; won and lost deals feed the win rate
- 05
Ownership visibility
Sales reps reach their own and unassigned records; managers, admins and viewers see all; viewers are read-only
Contacts & Companies
- Contact records with email (unique)
- phone
- job title
- tags
- source
- marketing consent and notes
- Company records linked to contacts
- Email uniqueness enforced case-insensitively; duplicate merge by managers
- ContactService: create
- findByEmail
- createOrMatch
- merge duplicates
Deals & Pipeline
- Deal records with title
- value
- expected close date
- contact
- company
- source and owner
- Visual pipeline board with drag-and-drop between stages
- Multiple pipelines supported; new deals start in first stage of default pipeline
- Deal status (open
- won
- lost) mirrors stage kind; probability copied from stage on move
- DealService: create
- update
- move to stage
- reopen (managers only)
- reassign
- close with reason
Activities
- Calls
- meetings
- emails and tasks with due time and assignee
- Notes logged against deals
- Mark done
- reschedule
- view overdue
- Completing or logging an activity touches deals.last_activity_at
- ActivityService: schedule
- log notes
- complete
- reschedule
Quotes
- Line items from product catalogue or custom
- with quantity
- price
- line discount
- Quote-level discount and tax; numbered Q-2026-0001
- Draft editable; sending locks it; revision creates new draft
- Customer quote page via signed 60-day link (configurable QUOTE_LINK_DAYS)
- Customer accepts (wins deal at quote total) or declines via second signed link
- QuoteService: create draft
- replace lines
- recalculate totals
- send
- accept
- decline
- revise
Public Contact Form
- Creates contact (or finds existing by email)
- company and deal
- Round-robin assignment via AssignmentService to next active sales user
- Schedules reply task for assigned rep
- Honeypot field
- 6 requests per minute per IP
- 3 enquiries per hour per email
- Route: /contact (GET and POST)
Reports & Dashboard
- Open pipeline by stage with weighted value (deal value × stage probability)
- Forecast grouped by expected close month; deals with no date listed separately
- Win rate for last 90 days
- Lead source breakdown and sales leaderboard (managers only)
- Dashboard widgets: pipeline stats
- weighted forecast
- won this month
- win rate
- overdue activities
- charts
- due today
- stale deals
- ReportService: all reports scoped to what user may see
Roles & Permissions
- Four roles: admin
- manager
- sales
- viewer
- Sales reps see own and unassigned records (User::seesAll() returns false)
- Managers
- admins and viewers see all records (User::seesAll() returns true)
- Viewers read-only (User::canWrite() returns false)
- Only admins delete records
- Policies: RecordPolicy (ownership)
- SetupPolicy (pipelines
- products
- sources)
- ActivityPolicy
- CompanyPolicy
- ContactPolicy
- DealPolicy
- PipelinePolicy
- ProductPolicy
- QuotePolicy
- UserPolicy
Setup & Configuration
- Pipelines with stages (each stage has kind:
open/won/lostand probability) - Product catalogue for quote line items
- Lead sources tracked on contacts and deals
- Settings: company name
- STALE_DAYS (default 14)
- QUOTE_LINK_DAYS (default 60)
- Demo mode (DEMO_MODE=true): landing page
- one-click logins
- prevents login changes
Integrations
- WhatsApp click-to-chat links for contacts and quotes (one tap
- no automatic sending); no email sync
- no payments
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| PHP | — | — | Web, API | 77.3% |
| SQL | — | — | Database | 19.4% |
| CSS | — | — | Styling | 2.5% |
| Shell | — | — | Scripts | 0.5% |
| JavaScript | — | — | Front-end | 0.3% |
- Primary language
- PHP 8.3+
- Framework
- Laravel 13 + Filament 5
- Database
- MySQL 8.0 / MariaDB 10.6 / SQLite 3
- Authentication
- Laravel session-based authentication
- Licence
- Single-site
- Screens
- 18
- Database tables
- 11
- Supported languages
- English only
- Browser support
- Modern browsers (Chrome, Firefox, Safari, Edge — last 2 versions)
| Minimum | Recommended | |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 512 MB RAM | 1 GB RAM |
| OS | PHP 8.3+ with intl, gd, zip, bcmath, exif, mbstring, pdo_mysql; Apache 2.4 or Nginx; Node 20+ for build | PHP 8.3+ with intl, gd, zip, bcmath, exif, mbstring, pdo_mysql; Apache 2.4 or Nginx; Node 20+ for build |
| Est. monthly hosting | $10 | $10 |
```bash cp .env.example .env # set APP_KEY (openssl rand -base64 32, prefix base64:), DB_PASSWORD, SEED_ADMIN_PASSWORD, APP_URL docker compose up -d --build ```
```bash composer install --no-dev --optimize-autoloader && npm ci && npm run build cp .env.example .env && php artisan key:generate php artisan migrate --force --seed ``` Step-by-step guide, nginx config and Cloudflare notes: HowToSetup.md.
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (3 minor)
Schema solid, minor indexing gaps on foreign keys and one unscoped whereraw; good separation of concerns with minor duplication and configuration leakage; strong authentication and authorization; minor ownership gaps on read-only endpoints. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.