Skip to content

Latest commit

 

History

History
387 lines (314 loc) · 23.1 KB

README.md

File metadata and controls

387 lines (314 loc) · 23.1 KB

App Logo

PHP Badge MySQL Badge jQuery Badge
Boostrap Badge Docker Badge XAMPP Badge
GitHub Badge Email Badge BuyMeACoffee Badge
GitHub Workflow Status (with event) Gold


🌴🌴 Palm Tree 🌴🌴

Palm Tree is a web based CRM application with Google Business Review email request capabilities.

  • Keep track of your Customers in a digital format - ditch the pen and paper!
  • Send marketing emails out, including emails requesting Google Business Reviews.
  • Directly open a Review window on your Google Business page with a click of a button within the email.
  • Perfect for small businesses, entrepreneurs, and anyone looking to keep track of their customers and send out marketing emails.
  • Visit a demo of the application here.

Note

The demo page only includes some basic functionality of the application. To access the full functionality, clone or fork the project and run on your local machine following the instructions in this README.


Table of Contents

Features

  • Fully Interactive Customer Table
  • Custom Email Template
  • Configure Your Business
  • Send Emails to Your Customers

Background Story

I created Palm Tree to help small businesses and entrepreneurs keep track of their customers and send out marketing emails. I was inspired to create this application after working with a small business owner who was using a pen and paper to keep track of their customers. With years of experience working with large enterprise CRM applications, I knew there was a better way. I created Palm Tree to be a simple, easy to use, and fully interactive CRM application that anyone can use. I hope you enjoy using Palm Tree as much as I enjoyed creating it!

Definitions

  • CRM: An acronym for Customer Relationship Management. A CRM is a software that helps businesses manage, track, and improve all the relationships with their customers. CRMs centralize all customer data, making it easier for businesses to manage relationships with customers, vendors, and partners.
  • Google Business Review: A review of your business on Google. Google Business Reviews are important because they can give businesses a huge credibility boost without having to spend a dime. The more reviews you have, the more people will trust you and want to do business with you.

Getting Started

Download the Application

  1. Download Palm Tree directly using one of the methods below:

    • Download with Git:
        git clone https://github.com/scottgriv/palm-tree
    • Download with Homebrew:
        brew tap scottgriv/palm-tree https://github.com/scottgriv/Palm-Tree
    • Download the Zip File Here.
  2. Host the application using your web server and databases. See the XAMPP instructions below on how to do this.

Using Docker (Recommended)

  1. Download Docker Here.
  2. Make sure Docker is up and running.
    • Make sure you follow the System Requirements under your preferred Operating System.
  3. Launch your CLI (Command Prompt on Windows/Terminal on Mac).
  4. Change the directory using your CLI to your Palm Tree directory:
        cd Desktop/Palm-Tree
  5. Once you're in the Palm Tree directory, run the Docker Compose command:
        docker-compose up

Note

This step may take a while to download all of the necessary images.

  1. This will build the Docker Containers and you should find your application running under port 80.
    • Navigate to: http://localhost

Using XAMPP (Alternative)

  1. Download XAMPP Here.
  2. Start the MySQL Database and Apache Web Server services. Optionally, you can install these as a service if you're using windows so the web server automatically starts and serves Palm Tree if the PC ever restarts or shuts down and comes back up:

    First step to install Apache service, run XAMPP Control Panel as Administrator, then click the Apache service button located on the left side of Apache components, click next and “Click Yes to Install the Apache Service” window will open, then click Yes to continue.

  3. Go to the phpMyAdmin portal and import the SQL database script palm_tree.sql located in the sql folder.

Important

The below two steps/changes are to correct the application from the default Docker install above.

  1. Update the sql/config.ini file changing db_host = db to db_host = localhost.
  2. Update the container class menu links in the container.php file From/To:
    • From: /customers.php To: /Palm-Tree/customers.php
    • From: /configure.php To: /Palm-Tree/configure.php
    • From: /email.php To: /Palm-Tree/email.php
  • Alternatively, you can update the httpd.conf file to set your default index page for your localhost to the Palm-Tree directory.
  1. Go to your web browser and navigate to the URL: http://localhost/Palm-Tree and you should be redirected to the main application page.
  2. If you're accessing Palm Tree from a mobile device on your local network, you'll have to to access the application using your host machines IP address. To find your IP address, open up your CLI and type:

Mac:

ifconfig
  • You should see your IP address under the inet field, typically listed under en0 or en1 for Wi-Fi connections.

Windows:

ipconfig
  • You should see your IP address under the IPv4 Address field under the appropriate network adapter.

  • Update the sql/config.ini file changing db_host_ip = localhost to db_host = <your_ip_address>.
  • Navigate to the URL: http://<your_ip_address>/Palm-Tree and you should be redirected to the main application page.

What's Inside?

Below is a list of the main files and folders in this repository and their specific purposes:

Palm-Tree                                 
├─ app # Future home of the application                                    
├─ css # CSS files used for the application                                   
│  └─ main.css # Default CSS file used for the application                           
├─ docs # Images used for the GitHub README relative path                                   
│  └─ images # Images used for the GitHub README relative path                                                  
├─ img # Images used for the application                                   
│  ├─ config # Images used for the Configure screen                                         
│  ├─ fav # Favorite/Bookmark icons, including icons for Android and iOS shortcuts                                             
│  ├─ link # Images used for the link icons on the Email screen (i.e google, facebook, etc.)                                              
│  └─ logo # This is where your uploaded company logo will go from the Configure screen (replacing `logo.png`) for the Customer screen.                                                      
├─ js # JavaScript files used for the application                                     
│  ├─ jquery.tabledit.js # Included dependency file [jQuery-Tabledit v1.2.3](https://github.com/markcell/jquery-tabledit)                
│  └─ main.js # Default JavaScript and jQuery file used for the application                             
├─ lib # Misc. library files used for the application
│  ├─ PHPMailer-master # Mailer dependency used to send emails out to customers [PHPMailer v6.7.1](https://github.com/PHPMailer/PHPMailer)                 
│  └─ phpinfo.php # File containing the `phpinfo()` function: Because every system is setup differently, `phpinfo()` is commonly used to check configuration settings, such as log file locations, and for available predefined variables on a given system.                                                          
├─ sql # SQL files used for the application                                    
│  ├─ config.ini # Configuration file used to connect to the database                          
│  └─ palm_tree.sql # Starting database script/structure required to run the application                       
├─ templates # HTML files used as the default email template for the Email screen                              
│  ├─ sample_email_template.html # HTML file used as the default email template for the Email screen          
│  └─ sample_email_template_no_logo.html # Same as above but without the logo                                  
├─ commands.php # PHP file used to process requests and responses from the front-end application to the back-end database                           
├─ configure.php # PHP file behind the Configure screen                          
├─ container.php # PHP file used to create the HTML menu container (this sets the screen padding, size, etc. for each screen, making all the screens a consistent size)                         
├─ customers.php # PHP file behind the Customers screen                          
├─ database.php # PHP file used to connect to the database configuration using the `config.ini` file                           
├─ docker-compose.yml # Compose file used for defining services, networks, and volumes for a Docker application                     
├─ email.php # PHP file behind the Email screen                              
├─ encryption.php # Encryption file used to encrypt/decrypt data in the database                         
├─ footer.php # The websites footer                             
├─ header.php # The website's header which also contains the path for favorite icons and remote JavaScript/CSS libraries   
├─ index.html # Demo page built to demo the application on GitHub Pages.                        
├─ index.php # Default landing page of the website which contains a redirect to `customers.php` (the Customers screen)                            
├─ send_email.php # PHP file used to send emails out to customers
├─ Dockerfile # Dockerfile for the application
├─ .gitignore # Git ignore file
├─ .gitattributes # Git attributes file
├─ .github # GitHub folder                                                             
├─ PRG.md # PRG Connection File
├─ LICENSE # License file   
└─ README # This file                  

Fully Interactive Customer Table


Data privacy is important to me, which is why the above data is dummy data

  • CRUD-Enabled:
    • Create Customer Information
    • Read Customer Information
    • Update Customer Information
    • Delete Customer Information
  • Export table to a .csv file.
  • Scroll up, down, and refresh the table easily using the provided buttons.
  • Highlighted editable fields.
  • Log Customer Notes.
  • Sort Customers by:
    • First Name
    • Last Name
    • Email
    • Phone
    • Created Date
  • Search for Customers based on:
    • First Name
    • Last Name
    • Email
    • Phone
  • Check the Send Email box to send an email to the Customer.
  • Mobile capabilities with Bootstrap:


Bootstrap allows you to easily view the application on a mobile device.

Custom Email Template


Create a custom email template for your customer emails.

  • Palm Tree utilizes Mustache styled syntax to create custom email templates.

  • Configure your Email Server to send Business emails using your own plain-text or HTML email template (Gmail Supported).

  • Use variables from a predefined list to send curated emails to your Customers in the Subject and Body:

    Hello {{ customer_first_name }} {{ customer_last_name }}!

    will translate to:

    Hello John Smith!

  • CC & BCC capabilities.

  • Send a mass email to ALL of your customers at once.

  • Create an account on Imgur to host photos used in your email template.


Configure Your Business


Easily personalize the application to fit your businesss.

  • Upload and display your Company Logo.
  • Display your Company Title.
  • Display your Company Description.
  • Add contact information to your emails using the predefined variables in your email template:
    • Company Owner
    • Company Address
    • Company Contact Phone
    • Company Contact Email
    • Google Place ID
      • Used to automatically open up Google Reviews for your business using the provided email template.
    • Social Media Email Hyperlinks:
      • Google, Facebook, Twitter, LinkedIn, Instagram, YouTube, Amazon, Pinterest, Etsy, and Shopify.

Send Emails to Your Customers


Edit the HTML email template file to fit your needs.

Disclaimer

  • Software is provided as-is and no warranty is given about its usability.
  • Palm Tree does not collect any personal info or data (this does not include the data you send out in your emails or the email host you use to send out emails).
  • Palm Tree is meant to be deployed on a local environment, therefore, you are responsible for securing your own data and production deployment.
  • Palm Tree is not responsible for any damages or liabilities that may occur from the use of this software. Use at your own risk.

Closing

  • You're ready to go! You should now be able to access Palm Tree.
  • Feel free to use the provided email templates in the /templates directory under the Email menu, Email Body.

Tip

You may need to allow the port you're using to send your emails in your Firewall Settings (defined in the send_email.php file - default port 465). Ensure your anti-virus software is not blocking it as well. Palm Tree from sending out emails as well.

Thank you for taking the time to read through this document and I hope you find it useful! If you have any questions or suggestions, please feel free to reach out to me.

Please reference the SUPPORT file in this repository for more details

What's Next?

I'm looking forward to seeing how this project evolves over time and how it can help others with their GitHub Portfolio.

Please reference the CHANGELOG file in this repository for more details.

Project

Please reference the GitHub Project tab inside this repository to get a good understanding of where I'm currently at with the overall project.

  • Issues and Enhancements will also be tracked there as well.

Contributing

Feel free to submit a pull request if you find any issues or have any suggestions on how to improve this project. You can also open an issue with the tag "bug" or "enhancement".

  • How to contribute:
  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/Palm-Tree)
  3. Commit your Changes (git commit -m 'Add new feature')
  4. Push to the Branch (git push origin feature/Palm-Tree)
  5. Open a Pull Request

Please reference the CONTRIBUTING file in this repository for more details.

Resources

Below are some external resources I found helpful when creating Palm Tree:

  • PHP - PHP is a popular general-purpose scripting language that is especially suited to web development.
  • MySQL - MySQL is an open-source relational database management system.
  • jQuery - jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.
  • Bootstrap - Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development.
  • Docker - Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers.
  • XAMPP - XAMPP is a free and open-source cross-platform web server solution stack package developed by Apache Friends, consisting mainly of the Apache HTTP Server, MariaDB database, and interpreters for scripts written in the PHP and Perl programming languages.
  • Mustache - Mustache is a logic-less template syntax. It can be used for HTML, config files, source code - anything. It works by expanding tags in a template using values provided in a hash or object.
  • Imgur - Imgur is an online image hosting service.
  • jQuery-Tabledit v1.2.3 - jQuery-Tabledit is a jQuery plugin that provides AJAX-enabled in-place editing for your table cells.
  • PHPMailer v6.7.1 - PHPMailer is a full-featured email creation and transfer class for PHP.
  • Google Business Profile - Turn people who find you on Google Search and Maps into new customers with a free Business Profile for your storefront or service area. Personalize your profile with photos, offers, posts, and more.

License

This project is released under the terms of the GNU General Public License, version 3 (GNU GPLv3), which ensures that derivatives of the software remain open source.

  • The GNU GPLv3 is a "copyleft" license, ensuring that derivatives of the software remain open source and under the GPL.
  • For more details and to understand all requirements and conditions, see the LICENSE file in this repository.

Credits

Author: Scott Grivner
Email: [email protected]
Website: scottgrivner.dev
Reference: Main Branch