Documentation

REQUIRED PACKAGES

  • php-cli – PHP command-line interface
  • php-dom and php-xml – for XML parsing (used in layouts and configs)
  • php-curl – for HTTP requests
  • php-mysql – for MySQL database connection
  • php-mbstring – for multibyte string support (required by PHPUnit and some packages)
  • php-gd – for image processing (used in gallery, sliders, etc.)

Make sure all extensions match your installed PHP version (e.g., php8.5-mysql, php8.5-mbstring, etc.)

INSTALLATION

Before running the script, make sure you have configured the database connection (host, database name, username, password, and port).

Run the following command to create the project:

composer create-project cmsrs/cmsrs3
cd cmsrs3 
php artisan cmsrs:install
php artisan serve

Once the server is running, open your browser and navigate to:

http://127.0.0.1:8000

MANUAL INSTALLATION

* Download the source code:

git clone https://github.com/cmsrs/cmsrs3.git && cd cmsrs3

* Install dependencies:

composer install

* Prepare .env file, and change db connection:

cp .env.example .env

change db connection in .env file, for example:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cmsrs
DB_USERNAME=rs
DB_PASSWORD="secret102*"

You can create a MySQL user and database using the script: ./rs/go/go_create_user_and_db.sh

* Set up Laravel and JWT (generate the application key and JWT secrets):

php artisan key:generate && php artisan jwt:secret

* Create database tables and seed initial data:

  • admin (email/login: adm@cmsrs.pl, pass: cmsrs123)
  • client (email/login: client@cmsrs.pl, pass: cmsrs456)
php artisan migrate && php artisan db:seed

* (optionally) Set up permission:

./rs/go/go_privilege.sh

* Run CMS installation. This step finalizes setup (admin password reset + demo configuration):

php artisan cmsrs:install

* Start server

php artisan serve

RUN TESTS (RECOMMENDED)

Prepare .env.testing file, and change db connection:

cp  .env .env.testing 

Change db connection in .env.testing file, for example:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cmsrs_testing
DB_USERNAME=rs
DB_PASSWORD="secret102*"

Attention! DB_DATABASE should be different than the one in the .env file.

You can create a MySQL database using the script: ./rs/go/go_create_test_db.sh

* (optionally) set permission

./rs/go/go_privilege.sh

* Run tests:

It is recommended to run tests on a clean instance (without images)

./vendor/bin/phpunit

MANAGEMENT

* Go to the website http://127.0.0.1:8000/admin/ and log in as:

  • username: adm@cmsrs.pl
  • default password: cmsrs123

* Create main page (page type: main_page)

* Add menu

* Add pages

CONFIGURATION .env FILE

After each change to a configuration value, it is necessary to log in to the admin panel again.

* Set up langs, the default is 'en,pl':

LANGS="en,pl"

The first one will be default language. If you don't set up this directive it will be 'en,pl'

* Add api secret, the default is '':

API_SECRET=""

It must be the same like in the admin config file (see Vue.js). It can be empty string.

* Set available page type that appear in the administration area:

The default page types are:

PAGE_TYPES="cms,gallery,shop,contact,main_page,privacy_policy,projects,clear,inner"
  • cms: Displays a WYSIWYG editor in the administration area.
  • gallery: A page for showcasing photos.
  • shop: A page for displaying products.
  • contact: A page with contact information.
  • main_page: The main page, which requires writing pure HTML code.
  • privacy_policy: A page containing the privacy policy.
  • projects: Displays the same content across all languages.
  • clear: A page without a WYSIWYG editor; requires writing pure HTML code.
  • inner: Represents a text box on an existing page that requires hardcoding in the layout. The key is the short_title. For example, use the following function in your code: getPageDataByShortTitleCache('main_page_box1', 'content'). The following short_title values are predefined:
    • main_page_box1, main_page_box2, main_page_box3: Represent three content boxes on the main page.
    • company_data: Displays company information on the contact page.
    • main_page_slider: Contains images displayed in the slider on the main page, It requires adding the following element to the main page:
      <div class='slidecontainer'></div>

* Additionally sending an e-mail with information from the contact form. If the value is empty, the text of the message will appear only in the administration panel in the contact tab

CONTACT_EMAIL=""

* For Google reCAPTCHA v3 in the contact form, set up the following parameters:

GOOGLE_RECAPTCHA_PRIV
GOOGLE_RECAPTCHA_PUBLIC

* Enable database cache, the default is false:

CACHE_ENABLE=false
CACHE_ENABLE_FILE='app/cache_enable.txt'

* Set the currency, the default is USD:

CURRENCY=USD

* Set is_shop, the default is true:

IS_SHOP=true

* Set is_login, the default is true:

IS_LOGIN=true

* Set is_register, the default is true:

IS_REGISTER=true

* Set the allowed file extensions for uploads:

The default file extensions for uploads are:

ALLOWED_UPLOAD_EXTENSIONS="jpg,jpeg,png,gif"

* PayU integration:

#https://merch-prod.snd.payu.com - sandbox
PAYU_URL=https://merch-prod.snd.payu.com
PAYU_POS_ID=123
PAYU_MD5=xxx
PAYU_CLIENT_ID=123
PAYU_CLIENT_SECRET=zzz
NOTIFY_URL=http://domain/home/orders
CUSTOMER_IP="123.123.123.123"

* Administrator Credentials

These credentials can be used to create the initial admin user during system installation (database seeding).

ADM_EMAIL="adm@cmsrs.pl"
ADM_PASS="cmsrs123"

ADM_EMAIL: The default email address of the admin account. ADM_PASS: The default password for the admin account.

Warning: Do not use the default credentials (adm@cmsrs.pl / cmsrs123) in production. Always update them for security reasons before deploying.

* Client Account Credentials

These credentials can be used to create a default client account during system installation (e.g., for seeding or demo purposes).

CLIENT_EMAIL="client@cmsrs.pl"
CLIENT_PASS="cmsrs456"

CLIENT_EMAIL: The default email address for the client account. CLIENT_PASS: The default password for the client account.

Warning: Do not use the default client credentials (client@cmsrs.pl / cmsrs456) in production environments. Always change them to secure values before deployment.

* DEMO Mode

Use this variable to enable demo mode, for example at http://demo.cmsrs.pl/ Used to block saving changes or modifying sensitive data on public demo instances.

DEMO_STATUS=false

Default is false (disabled).

* Pagination

PAGINATION=10

Number of items per page in the admin panel. The default value is 10.

* Headless Mode

IS_HEADLESS=true

Enables headless API. The default option is true.

true: Enables headless API. Headless mode with Nuxt frontend; pages are not rendered on the server side (Nuxt/SPA mode).

false: Disables headless API.

* SSR Mode

IS_SSR=true

Enables SSR mode. The default option is true.

true: Enable traditional SSR (Server-Side Rendering) on the PHP server side.

false: Disables SSR (Server-Side Rendering) on the PHP server side

SAMPLE .env CONFIGURATION FOR COMPANY PROFILE PAGE

If you want to create a company profile page, I suggest setting the following CMS parameters, for example:

IS_SHOP=false
IS_LOGIN=false
IS_REGISTER=false
LANGS="en"
API_SECRET="string123"
PAGE_TYPES="cms,gallery,contact,main_page,privacy_policy,inner"

CLI COMMANDS

* Load test (demo) data:

I highly recommend running this script to understand how my CMS works. (Remember to leave the default values in the .env file.)

./rs/go/go_clear_and_load_demo.sh

* Create sitemap (it is recommended to put this command in the crontab file):

php artisan cmsrs:create-site-map

* Create client user or edit password for user:

php artisan cmsrs:create-client {user} {password}

* Change admin password:

php artisan cmsrs:change-admin-pass {new-password}