![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
A command-line Customer Relationship Management software.
The geek entrepreneur.
npm install -g crm-cli
Get into the directory where you want your data to be stored. Something shared on Dropbox (or whatever) is a good idea.
The run the bellow command to initialize your data file.
crm init-crm
This creates a file called crm.json
in the current directory. You can change the path to that file using the DATABASE_JSON_FILE
environment variable (example: DATABASE_JSON_FILE=/home/user/crm.json
)
The full list of commands supported by the tool is available by just entering
crm
on the command line.
usage: crm COMMAND [filter]
Available commands:
- reports:
i,interactions ... list of interactions.
com,companies .... list of companies.
con,contacts ..... list of contacts.
a,apps ........... list of apps.
about ............ all we know about a contact / company.
f,followup ....... list of required follow-up.
- data entry:
add-company ............ register a new company.
add-contact ............ register a new contact.
add-app ................ register a new app.
add-i,add-interaction .. register a new customer interaction.
edit-company .............. edit an existing company.
edit-contact .............. edit an existing contact.
edit-app .................. edit an existing app.
edit-i,edit-interaction ... edit an existing interaction.
done ...................... remove follow-up date from interaction.
- email:
template FILE .......... fill in values for an email template.
template-help .......... show the list of template fields.
- system:
init-crm ........ create data file in current directory.
CRM cli also features a client server architecture.
You can launch a server:
export SERVER_API_KEY=myapikey
export HOSTNAME=127.0.0.1 # that's the default
export PORT=3000
export DATABASE_URL=file://database.json
crm server
Then connect the CRM client to the server:
export DATABASE_URL=http://myapikey@127.0.0.1:3000
# reset the database, or do whatever
crm init-crm
Notice that the CRM server doesn't support SSL, so it's strongly recommended you only expose it through a reverse proxy.
You can run the server with docker.
docker run -p 8000:80 --rm -it jeko/crm-server
To build the image:
docker build -t jeko/crm-server .
By default it will use a local crm.json
file stored in a volume mounted in /app/data
.
You can customize the database with the DATABASE_URL
environment variable.
All reports commands accepts a filter argument, used to restrict the data display.
The filter is a fuzzy case-insensitive operator.
Examples:
crm about microsoft
will show all data you have about Microsoft
.crm about marc twain
will show all data you have about Marc Twain
.The DATABASE_URL
environment variable sets the connection to the database.
Possible values:
file://PATH/TO-FILE.json
- Relative path to a JSON filefile:///PATH/TO-FILE.json
- Absolute path to a JSON filehttp://USER:API_KEY@HOST:PORT
- URL to a CRM server (see "server" command)couchdb://USER:PASSWORD@HOSTNAME:5984/DATABASE_NAME
- CouchDB over HTTPcouchdbs://USER:PASSWORD@HOSTNAME:5984/DATABASE_NAME
- CouchDB over HTTPSmemory://
- Non-persistent in-memory database (for testing)crm.json
file in version control.Here is how I use the template feature.
I create a file that contains the headers and body of an email (see templates/subscriber-followup.txt for an example)
To initiate an email to our newly subscribed customer (Microsoftware in this example):
crm template tempates/fup-registration.txt Microsoftware > email.txt
neomutt -H email.txt
This will open a Draft in mutt with all fields replaced.
I guess not everyone uses neomutt, but it's easy to adjust to your need. You can simply paste the output of the crm template
command and compose your email from gmail or whatever.
crm.json
contains JSON formatted data.
The root element is an array of Companies.
A Company has the following attributes:
name
: stringurl
: stringaddress
: stringcontacts
: array of Contactsinteractions
: array of Interactionsapps
: array of AppsA Contact has the following attributes:
firstName
: stringlastName
: stringrole
: stringemail
: stringThe email
field is considered a primary key. Should appear in only 1 Contact
across all Companies.
An Interaction has the following attributes:
kind
: string -- the type of interaction (email, github, automated, ...)date
: string -- date of the interaction (anything javascript Date
constructor can parse)from
: string -- email address of the contactsummary
: string -- short summary of the interactioncontent
: string (optional) -- full interactionfollowUpDate
: string (optional) -- when a follow-up is dueAn App has the following attributes:
appName
plan
email
createdAt
upgradedAt
churnedAt
Apps is basically one of your products or subscription you're trying to sell... It's specific to my use case, if the tool is useful to others, we might make the App concept a little more generic.
Am I launching a rock in the water by sharing this on github? Do you have some interest? Let me know!
PRs are welcome, of course.
FAQs
Customers Relationship Management from your Terminal
The npm package crm-cli receives a total of 19 weekly downloads. As such, crm-cli popularity was classified as not popular.
We found that crm-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.