Giter Site home page Giter Site logo

nasarsoft / glific Goto Github PK

View Code? Open in Web Editor NEW

This project forked from glific/glific

0.0 0.0 0.0 16.17 MB

The Main application that provides the core interface via the glific APIs

Home Page: https://glific.org

License: GNU Affero General Public License v3.0

Shell 0.08% JavaScript 0.21% Lua 0.03% Elixir 89.62% CSS 0.48% HTML 2.21% PLpgSQL 7.32% Dockerfile 0.05% Procfile 0.01%

glific's Introduction

Glific - Two Way Open Source Communication Platform

License: AGPL v3 Code coverage badge Glific on hex.pm GitHub issues Discord codebeat badge Commits Glific

Pre-requisites

There is level of understanding middle to advanced level. It is assumed that you know how to use a terminal, install things and have git and curl; for the backend, and for the frontend use install yarn and react.

  1. Software dependency - Postgres server
  2. Software dependency - Erlang / Elixir
  3. Backend - Download
  4. External service - Gupshup. <-- Get a Free trial to get API-key
  5. External service - Oban. <-- Needs 100 Euro per month
  6. Backend - Install certificate
  7. Backend - Config
  8. Frontend

1. Software dependency - Postgres server

For Postgres, for the development server, we default to using postgres/postgres/postgres as the username/password/machine name. This is configurable

We tested and developed against the following versions:

    - postgres : v13.x, v14.x

2. Software dependency - Erlang / Elixir

For Ubuntu users you also need to install the inotify-tools package

We tested and developed against the following versions (please check .tool-versions in repository for the latest versons we are using):

    - erlang : 25.3.2
    - elixir : 1.14.5-otp-25

After installing asdf, install the Erlang and Elixir plugins.

asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git

If you want to install the specific versions that were used for developing and testing:

asdf install erlang 25.3.2
asdf install elixir 1.14.5-otp-25
asdf global erlang 25.3.2
asdf global 1.14.5-otp-25

If you get any warnings for missing packages, just install them using apt and try again.

Note: It is important to use asdf to install Erlang and Elixir.

3. Backend - Download

git clone https://github.com/glific/glific

DO NOT run mix deps.get until the next steps are completed.

4. External service - Gupshup Create and link your Gupshup Account

Gupshup is an external service that connects to WhatsApp

You will need to do the following:

  • Create a Gupshup Account
  • Create an app and select Access API
  • You can name it NewNameHere "GlificTest <-- Bot Name is already in use, then use anotherone"
  • Run the following command cp config/dev.secret.exs.txt config/dev.secret.exs
  • Now, in Gupshup, find your API Key: check the top right corner and click the profile picture or inside the curl sample message
  • Enter your APP name and API Key in the dev.secret.exs file using any text editor.

5. External service - Oban Pro

Oban is a cron-like library. Glific depends 100% on job processing. Oban is required before running mix for Glific to operate.

For contributors: Please get in touch with the team on Discord and get a limited time key. Once they're provided to you, run:

mix hex.repo add oban https://getoban.pro/repo --fetch-public-key SHA256:4/abc/edf/gef+aIWPc --auth-key abcdefghi

with your keys

For production use: You must purchase license. When purchashing you must buy WEB+PRO . After you purchased Go to account and get this information and run this command in glific_backend

mix hex.repo add oban https://getoban.pro/repo --fetch-public-key SHA256:4/abc/edf/gef+aIWPc --auth-key abcdefghi

Replace public key "SHA256:4/abc/edf/gef+aIWPc" with your public key and auth key "abcdefghi" with your auth key.

Make sure your key is in the list

mix hex.repo list
Name        URL                             Public key                                          Auth key
oban        https://getoban.pro/repo        SHA256:4/abc/edf/gef+aIWPc   abdedcqweasdj__KEY_AUTH__asdafasdf

If you see it twice, it will not work and fail, since Oban moved from public repository to private this is how an example of failing looks like

Name        URL                             Public key                                          Auth key
hexpm:oban  https://repo.hex.pm/repos/oban  SHA256:abc/edf/gef+aIWPc     abdedcqweasdj__KEY_AUTH__asdafasdf
oban        https://getoban.pro/repo        SHA256:4/abc/edf/gef+aIWPc   abdedcqweasdj__KEY_AUTH__asdafasdf

this is wrong, and you run mix deps.get it will try to fetch from public and ignore private and fail simply remove the public one

mix hex.repo remove hexpm:oban

Now check again

mix hex.repo list
Name        URL                             Public key                                          Auth key
oban        https://getoban.pro/repo        SHA256:4/abc/edf/gef+aIWPc   abdedcqweasdj__KEY_AUTH__asdafasdf

6. Install certificate - Use SSL for frontend and backend

Before install also you need to create this SSL cert simila to this Go to glific_backend folder in the terminal console.

  • Install mkcert (https://github.com/FiloSottile/mkcert)

  • mkcert --install

  • mkcert glific.test api.glific.test

  • mkdir priv/cert

  • mv glific.test* priv/cert

  • cd priv/cert

  • ls -1 Check that glific.test+1-key.pem and glific.test+1.pem exists.

  • Check port 4001 sudo lsof -n -i:4001 | grep LISTEN should return nothing.

  • Check hosts file grep glific /etc/hosts

    if returns nothing, then add these 2 lines to the hosts file
    127.0.0.1 glific.test 
    127.0.0.1 api.glific.test
    

For Windows the steps is as follows:

  • Install mkcert (https://github.com/FiloSottile/mkcert)

  • Run the following command to install the local CA certificates: mkcert --install

  • mkcert glific.test api.glific.test

  • mkdir priv/cert

  • move glific.test* priv/cert

  • cd priv/cert

  • dir Check that glific.test+1-key.pem and glific.test+1.pem exists.

  • Check port 4001 netstat -ano | findstr :4001 should return nothing.

  • Check hosts file bytype %SystemRoot%\System32\drivers\etc\hosts | findstr glific

    if returns nothing
    then add these two lines in your hosts file
    127.0.0.1 glific.test
    127.0.0.1 api.glific.test
    127.0.0.1 postgres
    

7. Backend - Config

  • Run: cp config/.env.dev.txt config/.env.dev

  • Run source config/.env.dev

  • Run mix deps.get if this fails try first mix local.hex --force then mix deps.get

    if you see this error, then Oban key is wrong or failing. Check step 5. Or contact Oban.

    ❯ mix deps.get Failed to fetch record for 'hexpm:oban/oban_pro' from registry (using cache instead) This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it Failed to fetch record for 'hexpm:oban/oban_web' from registry (using cache instead) This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it ** (Mix) Unknown package oban_pro in lockfile

  • Run mix setup At this point you may get an error saying password authentication failed for user "postgres", in which case, you need to configure the postgres server properly:

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'postgres';

Exit the PostgreSQL terminal by typing \q and pressing Enter. Run mix setup again.

  • Run iex -S mix phx.server
  • Inside the iex (you might need to hit enter/return to see the prompt)
    • Update HSM templates by running the following command:
    • Glific.Templates.sync_hsms_from_bsp(1)

Now you can visit https://glific.test:4001 from your browser.

For Windows the steps is as follows:

  • Copy the file: cp config/dev.secret.exs.txt config/dev.secret.exs

  • Copy the file: cp config/.env.dev.txt config/.env.dev. You may not need to edit the default values for DB URL and hostnames in this file if they look suitable for your needs.

  • Run this on command prompt:

    cd <path-to-glific-backend>
    set /p=DUMMY < config\.env.dev
    

    Replace with the actual path to the glific_backend directory. This will load the environment variables from the .env.dev file.

  • Run mix deps.get if this fails try first mix local.hex --force then mix deps.get

    if you see this error, then Oban key is wrong or failing. Check step 5. Or contact Oban.

    ❯ mix deps.get Failed to fetch record for 'hexpm:oban/oban_pro' from registry (using cache instead) This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it Failed to fetch record for 'hexpm:oban/oban_web' from registry (using cache instead) This could be because the package does not exist, it was spelled incorrectly or you don't have permissions to it ** (Mix) Unknown package oban_pro in lockfile

  • Run mix setup

  • Run iex -S mix phx.server

  • Inside the iex (you might need to hit enter/return to see the prompt)

    • Update HSM templates by running the following command:
    • Glific.Templates.sync_hsms_from_bsp(1)

Now you can visit https://glific.test:4001 from your browser.

8. Frontend - Install glific frontend

You cannot do much from the glific backend unless you are an API developer. To see Glific in its glory, please install Glific Frontend

Front end credentials

  • Phone 917834811114
  • Password Secret1234!

Optional - Using NGROK

  • Install ngrok
  • Start ngrok to proxy port 4000:
    • Start the backend server: mix phx.server
    • $ ngrok http 4000 --host-header=glific.test:4000 (do this in a new window))
    • Remember the URL it assigns you, something like: https://9f6a7c7822d2.ngrok.io
  • Goto the Settings Page
  • On that page, Search for Manage your Template messaging settings and enable it
  • On same page, Search for Callback URL / Link your Bot
  • Enter your callback URL that ngrok gave you, add: /gupshup to the end. Something like: https://9f6a7c7822d2.ngrok.io/gupshup/
  • Click Set. It should give you a Callback set successfully message. If not, check the above steps.

Updating your instance

For v0.x releases, we will be resetting the DB and not saving existing state. Run the following commands to update your codebase from the glific repository.

  • Ensure you are in the top level directory of the glific api code.
  • Get the latest code from master: git switch master && git pull
  • Ensure you have not modified any files in this directory, by running: git status
  • Run the setup command: mix setup

Documentation

Learn more

Glific

Chat with us

Funders

Thanks to our generous funders over the past few years who have funded this project:

glific's People

Contributors

dlobo avatar pankaj-ag avatar akhileshnegi avatar anshulrr avatar mdshamoon avatar mohitgusain avatar amishabisht avatar siddhant3030 avatar chaitanya1512 avatar darshan2003 avatar v-makkar avatar aashi-ihsaa avatar madhavmalhotra-3089 avatar satendra-sr avatar akash-y avatar dependabot[bot] avatar saxenankit123 avatar adwait-godbole avatar digneshgujarathi avatar rathorevaibhav avatar abhi1203 avatar twistingtwists avatar architv avatar mrbrianevans avatar kurund avatar sorentwo avatar shahnerodgers avatar mallikamiglani avatar zeusintuivo avatar

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.