Giter VIP home page Giter VIP logo

volcano's Introduction

Volcano Logo

Introduction

Volcano is an API-first billing solution that is capable of interfacing with a variety of payment gateways. Volcano offers both a robust, RESTful API as well as a fully-featured front-end control panel.

Volcano Control Panel

Mission

Volcano is meant to be a flexible, gateway-agnostic billing system. The system can be setup with one or more sellers, each of which has its own set of configurable products and customer base. Volcano's core elements include sellers, customers, products, product options, product fees, orders and transactions. Current goals for the project include additional features for these core elements and new light-weight CRM tools such as customer support ticket management.

Design

Volcano is built on top of the FuelPHP framework. The app is designed with multitenancy in mind and heavily leverages the adapter pattern for multi-gateway support and the service pattern for the core structure that powers both the API and front-end control panel. Additionally, both the API and control panel use the same core validation classes.

Volcano supports event-based callbacks. For example, Volcano can POST data to an external callback URL when a new customer is created. This allows 3rd party apps to handle their own email product messaging and feature ACL. Event callbacks can be setup via the API or the control panel Settings page.

Installation

First, ensure that your system meets FuelPHP's minimum requirements.

Next, clone the repo:

$ git clone -b master https://github.com/volcano/volcano.git volcano

Initialize all submodules:

$ cd volcano && git submodule update --init --recursive

Install Composer.

Install Composer dependencies:

$ php composer.phar install

Configuration

App

Create a new database.

Add these new database credentials to the appropriate database environment config(s) (fuel/app/config/[ENVIRONMENT]/db.php).

Run the setup task (sets file permissions and runs migrations):

$ php oil r setup

Setup the statistics and recurring tasks as crons that run every night. Something like this:

$ 00 00 * * * FUEL_ENV=production /usr/bin/php oil r recurring
$ 00 01 * * * FUEL_ENV=production /usr/bin/php oil r statistics

Optional: Run the simulate task to auto-generate faux seller, product, customer and order data. This will allow you to more easily test out various control panel features. Run the statistics task to compute stats for the simulated data.

$ php oil r simulate
$ php oil r statistics

API

For API development and testing, you'll want to first create a seller (see "Usage" below) and then create an API key via the control panel Settings page.

Next, copy the new seller API key and add it to fuel/app/config/development/api.php so that you don't have to specify the api_key param when testing locally.

Usage

App

You'll be redirected to [YOUR DOMAIN]/setup the first time you access the Volcano control panel. This will allow you to create your first Seller. You may access [YOUR DOMAIN]/setup at any time to easily create additional sellers.

API

The API documentation contains a full list of available APIs. Here are a few examples:

Create a Product:

$ http -f POST /api/products/71687/options name="Product ABC"

Create a Customer:

$ http -f POST /api/customers contact[first_name]=Scatman contact[last_name]=John contact[email][email protected]

Create a Multi-Product Order for a Customer:

$ http -f POST /api/customers/120488428/orders products[4]="myappdomain.com" products[7]="My App Instance"

volcano's People

Contributors

dsposito avatar dmyers avatar cthos avatar keithia avatar

Watchers

James Cloos 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.