CloudFlow Console Reference Application
Overview
This codebase provides a starter kit that provides out-of-the-box integrations with the CloudFlow platform.
Use this codebase to build a more tailored portal experience for your users to interact with your product while abstracting the CloudFlow administrative interface.
License to Use
CloudFlow grants permission to users of this Console Reference Application code to use, modify and build upon the code ongoing as needed, free of charge, for the purpose of building a tailored portal experience. CloudFlow grants these rights to current paying customers. This portal code is provided for reference purposes only and provided as-is with no warranties.
This is provided on the condition that the code is not:
- Open sourced.
- Made available to other parties outside of the conditions highlighted herein.
- Used for purposes outside the scope of building a tailored portal for access to the CloudFlow platform.
- Separately resold - either as a one-off or subscription service (royalties or license fees may apply without prior approval from CloudFlow).
Tools and technologies
This project is built upon Laravel, a PHP application framework. Services required to run this application (Nginx webserver, php-fpm, MySQL) are provided as docker images (see dockerfiles/*
and docker-compose.yml
for more detail).
Tooling required to develop on this codebase (e.g Composer, NodeJS) are included in the PHP image, and wrapper commands exist for ease of use (e.g ahoy composer
and ahoy npm
).
The following tools are required in your local development environment:
Getting Started
Initial configuration
The majority of configuration required happens in the .env
file. This file injects environment variables to the running application.
To begin, copy the .env.example
file to .env
and edit in your favorite text editor.
Basic configuration
Start by editing the following values:
APP_NAME
: The application nameAPP_COMPANY_NAME
: Your company nameAPP_COMPANY_URL
: Your company URLMAIL_FROM_ADDRESS
: The from email address associated with outgoing mailMAIL_FROM_NAME
: The from name associated with outgoing mail
These values are used throughout the portal, in email notifications, and on invoices (if Subscriptions are enabled).
Connect to your CloudFlow account by modifying the following values:
SECTION_ACCOUNT
: Your CloudFlow account IDSECTION_APPLICATION_STACK
: The name of the stack to provision on createSECTION_CONFIG_FILE
: Path to custom JSON file in the repositorySECTION_AUTH
: Basic authentication credentials for Aperture, create withecho -n user:password | base64
reCAPTCHA support
By default Google reCAPTCHA is enabled on the user registration form. This prevents spam registrations and is generally recommended.
- Create a new v2 "I'm not a robot" tickbox from the reCAPTCHA dashboard.
- Add "localhost" as a domain for local development, plus any other domains the application will run on.
- Add the site key to the NOCAPTCHA_SITEKEY value in .env.
- Add the secret key to the NOCAPTCHA_SECRET value in .env.
If you wish to disable reCAPTCHA set the NOCAPTCHA_ENABLED value to false.
Building the project
Once all required software packages and basic configuration values are present we can build the project. To do this run the following command:
ahoy build
This will build docker images and run local containers. It will also import database schema and import seed data. You should see the following info on success:
--- App Info ---
Site: http://localhost:8002
Mailhog: http://localhost:8026
Maria port: 3307
Visit the project on http://localhost:8002 to get started.
Configuring look & feel
The starter kit provides some simple variables to alter color scheme and logo. Edit the resources/sass/_variables.scss
file to update path to logo file (SVG recommended) and colors.
Once changes have been made you will need to recompile the frontend assets. Do this with:
ahoy npm run production
If you wish to build non-minified versions for debugging build with:
ahoy npm run development
You should commit the resulting built artefacts to the repository.
Mailhog & Email configuration
Mailhog is an application that traps outgoing emails to make local development easier. This application runs Mailhog and is configured to trap email by default.
To view the Mailhog interface run ahoy info
for the local service URL. Any verification, password reset, notification emails will be sent here.
Configuring email
Many email providers are supported, including Mailgun, Postmark, AWS SES, SMTP, sendmail. Read the Laravel docs for detail on configuring the mail driver in the .env file.
To set the email sender address and name, use the following settings:
EMAIL_ADDRESS_FROM=info@example.com
EMAIL_ADDRESS_NAME=Info
Email verification
To require users to verify their email address for their account to have full access set the following in the .env file:
EMAIL_VERIFY_REQUIRED=true
Billing and subscriptions
A simple subscriptions, billing and invoices solution is included in the starter kit. This allows for simple SaaS-like products to be built on the CloudFlow platform with minimal effort.
By default, subscription services are enabled. Subscription services are broken into two main categories: individuals and organizations. Organizations allow for teams to be created and users to be invited to access an account with varying levels of permission.
Out of the box, subscription features place limits on the numbers of projects and team members that can be created based on a number of customizable tiers defined in code.
To disable the need for a subscription to enable all features, set the following in the .env file. Alternatively, a specific individual/organization can be assigned the 'unlimited' subscription.
SUBSCRIPTIONS_ENABLE=false
Production deployments
To run in a production environment the following changes should be made in the .env file.
APP_DEBUG=false
APP_URL=https://www.production-domain.com
PROD_MODE=true
Ensure the following SECTION_AUTH env variable contains valid authentication with access to your production applications and environments.
If Subscriptions/Billing is active ensure the following values are provided:
STRIPE_KEY_PROD
STRIPE_SECRET_PROD
Database values (DB_*
) should be updated to point to a production database service. While it is possible to use the provided MySQL container it is not recommended, as it represents a SPOF (single point of failure). A cloud service like AWS, Azure, Google Cloud.
Email should be configured as per the "Configuring email" section above.
Help, Support and Professional Services
This reference portal application is provided as-is with no CloudFlow specific support provided. If you would like help building on the scope of this codebase outside the reference application itself, we can facilitate a relationship with our partner QuantCDN who are experts in building portal applications on top of this reference application. They are able to work with you in a Professional Services capacity to customize this console experience.
Contact CloudFlow at se@section.io and we will be happy to set up that connection.