Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/scottgriv/palm-tree

🌴 πŸ’Ό A web based CRM application with Google Business review email request capabilities. Send marketing emails out to your customers, 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.
https://github.com/scottgriv/palm-tree

crm css customers docker email google-business html javascript jquery mysql php small-business table

Last synced: about 1 month ago
JSON representation

🌴 πŸ’Ό A web based CRM application with Google Business review email request capabilities. Send marketing emails out to your customers, 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.

Awesome Lists containing this project

README

        

[![App Logo](docs/images/banner_large.png)](https://scottgriv.github.io/Palm-Tree/)


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](https://scottgriv.github.io/Palm-Tree/).

> [!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](#features)
- [Background Story](#background-story)
- [Definitions](#definitions)
- [Getting Started](#getting-started)
- [Download the Application](#download-the-application)
- [Using Docker (Recommended)](#using-docker-recommended)
- [Using XAMPP (Alternative)](#using-xampp-alternative)
- [What's Inside?](#whats-inside)
- [Fully Interactive Customer Table](#fully-interactive-customer-table)
- [Custom Email Template](#custom-email-template)
- [Configure Your Business](#configure-your-business)
- [Send Emails to Your Customers](#send-emails-to-your-customers)
- [Disclaimer](#disclaimer)
- [Closing](#closing)
- [What's Next?](#whats-next)
- [Project](#project)
- [Contributing](#contributing)
- [Resources](#resources)
- [License](#license)
- [Credits](#credits)

## Features

- [x] Fully Interactive Customer Table
- [x] Custom Email Template
- [x] Configure Your Business
- [x] 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**:
```bash
git clone https://github.com/scottgriv/palm-tree
```
- Download with **Homebrew**:
```bash
brew tap scottgriv/palm-tree https://github.com/scottgriv/Palm-Tree
```
- Download the **Zip File** [Here](https://github.com/scottgriv/Palm-Tree/archive/refs/heads/main.zip).

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](https://docs.docker.com/get-docker/).
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:
```bash
cd Desktop/Palm-Tree
```
5. Once you're in the **Palm Tree** directory, run the ```Docker Compose``` command:
```bash
docker-compose up
```

> [!NOTE]
> This step may take a while to download all of the necessary images.

6. 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](https://www.apachefriends.org/download.html).
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.
4. Update the `sql/config.ini` file changing `db_host = db` to `db_host = localhost`.
5. 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.
6. Go to your web browser and navigate to the URL: `http://localhost/Palm-Tree` and you should be redirected to the main application page.
7. 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**:
```bash
ifconfig
```

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

**Windows**:
```bash
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 = `.
- Navigate to the URL: `http:///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:
```bash
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:**
- [x] Create Customer Information
- [x] Read Customer Information
- [x] Update Customer Information
- [x] 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](http://mustache.github.io/mustache.5.html) 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](https://imgur.com/)** 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](.github/SUPPORT.md) 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](.github/CHANGELOG.md) file in this repository for more details.

## Project

Please reference the [GitHub Project](https://github.com/users/scottgriv/projects/4) 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](.github/CONTRIBUTING.md) file in this repository for more details.

## Resources

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

- [PHP](https://www.php.net/) - PHP is a popular general-purpose scripting language that is especially suited to web development.
- [MySQL](https://www.mysql.com/) - MySQL is an open-source relational database management system.
- [jQuery](https://jquery.com/) - jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.
- [Bootstrap](https://getbootstrap.com/) - Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development.
- [Docker](https://www.docker.com/) - Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers.
- [XAMPP](https://www.apachefriends.org/index.html) - 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](http://mustache.github.io/mustache.5.html) - 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](https://imgur.com/) - Imgur is an online image hosting service.
- [jQuery-Tabledit v1.2.3](https://github.com/markcell/jquery-tabledit) - jQuery-Tabledit is a jQuery plugin that provides AJAX-enabled in-place editing for your table cells.
- [PHPMailer v6.7.1](https://github.com/PHPMailer/PHPMailer) - PHPMailer is a full-featured email creation and transfer class for PHP.
- [Google Business Profile](https://www.google.com/business/?ppsrc=GPDA2) - 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](https://choosealicense.com/licenses/gpl-3.0/) 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](LICENSE) file in this repository.

## Credits

**Author:** [Scott Grivner](https://github.com/scottgriv)

**Email:** [[email protected]](mailto:[email protected])

**Website:** [scottgrivner.dev](https://www.scottgrivner.dev)

**Reference:** [Main Branch](https://github.com/scottgriv/Palm-Tree)

---------------