Back to blocks

CRM Web App Development

4.0
enWeb DevelopmentCRMWeb AppWhatsApp API

Prompt

Create a responsive web app which maintains the CRM data like customer name, phone number , whatsapp number, location, Remarks etc.. so that i can send the brochure automatically to the customer added, through whatsapp api the message should be auto generated based on the  keywords in the remarks. make it more professional and beautiful 

Résultat Généré

import React, { useState } from 'react';
import './App.css';

const App = () => {
  const [customers, setCustomers] = useState([]);
  const [formData, setFormData] = useState({
    name: '',
    phone: '',
    whatsapp: '',
    location: '',
    remarks: ''
  });

  const handleChange = (e) => {
    const { name, value } = e.target;
    setFormData({ ...formData, [name]: value });
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    setCustomers([...customers, formData]);
    setFormData({
      name: '',
      phone: '',
      whatsapp: '',
      location: '',
      remarks: ''
    });
  };

  const sendWhatsAppMessage = (customer) => {
    const message = `Hi ${customer.name}, here is the brochure based on your remarks: ${customer.remarks}`;
    window.open(`https://wa.me/${customer.whatsapp}?text=${encodeURIComponent(message)}`, '_blank');
  };

  return (
    <div className="min-h-screen bg-gray-100 p-8">
      <h1 className="text-3xl font-bold text-center text-blue-600 mb-8">CRM Management System</h1>
      <div className="max-w-4xl mx-auto">
        <form onSubmit={handleSubmit} className="bg-white shadow-md rounded px-8 pt-6 pb-8 mb-8">
          <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
            <div>
              <label className="block text-gray-700 text-sm font-bold mb-2" htmlFor="name">
                Name
              </label>
              <input
                className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
                id="name"
                type="text"
                name="name"
                value={formData.name}
                onChange={handleChange}
                placeholder="Customer Name"
                required
              />
            </div>
            <div>
              <label className="block text-gray-700 text-sm font-bold mb-2" htmlFor="phone">
                Phone Number
              </label>
              <input
                className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
                id="phone"
                type="text"
                name="phone"
                value={formData.phone}
                onChange={handleChange}
                placeholder="Phone Number"
                required
              />
            </div>
            <div>
              <label className="block text-gray-700 text-sm font-bold mb-2" htmlFor="whatsapp">
                WhatsApp Number
              </label>
              <input
                className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
                id="whatsapp"
                type="text"
                name="whatsapp"
                value={formData.whatsapp}
                onChange={handleChange}
                placeholder="WhatsApp Number"
                required
              />
            </div>
            <div>
              <label className="block text-gray-700 text-sm font-bold mb-2" htmlFor="location">
                Location
              </label>
              <input
                className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
                id="location"
                type="text"
                name="location"
                value={formData.location}
                onChange={handleChange}
                placeholder="Location"
                required
              />
            </div>
          </div>
          <div className="mt-4">
            <label className="block text-gray-700 text-sm font-bold mb-2" htmlFor="remarks">
              Remarks
            </label>
            <textarea
              className="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"
              id="remarks"
              name="remarks"
              value={formData.remarks}
              onChange={handleChange}
              placeholder="Remarks"
              required
            />
          </div>
          <div className="flex items-center justify-center mt-6">
            <button
              className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline"
              type="submit"
            >
              Add Customer
            </button>
          </div>
        </form>
        <div className="bg-white shadow-md rounded px-8 pt-6 pb-8">
          <h2 className="text-2xl font-bold text-center text-blue-600 mb-6">Customer List</h2>
          <div className="overflow-x-auto">
            <table className="min-w-full bg-white">
              <thead>
                <tr>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">Name</th>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">Phone</th>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">WhatsApp</th>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">Location</th>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">Remarks</th>
                  <th className="py-3 px-6 text-left bg-blue-600 text-white">Action</th>
                </tr>
              </thead>
              <tbody>
                {customers.map((customer, index) => (
                  <tr key={index} className="hover:bg-gray-100">
                    <td className="py-4 px-6 border-b border-gray-200">{customer.name}</td>
                    <td className="py-4 px-6 border-b border-gray-200">{customer.phone}</td>
                    <td className="py-4 px-6 border-b border-gray-200">{customer.whatsapp}</td>
                    <td className="py-4 px-6 border-b border-gray-200">{customer.location}</td>
                    <td className="py-4 px-6 border-b border-gray-200">{customer.remarks}</td>
                    <td className="py-4 px-6 border-b border-gray-200">
                      <button
                        className="bg-green-500 hover:bg-green-700 text-white font-bold py-1 px-2 rounded focus:outline-none focus:shadow-outline"
                        onClick={() => sendWhatsAppMessage(customer)}
                      >
                        Send Brochure
                      </button>
                    </td>
                  </tr>
                ))}
              </tbody>
            </table>
          </div>
        </div>
      </div>
      <footer className="mt-8 text-center text-gray-600">
        © 2025 CRM Management System. All rights reserved.
      </footer>
    </div>
  );
};

export default App;

Plus de Recommandations

Voir Tout

Next.js Vape Website

Web Developmenten
4.0

I want to create a simpple webiste in nextjs for vape listing and deatil anc checkout page using striip there as well stunning landing page to attract and add to cart then user ca place order Manchester Vape website name

Next.jsVapeStripe19/06/2025

Create TikTok Page

Web Developmenten
4.0

Create a TikTok like landing page.

TikTokLanding PageWeb Design17/06/2025

React Backoffice Frontend Guide

Web Developmenten
4.0

A backoffice frontend built in React 18 + Vite with Tailwind CSS and DaisyUI, Zustand for global state, TanStack Query for API state, React Hook Form with Zod for validation, and Axios for HTTP. The UI consists of: A dashboard (placeholder for future analytics) Games module: manage game metadata and brand availability Brands module: create/edit brands, assign games, apply jurisdiction rules Regulation module: read-only view of jurisdiction rules Players module: read-only, filterable player list Game sessions: read-only session explorer by brand/player Bets: read-only history table with filters Errored bets: read-only view of failed transactions and error details Admin users: single-user management (MVP) Layout is responsive with dark/light mode. Design system follows Mixpanel-style dashboards with interactive tables, forms, and consistent UI primitives. All modules are isolated under /features, with shared components, services, and store logic modularized.

ReactTailwind CSSZustand16/06/2025

React Backoffice Frontend Guide

Web Developmenten
4.0

A backoffice frontend built in React 18 + Vite with Tailwind CSS and DaisyUI, Zustand for global state, TanStack Query for API state, React Hook Form with Zod for validation, and Axios for HTTP. The UI consists of: A dashboard (placeholder for future analytics) Games module: manage game metadata and brand availability Brands module: create/edit brands, assign games, apply jurisdiction rules Regulation module: read-only view of jurisdiction rules Players module: read-only, filterable player list Game sessions: read-only session explorer by brand/player Bets: read-only history table with filters Errored bets: read-only view of failed transactions and error details Admin users: single-user management (MVP) Layout is responsive with dark/light mode. Design system follows Mixpanel-style dashboards with interactive tables, forms, and consistent UI primitives. All modules are isolated under /features, with shared components, services, and store logic modularized.

ReactViteTailwind CSS16/06/2025

MercadoPago Payer Info with React Hooks

Web Developmenten
4.0

generate mercadopago payer information capture with validations in input fields, without use form , with react hooks

MercadoPagoReact HooksInput Validation12/06/2025

Create Video Translation Site

Web Developmenten
4.0

Create a video translation website by adding the "Add video file" and "Add video link" options. Upload the link and support all social media links. Add a language selection feature, then add all the languages ​​you want to translate the video into. Clicking the "Translate video" button will upload the translated video. pip install gradio_client

video translationsocial medialanguage selection12/06/2025