π Building a CRM in PHP & MySQL: My Final Year Project Journey π
Ashish prajapati
Posted on November 25, 2024
DAY - 1
Hello, everyone! π I'm Ashish Prajapati, a TYBCA student at R.K. Desai College of Computer and Applied Science. For my final year project, Iβve been working on a Customer Relationship Management (CRM) System π. This post takes you through my journey, the modules Iβm working on, how Iβm learning along the way, and the tools Iβm using to bring this project to life.
π‘ Inspiration and Guidance
As someone with no prior experience in developing a CRM, I turned to ChatGPT for guidance. It suggested the following essential modules for a CRM system:
- π Dashboard: A centralized view of key metrics and insights.
- π₯ Customer Management: To manage customer details and interactions.
- π Lead & Opportunities: Tracking potential sales and conversions.
- π Task Management: Assigning and tracking tasks and follow-ups.
- π° Sales Tracking: Monitoring revenue, sales activities, and performance.
- π Analytics: Visual insights into leads, sales, and customer behavior.
- π§ Email Integration: Sending notifications and follow-up reminders.
- π User Permissions: Managing access control for team members.
- π Notes & Activity Logs: Keeping records of important customer interactions.
With ChatGPTβs guidance, Iβm working on implementing these modules step by step. While this may not be a production-ready CRM, Iβm putting my all into this project to learn and grow as a developer. πͺ
π Directory Structure: Organizing the Code
To keep my project structured and maintainable, hereβs how Iβve organized my files:
π client/
βββ π assets/
β βββ π css/
β β βββ lead.css # Styles for lead management
β β βββ style.css # Global styles
β βββ π js/
β β βββ script.js # Custom JavaScript
βββ π includes/
β βββ _Footer.php # Footer component
β βββ _Nav.php # Navigation menu
β βββ db.php # Database connection
βββ add_lead.php # Script to add leads
βββ index.php # Main homepage
βββ login.php # Login functionality
βββ signup.php # Signup form
βββ signup_process.php # Signup backend logic
βββ tailwind.config.js # Tailwind CSS configuration
π Highlights:
-
Reusable Components:
_Footer.php
and_Nav.php
ensure consistent UI across pages. -
Database Connection:
db.php
is the heart of the backend, handling MySQL connectivity. - Tailwind CSS: A modern utility-first framework to streamline the design process.
π Database Design: The Backbone of the CRM
The CRM revolves around two primary tables: leads
and customers
. These tables ensure efficient management of client and lead data.
π Leads Table
CREATE TABLE `leads` (
`lead_id` int(11) NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`email` varchar(100) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`company_name` varchar(100) DEFAULT NULL,
`position` varchar(50) DEFAULT NULL,
`lead_source` varchar(50) DEFAULT NULL,
`lead_status` enum('new','contacted','qualified','converted','lost') DEFAULT 'new',
`opportunity_value` decimal(10,2) DEFAULT NULL,
`close_date` date DEFAULT NULL,
`notes` text DEFAULT NULL,
`created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
π₯ Customers Table
CREATE TABLE `customers` (
`customer_id` int(11) NOT NULL,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`email` varchar(100) NOT NULL,
`phone` varchar(20) DEFAULT NULL,
`address` text DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`state` varchar(50) DEFAULT NULL,
`postal_code` varchar(20) DEFAULT NULL,
`country` varchar(50) DEFAULT NULL,
`tags` varchar(255) DEFAULT NULL,
`company_name` varchar(100) DEFAULT NULL,
`position` varchar(50) DEFAULT NULL,
`notes` text DEFAULT NULL,
`status` enum('active','inactive','prospect') DEFAULT 'prospect',
`created_at` datetime DEFAULT current_timestamp(),
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
π§ Tools and Technologies Used
Hereβs the stack Iβm using for this project:
- PHP π: To build the backend logic and server-side functionalities.
- MySQL π: For structured data storage and retrieval.
- Tailwind CSS π¨: To design a modern and responsive user interface.
- JavaScript π»: For client-side interactivity.
πΈ Visuals in Development
Hereβs what I plan to showcase in my vlog and future posts:
- Lead Management Form: For adding and updating leads.
- Lead Database: A table with detailed leadrecords.
- Dashboard Prototype: Early concepts of the main dashboard.
πͺ Challenges and Learning Experience
Working on this CRM project has been both exciting and challenging! As a beginner in CRM development:
- I had to research best practices for database design and user management.
- ChatGPT has been my guide, providing valuable advice for structuring my project and implementing new features.
- Iβm learning the importance of modularity in code and the impact of design consistency.
While this may not be a ready-to-use product, Iβm proud of the progress Iβve made so far. Every line of code is helping me grow as a developer. π
π οΈ Whatβs Next?
Hereβs what I plan to work on in the coming weeks:
- Analytics Dashboard π: To visualize leads and sales metrics.
- Email Notifications βοΈ: For task reminders and follow-ups.
- User Permissions π: Role-based access for better security.
- Task Management β : Assigning and tracking team tasks.
π Final Thoughts
This project has been a wonderful opportunity to apply everything Iβve learned in TYBCA and explore new technologies. Iβm excited to continue refining this CRM and adding more features.
Thank you for reading! If you enjoyed this post or have any tips for me, please leave a reaction β€οΈ and comment below.
Posted on November 25, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.