Skip to content

Provider Commands

Provider commands install and manage third-party service integrations (SMS, payments, storage, email) and starter templates that extend your project with pre-built feature sets.

forge provider:add

Add a third-party service provider to your project. FORGE updates forge.yaml, automatically appends the required environment variables to both .env and .env.example (with deduplication), and displays the variables for reference.

Usage

bash
forge provider:add <PROVIDER>

Available Providers

ProviderCategoryDescription
sms:twilioSMSTwilio SMS and voice messaging.
sms:unifonicSMSUnifonic SMS gateway (popular in MENA region).
payments:stripePaymentsStripe with Apple Pay and Google Pay support.
payments:hyperpayPaymentsHyperPay payment gateway.
payments:checkoutPaymentsCheckout.com payment processing.
storage:s3StorageAWS S3 compatible object storage.
email:sendgridEmailSendGrid transactional email delivery.

What provider:add Does

When you add a provider, FORGE performs the following steps:

1. Validate the provider type and driver
2. Update forge.yaml with the selected driver
3. Append environment variables to .env and .env.example
   - Skips variables that already exist (deduplication)
   - Creates the files if they don't exist
   - Adds a section header (e.g. "# Sms Provider (twilio)")
4. Display the required environment variables for reference

TIP

If you run provider:add again for the same driver, existing variables are not duplicated. FORGE checks each KEY= before appending.

Examples

bash
# Add Twilio SMS
forge provider:add sms:twilio

# Add S3 storage
forge provider:add storage:s3

After adding a provider, the required environment variables are automatically written to .env and .env.example:

env
# Sms Provider (twilio)
TWILIO_ACCOUNT_SID=your_account_sid
TWILIO_AUTH_TOKEN=your_auth_token
TWILIO_FROM_NUMBER=+1234567890

Replace the placeholder values in .env with your actual credentials before running the application.

Development Drivers

Drivers named log (e.g. sms:log, email:log, payment:log) require no environment variables. They log output to the console and are intended for local development.

TIP

Provider service wrappers implement a common trait interface. For example, all SMS providers implement SmsProvider, making it straightforward to swap providers without changing application code.


forge provider:remove

Remove a previously added provider from the project.

Usage

bash
forge provider:remove <PROVIDER>

Example

bash
forge provider:remove sms:twilio

This reverses the steps performed by provider:add — removing the service file, configuration block, and unused dependencies.

WARNING

Removing a provider does not clean up code that calls the provider's service. Review your handlers and services for any references after removal.


forge provider:list

Display all available and installed providers.

Usage

bash
forge provider:list [OPTIONS]

Options

OptionTypeDefaultDescription
--categorystringFilter by category: sms, payments, storage, or email.

Example Output

bash
forge provider:list
┌──────────────────────┬───────────┬───────────┐
│ Provider             │ Category  │ Status    │
├──────────────────────┼───────────┼───────────┤
│ sms:twilio           │ SMS       │ Installed │
│ sms:unifonic         │ SMS       │ Available │
│ payments:stripe      │ Payments  │ Available │
│ payments:hyperpay    │ Payments  │ Available │
│ payments:checkout    │ Payments  │ Available │
│ storage:s3           │ Storage   │ Installed │
│ email:sendgrid       │ Email     │ Available │
└──────────────────────┴───────────┴───────────┘
bash
forge provider:list --category=sms
┌──────────────────────┬───────────┬───────────┐
│ Provider             │ Category  │ Status    │
├──────────────────────┼───────────┼───────────┤
│ sms:twilio           │ SMS       │ Installed │
│ sms:unifonic         │ SMS       │ Available │
└──────────────────────┴───────────┴───────────┘

Template Commands

Templates are pre-built feature bundles that add domain-specific functionality to your FORGE project. Unlike providers (which add a single integration), templates scaffold entire feature sets including models, handlers, pages, and migrations.

forge template:add

Add a starter template to your project.

bash
forge template:add <TEMPLATE>

Example

bash
forge template:add crm

WARNING

Templates should be added early in a project's lifecycle. Adding a template to a project with significant custom code may produce merge conflicts in shared files like route registrations and sidebar navigation.

forge template:list

Display all available templates.

bash
forge template:list

Example Output

┌────────────┬─────────────────────────────────────────────────┐
│ Template   │ Description                                     │
├────────────┼─────────────────────────────────────────────────┤
│ base       │ Authentication, users, roles, permissions, CMS  │
│ crm        │ Contacts, deals, pipelines, activities          │
│ helpdesk   │ Tickets, SLA, knowledge base, canned responses  │
│ ecommerce  │ Products, orders, cart, inventory, coupons      │
│ booking    │ Appointments, availability, calendar, reminders  │
└────────────┴─────────────────────────────────────────────────┘

forge template:info

Display detailed information about a specific template, including its description, included modules, required providers, and generated files.

bash
forge template:info <TEMPLATE>

Example

bash
forge template:info crm
Template: crm
Description: Contacts, deals, pipelines, activities

Modules:
  • contacts       — Contact management with custom fields
  • deals          — Deal tracking with pipeline stages
  • pipelines      — Configurable sales pipelines
  • activities     — Activity logging and reminders

Generated files:
  • 8 models
  • 8 migrations
  • 6 admin pages
  • 4 seeders

Required providers:
  • email (for notifications)

See Also

Released under the MIT License.