Giter Club home page Giter Club logo

Iceburg CRM

A Laravel CRM Builder

With optional AI Assist, AI Builder

Screenshots:

Project Home Page - iceburg.ca

Demo

Default usernames and passwords

Username Password
[email protected] admin
[email protected] user
[email protected] sales
[email protected] accounting
[email protected] marketing

Describe your CRM and let's AI create it.

About Iceburg CRM

Iceburg CRM is a metadata driven CRM with AI abilities that allows you to quickly prototype any CRM. The default CRM is based on a typical business CRM but the flexibility of dynamic modules, fields, subpanels allows prototyping of any number of different tyes of CRMs.

Features

  • [Metadata creations of modules, fields, relationships, subpanels, datalets, seeding]
  • [Ability to Import/Export in 6 different formats (XLSX, CSV, TSV, ODS, XLS, HTML]
  • [25 different input types, Laravel field validation, Maska field masking]
  • [26 themes with light and dark themes available]
  • [Module based Role permissions (read, write, import, export)]
  • [Calendar, Audit logs, Vue3 Charts, Convertable modules, Related Fields (related to another module)]
  • [Field Level Relationships, Module Level Relationships 2 way, 3 way, 4 way, ...]
  • [Build-in API, Workflow]

Created With

Iceburg CRM is created with:

Installation

Quick Install

composer create-project iceburgcrm/iceburgcrm iceburgcrm

// Default
php artisan iceburg:seed

// Convert Existing DB to CRM
php artisan iceburg:seed --type=adminpanel 

// Use AI
php artisan iceburg:seed --type=ai --prompt="Create a stamp collecting crm"

Ways to Install

  • Default - Install the default Classic IceburgCRM: 55 Modules, 282 Fields, 43 Relationships, 24 Subpanels, 5 Datalets
php artisan iceburg:create
  • AdminPanel - Point to an existing Database and turn it into a CRM. Type is requires but additional parameters are optional. If not supplied will use existing connection details.
php artisan iceburg:create --type=adminpanel --connection_host=123.123.123.123 --connection_port=3306 --connection_database=databasename --connection_username=dbuser --connection_password=dbpassword --connection_charset=utf8mb4 --connection_collation=utf8mb4_unicode_ci

Example of a live wordpress database converted to a CRM. Wordpress CRM
Wordpress Website

  • Core - Install only the core files. This will create a blank CRM template.
php artisan iceburg:create --type=core
  • Custom - Add your own modules, field, relationships, subpanels and generate it.
php artisan iceburg:create --type=custom
  • AI - Describe the CRM you want and let AI create it. Including the logo parameter will create an unique image for your login page. ChatGPT 3.5 is used as the default. Dalle-3 is used for image generation. Cost: 4 cents per crm with logo or a 1 penny without the logo.
php artisan iceburg:create --type=ai --prompt="Create a stamp collecting crm" logo="yes"

Each AI generation is different. Based on the prompt above here are three CRM's created: Stamp Collectors CRM 1 Stamp Collectors CRM 2 Stamp Collectors CRM 3

Note: Connection parameters, can be used with different types of installation.

Full Installation

If you do not have a server available visit digitalocean and get $200 dollars in free credit

If not installed, please install composer

If not installed, please install npm

composer create-project iceburgcrm/iceburgcrm iceburgcrm

or 

git clone [email protected]:iceburgcrm/iceburgcrm.git

cd iceburgcrm

Edit your database environment variables

vim .env

DB_HOST=
DB_PORT=
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=

Open permissions on the storage and

sudo chown -R www-data:www-data /path/to/your/project/public
sudo chown -R www-data:www-data /path/to/your/project/storage


Deploy
```php
sudo chmod 775 storage -R

AI Assist (Optional)

AI Assist will try to determine values for your current module by using the name, description of the module and the field. It suggests for blank fields and provides a confirmation preview before you commit to saving.

// Add your OPENAI KEY AND ORG ID TO your environment file to enable AI Assist
// This will enable an AI ASSIST button in add or edit modules 
// that will allow you to fill in any field with AI Assisted data


OPENAI_API_KEY=
OPENAI_ORGANIZATION=

API

Get Token
curl -X POST localhost:8000/api/login -H "Content-Type: application/json" -d '{"email": "[email protected]", "password": "admin"}

Sample Return:
{"token":"2|16ajbNyxwDhBUvupqLCSQSJyFV5d0IQao7Bwm2ch3b6e331b"}


# 1. Get All CRM Modules
curl -X GET http://localhost:8000/api/crm -H "Authorization: Bearer YOUR_TOKEN_HERE"

Sample Return:
[{"id":1,"name":"ice_users","label":"Users","description":"Users","status":1,"faker_seed":0,"create_table":0,"view_order":0,"admin":0,"parent_id":0,"primary":1,"primary_field":"id","icon":"UserPlusIcon","module_group_id":6,"created_at":null,"updated_at":null},{"id":2,"name":"ice_roles","label":"Roles","description":"Roles","status":1,"faker_seed":0,"create_table":0,"view_order":1,"admin":0,"parent_id":0,"primary":1,"primary_field":"id","icon":"CircleStackIcon","module_group_id":6,"created_at":null,"updated_at":null},


# 2. Search CRM Data
curl -X GET http://localhost:8000/api/crm/search \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{"search_key": "value"}'

Use the format of the search which can be seen on the network tab after you've completed a search in the page called search_data.

This will take the users module for a name 'admin' and save the data to a text file.
curl -X GET http://localhost:8000/api/crm/search -H "Authorization: Bearer 4|DPGVyKHEXoZiWT4kBQYdzC0uzw9EpcR0JeDhBUx6d2744c5c" -H "Content-Type: application/json" -d '{
    "1__name": "admin",
    "1__email": "undefined",
    "1__role_id": "undefined",
    "page": 1,
    "per_page": 10,
    "search_order": "asc",
    "order_by": "",
    "search_type": "module",
    "module_id": 1,
    "text_search_type": "fuzzy"
}' > data.txt

Sample output
{"current_page":1,"data":[{"ice_users__name":"Admin","ice_users__profile_pic":"data:image\/jpg;base64,\/9j...

# 3. Get a Specific CRM Module
curl -X GET http://localhost:8000/api/crm/1 \
-H "Authorization: Bearer YOUR_TOKEN_HERE"

Sample output
{"id":1,"name":"ice_users","label":"Users","description":"Users","status":1,"faker_seed":0,"create_table":0,"view_order":0,"admin":0,"parent_id":0,"primary":1,"primary_field":"id","icon":"UserPlusIcon","module_group_id":6,"created_at":null,"updated_at":null}

# 4. Update or Add a CRM Record
curl -X PUT http://localhost:8000/api/crm/1 \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{"field1": "new_value1", "field2": "new_value2"}'


To update include the record id
curl -X PUT http://localhost:8000/api/crm/9 \
-H "Authorization: Bearer 2|qXONV6OYboLruwcdBP3mL55XsEftujd5vogQ5EI9ebb51884" \
-H "Content-Type: application/json" \
-d '{"record_id": 1, "9__name": "Jacobs Ltd 22test"}'

Output
ID record saved

To Add a new record do not include a record id
curl -X PUT http://localhost:8000/api/crm/9 -H "Authorization: Bearer 2|qXONV6OYboLruwcdBP3mL55XsEftujd5vogQ5EI9ebb51884" -H "Content-Type: application/json" -d '{"9__name": "Jacobs Ltd test2"}'

Output
ID of new record

# 5. Delete a Record in a CRM Module
curl -X DELETE http://localhost:8000/api/crm/1/["module" or "relationship"] \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{"record_ids": [1, 2, 3]}'

curl -X DELETE http://localhost:8000/api/crm/2/module -H "Authorization: Bearer 2|16ajbNyxwDhBUvupqLCSQSJyFV5d0IQao7Bwm2ch3b6e331b" -H "Content-Type: application/json" -d '{"record_ids": [1, 2, 3]}' > a.txt



Relationships

Field Level Relationships

IceburgCRM supports field level relationships. A field level relationship could be a state field in an accounts module. When added or searching you would select the value from the dropdown.

In the database, the ID of the related module and field is stored. When you export module or relationship data IceburgCRM substitutes the ids for the value in the related module. When you import the reverse process happens. For example: If you had a related State field and had the Alabama saved. In the database you would see 1 in the accounts tables record. In the ice_fields you would see that this field is a related type pointing to module with the id 17 (States module id is 17) and field id 2 (2nd field is the value field). When you export by default you will be Alabama and when you import Alabama is replaced with 1 again.

Module Level Relationships

IceburgCRM supports Unlimited relationships between modules.

A typical CRM has a two way relationship between two modules. For example Accounts have many contacts and contacts can have many accounts.

IceburgCRM allows you to create relationships between 2, 3, 4 or more modules.

Why would you need a relationship between more than 2 modules? Let's say you wanted to have a subpanel that stored when a contract was signed, who signed, what location. A typical CRM will duplicate data or create new fields (that sit empty for all of the other records) or find some awkward method to force the data into a two way relationship.

IceburgCRM allows you to relate a Contract module, Account module, Contact module, City module, State module, Country module without having to add a related field or worse a free text field.

You can have multiple relationships and use them to create multiple subpanels for modules. For example you may want an Account & Contact subpanel but you may also want an Account Contact Opportunity subpanel.

You would use a relationship for a subpanel and then select the fields you want from any module.

A contract module could have a relationship to an account, a contact, a location

Themes

Out of the box these themes are available. For more information or to try different themes visit (https://daisyui.com/docs/themes/)

themes: [
"light",
"dark",
"cupcake",
"bumblebee",
"emerald",
"corporate",
"synthwave",
"retro",
"cyberpunk",
"valentine",
"halloween",
"garden",
"forest",
"aqua",
"lofi",
"pastel",
"fantasy",
"wireframe",
"black",
"luxury",
"dracula",
"cmyk",
"autumn",
"business",
"acid",
"lemonade",
"night",
"coffee",
"winter",
"dim",
"nord",
"sunset"],

Field Types

You can customize and add your own field types with their own special properties. Out of the box IceburgCRM has these:

tel
currency
checkbox
password
image
video
audio
file
number
email
url
zip
date
related
address
textarea
color
radio
text

Try the Color field type. It will present a color picker.

Calender

Fully customizable including colors and event hooks. You can select, day, week or month for the calendar view. The meetings module holds the data that powers the calendar. Allows multiple appointments at the same time. Click on an event to generate a popup.

Datalets

Datalets are frontpage widgets. They can take the form of a graph, table, or video or anything. In the default IceburgCRM we provide a number of different graphs. In the AI generated CRMs we provide information base datalets.

Adding your own is easy. Add the datalet to the datalets table, add your new data function in the backend and create your vue template.

Workflow - Confortable Modules

You can setup a workflow between modules. A stage box will appear in the module detail screen showing you at what stage this record is in the workflow. It also allows you to select other records in the workflow to examine what happened previously or later in the chain.

There a 5 module workflow setup in the default IceburgCRM. You can modify the workflow in the seeding files or in the workflow table.

Change these records in the ModuleSeeker file:

        ModuleConvertable::insert([
        'primary_module_id' => Module::where('name', 'leads')->first()->id,
        'module_id' => Module::where('name', 'contacts')->first()->id,
        'level' => 1,
        ]);

        ModuleConvertable::insert([
            'primary_module_id' => Module::where('name', 'contacts')->first()->id,
            'module_id' => Module::where('name', 'accounts')->first()->id,
            'level' => 2,
        ]);

        ModuleConvertable::insert([
            'primary_module_id' => Module::where('name', 'accounts')->first()->id,
            'module_id' => Module::where('name', 'quotes')->first()->id,
            'level' => 3,
        ]);

        ModuleConvertable::insert([
            'primary_module_id' => Module::where('name', 'quotes')->first()->id,
            'module_id' => Module::where('name', 'opportunities')->first()->id,
            'level' => 4,
        ]);

        ModuleConvertable::insert([
            'primary_module_id' => Module::where('name', 'opportunities')->first()->id,
            'module_id' => Module::where('name', 'contracts')->first()->id,
            'level' => 5,
        ]);

        ModuleConvertable::insert([
            'primary_module_id' => Module::where('name', 'contracts')->first()->id,
            'module_id' => 0,
            'level' => 6,
        ]);

Roles and Permission

IceburgCRM provides permissions by role and by module. And allows you to set read, write, export import permissions.

Import / Export

You have the ability to Import/Export in 6 different formats (XLSX, CSV, TSV, ODS, XLS, HTML]. Word is also available to be used but requires a system specific driver so it has been left out of the default options.

Custom Seeding

Files explained

These files will be run in this sequence

DatabaseSeeder

A database seeder file calls the remaining seeder files in sequence. These must be run in sequence and data generated in the previous step may be required in the next step.

ModuleSeeder

This file creates the module records, module groups records and the module_convertable records (workflow)

FieldSeeder

This file creates all of the fields and relates them to modules

RelationshipSeeder

This file seeds the relationships between modules

GenerateSeeder

This file generates the default data for the modules. It also adds the datalets, roles and permissions and any sample media.

ModuleSubpanelSeeder

This file generates the subpanel data. It needs to be run last.

Default Iceburg CRM

Number of Modules: 55

Primary Modules: 14

  • Accounts
  • Contacts
  • Contracts
  • Leads
  • Opportunities
  • Lineitems
  • Products
  • Campaigns
  • Cases
  • Documents
  • Notes
  • Projects
  • Groups
  • Quotes

Number of Fields: 282

Number of Relationships: 43

Number of Subpanels: 24

5 Datalets

  • [pie chart] Total Sales
  • [line graph] New Leads / Contacts / Accounts over 7 days
  • [pie chart] New Opportunities / Contracts / Quotes
  • [bar graph] Meeting (Today, 7 Days, 30 Days)
  • [pie chart] Orders this month

Admin

  • Settings
  • Permissions
  • Modules, Fields, Subpanels, Users, Datalet editing

Roles

  • Accounting
  • Admin
  • HR
  • Marketing
  • Sales
  • Support
  • User

IceburgCRM.com

Don't want to self install? Create CRMs Online for free

  • Describe your CRM and build it with AI
  • Select from our premade CRM templates
  • Make any Database into a CRM

IceburgCRM.com

Templates

Classic CRM

Classic CRM Icon

**Classic CRM. Accounts, Contacts, Contracts, LineItems, etc.** [Preview](https://classic.iceburg.ca)

Rare Books CRM

Rare Books CRM Icon

**A platform for sneaker enthusiasts to catalog their collections, track market values, manage trades or sales, and connect with other collectors.** [Preview](https://rarebooks.iceburg.ca)

Wine Connoisseurs CRM

Wine CRM Icon

**For wine enthusiasts and sellers, offering cellar management, tasting notes, vintage tracking, and a community feature for sharing recommendations and organizing tastings.** [Preview](https://wine.iceburg.ca)

Fitness Studio CRM

Fitness CRM Icon

**Tailored for small to medium fitness studios, featuring membership management, class scheduling, fitness progress tracking for members, and integration with wearable tech for health data.** [Preview](https://fitness.iceburg.ca)

Professional Networking CRM

Networking CRM Icon

**A niche CRM for professional networking organizations, offering event planning, member engagement tracking, mentorship program management, and job boards.** [Preview](https://networking.iceburg.ca)

Crafting Supplies CRM

Crafting Supplies CRM Icon

**For retailers and enthusiasts of crafting, offering inventory management, project tracking, supplier databases, and community features for sharing project ideas and tutorials.** [Preview](https://crafting.iceburg.ca)

Gourmet Coffee Enthusiasts CRM

Gourmet Coffee CRM Icon

**A platform for coffee lovers to track their favorite beans, roasts, brewing methods, and café experiences, including a marketplace for specialty beans and equipment.** [Preview](https://coffee.iceburg.ca)

BeeKeeping CRM

BeeKeeping CRM Icon

**For beekeepers to track hive health, manage honey production records, schedule maintenance, and engage with local and online beekeeping communities.** [Preview](https://beekeeping.iceburg.ca)

Wordpress CRM

Wordpress CRM Icon

**This is a premade instance of a wordpress database with iceburgcrm. Once created, download and point your wordpress files.** Changing the data in the CRM will change the wordpress website. [CRM Preview](https://wordpress.iceburg.ca) [Wordpress Website](https://wordpresssite.iceburg.ca)

Star History

Star History Chart

Security Vulnerabilities

If you discover a security vulnerability within Iceburg CRM, please send an e-mail to [email protected].

License

The Iceburg CRM is open-sourced software licensed under the AGPL

Other Frameworks

A Python Django Version is available

Iceburg CRM's Projects

iceburgcrm icon iceburgcrm

Laravel CRM - PHP CRM - AI CRM - Metadata CRM. Iceburg CRM is Open Source, metadata driven, extendable, unlimited relationships, convertable modules, 29 default themes, light/dark themes. It also have optional AI Abilities Using AI describe your CRM and use AI to Create it.

iceburgsaas icon iceburgsaas

IceburgCRM SASS. Code behind IceburgCRM.com Host customer's IceburgCRMs. Made with Laravel JetStream, Socialite, Tailwinds and DaisyUI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.