PHPackages                             pronto/mobilebundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. pronto/mobilebundle

ActiveSymfony-bundle[Admin Panels](/categories/admin)

pronto/mobilebundle
===================

A CMS bundle for mobile solutions

v3.0.7(1y ago)067411MITJavaScriptPHP ^8.1

Since Aug 15Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Pronto-am/MobileBundle)[ Packagist](https://packagist.org/packages/pronto/mobilebundle)[ RSS](/packages/pronto-mobilebundle/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (31)Versions (113)Used By (1)

ProntoMobileBundle [![Build Status](https://camo.githubusercontent.com/31caa20967dad225f9a780e831aa86636a44c742e998203af7ae255787038750/68747470733a2f2f7472617669732d63692e636f6d2f50726f6e746f2d616d2f4d6f62696c6542756e646c652e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/Pronto-am/MobileBundle)
====================================================================================================================================================================================================================================================================================================================

[](#prontomobilebundle-)

Table of contents
=================

[](#table-of-contents)

1. [Installation](#installation)
2. [Upgrades](#upgrades)
3. [Configuration](#mobilebundle-configuration)
4. [API Docs](#api-docs)

Installation
============

[](#installation)

### Step 1. Install the skeleton

[](#step-1-install-the-skeleton)

Open a command console and execute the following command to create a new project inside the folder: :

```
$ composer create-project pronto/mobile-skeleton
```

This command requires you to have Composer installed globally, as explained in the [installation chapter](https://getcomposer.org/doc/00-intro.md)of the Composer documentation.

### Step 2: Setup the database

[](#step-2-setup-the-database)

Update your database connection inside the `.env` file to match your configuration:

```
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
```

Then, create the database schema:

```
$ php bin/console doctrine:schema:create
```

And run the fixtures to provide initial data:

```
$ php bin/console doctrine:fixtures:load
```

This creates a first customer of the CMS, along with a super administrator.

### Step 5: Test logging in

[](#step-5-test-logging-in)

When you ran `php bin/console doctrine:fixtures:load`, a customer with application and user account where created.

You can test your application by installing the web-server-bundle, which allows you to start a server and view your application at `http://localhost:8000`. You can do this by installing the web-server-bundle:

```
$ composer require symfony/web-server-bundle --dev
```

And then running this command to start the server:

```
$ php bin/console server:run
```

You can now check if you're able to login at `http://localhost:8000/login` with the following credentials: **** and password **admin**.

### Step 6: Setup Firebase integrations

[](#step-6-setup-firebase-integrations)

We use Firebase to send our push notifications and store information in the Firebase database. This information contains sign-ins of devices and app users. At a regular interval, these records are being fetched from the Firebase database and updated into the database of the CMS. This method is used to prevent a lot of requests to your server.

The CMS also stores notification templates in the cloud storage of Firebase. When a user receives a notification, there might be an html template which is being opened. That template is also retrieved from Firebase.

At last, APNS tokens need to be converted to Firebase tokens for iOS devices to be able to receive the notifications.

#### 6.1 Create a Firebase project

[](#61-create-a-firebase-project)

You can do this by going to [the Firebase Console](https://console.firebase.com) and logging in with your Google account. You can now create a new project. After you have done this, you will be redirected to the project overview.

#### 6.2 Create a new private key

[](#62-create-a-new-private-key)

Click on the settings icon and choose "Project settings". Next, click on the tab "Service accounts". You now have the ability to create a new private key. When you click this button, a service-account file will be downloaded.

[![Firebase project settings](https://camo.githubusercontent.com/e1fc2c74c09b902dd7fa24e20fc3618aeefb08e5a9ce9b31daafb49f5fae046c/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f313830302f312a3161525a2d5a3332667947367a76347a7076635a41772e706e67)](https://camo.githubusercontent.com/e1fc2c74c09b902dd7fa24e20fc3618aeefb08e5a9ce9b31daafb49f5fae046c/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f313830302f312a3161525a2d5a3332667947367a76347a7076635a41772e706e67)

For the MobileBundle to connect to your Firebase project, you need to **rename** this file to: `google-service-account.json` and place it in the root of your project.

Upgrades
========

[](#upgrades)

Most of the upgrades of the bundle do not require any changes for your main project. When changes are needed, they are listed here.

### v1.6.\* to v1.7.0

[](#v16-to-v170)

The service configuration is slightly changed in this version. When using Twig in your package, you'll need to update your `packages/twig.yaml` file:

```
twig:
    globals:
-       pronto_mobile: '@pronto_mobile.global.app'
+       pronto_mobile: '@Pronto\MobileBundle\Service\ProntoMobile'
        entry_value_parser: '@Pronto\MobileBundle\Service\Collection\EntryValueParser'
        json_translator: '@Pronto\MobileBundle\Service\JsonTranslator'
```

MobileBundle configuration
==========================

[](#mobilebundle-configuration)

The MobileBundle configuration is available in the `config/packages/pronto_mobile.yaml` file. At the moment, there are not a lot of options here.

```
pronto_mobile:
    domain: 'pronto.am'
    uploads_folder: 'uploads'

    firebase:
        storage_decryption_password: 'ThisValueIsNotSoSecret'
```

##### Domain name

[](#domain-name)

The domain is important for sending the emails. The domain name you provide here is the domain mails are being send from. So, with the default value, mails are sent from: `noreply@pronto.am`.

##### Upoads folder

[](#upoads-folder)

This option is quite obvious. You can specify in which folder the uploads are being stored. This also means that for now, the only storage option is local.

##### Firebase: Storage decryption password

[](#firebase-storage-decryption-password)

This is the password that's being used to decrypt values from the logging table inside the Firebase Realtime Database. For obvious reasons, this value **needs** to be the same as the one you provide in the Android and iOS sdk of the MobileBundle.

### Cronjobs

[](#cronjobs)

There are three cronjobs which need to run in the background to send push notifications, retrieve logging from Firebase and convert APNS tokens to Firebase tokens. Below are the commands you need to register on your server for these tasks to be executed in the background. You are free to change the interval at which they are executed.

```
crontab -e
```

```
*    * * * * php /path/to/project/bin firebase:notifications:send   // every minute
*/15 * * * * php /path/to/project/bin firebase:database:logs        // every 15 minutes
*/15 * * * * php /path/to/project/bin firebase:tokens:convert       // every 15 minutes
```

API Docs
========

[](#api-docs)

### Postman

[](#postman)

A [public Postman collection](https://documenter.getpostman.com/view/7226788/SVzw3zwg) is available, with the currently available API routes.

### APIDoc JS

[](#apidoc-js)

The MobileBundle uses [apidocjs](http://apidocjs.com) to generate API docs. The docs are located inside the `public/apidoc` folder.

#### OAuth2

[](#oauth2)

The API docs don't list the routes for OAuth. The Android and Mobile sdk of the MobileBundle both use OAuth to connect to the API. If you're not familiar with OAuth, I suggest you visit  to get yourself up to date.

The routes for requesting an access token is: `https://yourdomain.app/oauth/v2/token`. You can request an access token by using the client credentials, or using the username and password combination of an app user.

##### Request access token: Client Credentials

[](#request-access-token-client-credentials)

Documentation:

```
[POST] https://yourdomain.app/oauth/v2/token

{
	"grant_type": "client_credentials",
	"client_id": "1_66e8vp2mt2sccosk4w0ogswogsgww4wsokcw4wsc80w4s00woc",
	"client_secret": "5s6e0r58qn8k0wggk808ogss4g08kgs0w8wgo84cc4s84sw4ck"
}

```

##### Request access token: Username and password

[](#request-access-token-username-and-password)

Documentation:[https://www.oauth.com/oauth2-servers/access-tokens/password-grant/](https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/)

```
[POST] https://yourdomain.app/oauth/v2/token

{
	"grant_type": "password",
	"username": "user@example.com",
	"password": "1234luggage",
	"client_id": "1_66e8vp2mt2sccosk4w0ogswogsgww4wsokcw4wsc80w4s00woc",
	"client_secret": "5s6e0r58qn8k0wggk808ogss4g08kgs0w8wgo84cc4s84sw4ck"
}

```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance38

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity88

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 68.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~22 days

Recently: every ~58 days

Total

104

Last Release

554d ago

Major Versions

0.5.1 → 1.0.02019-03-26

1.7.13 → 2.0.0-beta12021-01-18

1.7.15 → 2.0.1-beta12022-03-22

v2.2.7 → v3.0.0-beta12023-12-05

PHP version history (4 changes)0.1.0PHP ^7.1.3

1.7.0PHP ^7.2

2.0.1-beta1PHP ^7.4

2.2.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/00764c5177cbc747bcbc8d391994326517839cc0ab5c1464cf7b2c35ee784021?d=identicon)[troovers](/maintainers/troovers)

---

Top Contributors

[![troovers](https://avatars.githubusercontent.com/u/12065284?v=4)](https://github.com/troovers "troovers (13 commits)")[![tgobbens](https://avatars.githubusercontent.com/u/31062190?v=4)](https://github.com/tgobbens "tgobbens (6 commits)")

---

Tags

cms mobile pronto apps app bundle

###  Code Quality

Static AnalysisRector

### Embed Badge

![Health badge](/badges/pronto-mobilebundle/health.svg)

```
[![Health](https://phpackages.com/badges/pronto-mobilebundle/health.svg)](https://phpackages.com/packages/pronto-mobilebundle)
```

###  Alternatives

[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
