A production-style Customer Relationship Management (CRM) system built with Laravel, featuring deal tracking, customer management, and secure payment integration using Stripe.
- Login → Create Customer → Create Deal → Pay via Stripe → Dashboard updates
This project demonstrates a full-stack CRM workflow:
- Manage customers and deals
- Track deal lifecycle (pending → won/lost)
- Process payments via Stripe Checkout
- Visualize business metrics through dashboard analytics
- Create and edit customers
- Search customers (name, email, phone)
- Pagination and clean UI
- Create, edit, and track deals
- Status management (Pending, Won, Lost)
- Filter deals by status
- Search deals by title
- Stripe Checkout integration
- Payment success & cancel handling
- Deal status updated on payment
- Test mode supported
- Total customers, deals, revenue
- Revenue chart (monthly aggregation)
- Server-side filtering (scalable)
- Combined filters (status + search)
- Persistent query params across pagination
- Backend: Laravel (PHP)
- Frontend: Blade + Tailwind CSS
- Database: MySQL
- Payments: Stripe Checkout
- Charts: Chart.js
- MVC pattern (Laravel)
- Relational DB design:
Customers → Deals → Payments
-
Clean separation of concerns:
- Controllers → business logic
- Models → data relationships
- Views → UI rendering
- A Customer has many Deals
- A Deal belongs to a Customer
- A Deal has many Payments
-
User clicks Pay Now
-
Redirected to Stripe Checkout
-
On success:
- User redirected back
- Deal marked as won
-
On cancel:
- User returned without changes
Note: Webhooks can be added for production-grade verification.
git clone https://github.com/sayandebnath-creator/crm-system.git
cd crm-systemcomposer install
npm install && npm run buildcp .env.example .env
php artisan key:generateUpdate .env:
DB_DATABASE=crm_db
DB_USERNAME=root
DB_PASSWORD=yourpassword
STRIPE_KEY=your_stripe_key
STRIPE_SECRET=your_stripe_secretphp artisan migrate --seedphp artisan serveUse this test card:
4242 4242 4242 4242
Any future date
Any CVV
app/
├── Models/
│ ├── Customer.php
│ ├── Deal.php
│ └── Payment.php
├── Http/Controllers/
│ ├── CustomerController.php
│ ├── DealController.php
│ └── PaymentController.php
resources/views/
├── customers/
├── deals/
└── dashboard.blade.php
- No delete for deals → preserves financial data
- Status-based workflow (won/lost)
- Server-side filtering for scalability
- Stripe success callback used (webhook recommended for production)
- Stripe Webhooks for secure payment verification
- Role-based access (Admin / Sales)
- Export reports (CSV/PDF)
- Stripe Checkout payment flow
- Payment gateway integration (Stripe)
- RESTful API design in Laravel
- Query optimization with filtering
- UX improvements with Tailwind
Sayan Debnath Full Stack Engineer
