T
Tenanto
Documentation / Codecanyon

Codecanyon

Updated Jan 25, 2026

CodeCanyon Buyer Guide

Welcome to Tenanto! This guide is specifically designed for CodeCanyon marketplace buyers to help you get started quickly.

Table of Contents


Installation from CodeCanyon

Step 1: Download the Package

  1. Log in to your CodeCanyon account
  2. Go to Downloads section
  3. Find Tenanto and click Download
  4. Choose All files & documentation for the complete package

Step 2: Extract the Archive

# Extract to your projects directory
unzip tenanto-v1.0.0.zip -d /path/to/your/projects/

# Navigate to the project
cd /path/to/your/projects/tenanto

Step 3: Environment Setup

Option A: Docker (Recommended)

# Copy environment file
cp .env.example .env

# Start Docker containers
docker compose up -d

# Install dependencies
docker compose exec app composer install
docker compose exec app npm install && npm run build

# Generate application key
docker compose exec app php artisan key:generate

# Run migrations
docker compose exec app php artisan migrate --seed

Option B: Traditional Server

Ensure your server meets requirements:

# Install dependencies
composer install
npm install && npm run build

# Configure environment
cp .env.example .env
php artisan key:generate

# Configure database in .env, then:
php artisan migrate --seed

Step 4: DNS Configuration

Add entries to your hosts file:

Linux/macOS: /etc/hosts Windows: C:\Windows\System32\drivers\etc\hosts

127.0.0.1 tenanto.local
127.0.0.1 admin.tenanto.local
127.0.0.1 demo.tenanto.local
127.0.0.1 acme.tenanto.local

Step 5: Access Your Installation

Panel URL Default Credentials
System Admin http://admin.tenanto.local [email protected] / password
Demo Tenant http://demo.tenanto.local/app [email protected] / password
API Docs http://tenanto.local/api/v1 -

License Activation (Optional)

License Types

License Sites Support Updates
Regular 1 end product 6 months Lifetime
Extended 1 SaaS product 12 months Lifetime

Activation Process

Tenanto includes an optional license system you can use for your own customers. It is disabled by default and does not enforce CodeCanyon purchase codes.

  1. Enable Licensing (Optional)

    # .env file
    LICENSE_ENABLED=true
    LICENSE_SECRET_KEY=your-very-long-secret-key-here
    LICENSE_VALIDATION_MODE=offline
    
  2. Generate a License

    docker compose exec app php artisan license:generate --tier=pro [email protected] --name="Customer Name"
    
  3. Validate a License

    docker compose exec app php artisan license:validate TENANTO-PRO-A1B2C3D4E5F6-XY7Z --domain=example.com
    

Multi-Site Licensing

If you need to deploy Tenanto on multiple sites:


Quick Start

Creating Your First Tenant

Via Admin Panel:

  1. Go to http://admin.tenanto.local
  2. Navigate to Tenants > Create
  3. Enter tenant name and slug (e.g., "Acme Corp" / "acme")
  4. The tenant will be accessible at http://acme.tenanto.local

Via Command Line:

docker compose exec app php artisan tenant:create "Acme Corp" acme

Setting Up Stripe Billing

  1. Create a Stripe account at https://stripe.com
  2. Get your API keys from Stripe Dashboard
  3. Configure in .env:
    STRIPE_KEY=pk_test_xxx
    STRIPE_SECRET=sk_test_xxx
    STRIPE_WEBHOOK_SECRET=whsec_xxx
    
  4. Create products/prices in Stripe and update:
    STRIPE_PRICE_BASIC=price_xxx
    STRIPE_PRICE_PRO=price_xxx
    STRIPE_PRICE_ENTERPRISE=price_xxx
    

Removing the Example Module

The Projects/Tasks module is provided as an example. To remove it:

# Remove migrations (before running migrate)
rm database/migrations/*_create_projects_table.php
rm database/migrations/*_create_tasks_table.php

# Remove domain code
rm -rf app/Domain/ExampleApp

# Remove Filament resources
rm -rf app/Filament/Tenant/Resources/ProjectResource*
rm -rf app/Filament/Tenant/Resources/TaskResource*

# Remove tests
rm -rf tests/Feature/ExampleApp
rm -rf tests/Unit/Domain/ExampleApp

# Remove API routes and controllers
# Edit routes/api.php to remove project/task routes
rm -rf app/Http/Controllers/Api/V1/ProjectController.php
rm -rf app/Http/Controllers/Api/V1/TaskController.php

Test Coverage & Quality Assurance

Tenanto is built with enterprise-grade quality assurance. Unlike many marketplace scripts, we include comprehensive test suites that you can run to verify your installation works correctly.

1,091 Automated Tests

Test Type Count Description
PHP Unit Tests 607 Backend logic, services, models
Playwright E2E Tests 484 Full browser-based testing

What's Tested

Backend (PHPUnit):

Frontend (Playwright E2E):

Running Tests

# PHP tests
docker compose exec app php artisan test

# E2E tests (requires Node.js)
npx playwright install  # First time only
npx playwright test

# Interactive E2E mode
npx playwright test --ui

Why This Matters


Support Channels

Getting Help

Channel Response Time Best For
Email 24-48 hours General questions, bugs
CodeCanyon Comments 48-72 hours Pre-sale questions
Documentation Immediate How-to guides

Support Email: [email protected]

What's Included in Support

Covered:

Not Covered:

Reporting Bugs

When reporting a bug, please include:

  1. Environment details:

    • PHP version (php -v)
    • Laravel version (php artisan --version)
    • Database type and version
    • Docker or traditional setup
  2. Steps to reproduce:

    • Exact steps taken
    • Expected behavior
    • Actual behavior
  3. Error logs:

    • Check storage/logs/laravel.log
    • Browser console errors
    • Network tab responses

Frequently Asked Questions

Installation

Q: Docker containers won't start

Check if Docker Desktop is running and ports 80, 443, 5432 are available. See Troubleshooting Guide

Q: "Class not found" errors after installation

Run composer dump-autoload and clear caches:

php artisan config:clear
php artisan cache:clear
php artisan view:clear

Q: Database connection refused

Ensure PostgreSQL is running and credentials in .env match your setup. Docker users: use db as host, not localhost.

Configuration

Q: How do I change the default domain?

Edit config/tenancy.php:

'central_domains' => ['yourdomain.com'],

Update .env:

APP_URL=https://yourdomain.com

Q: Can I use MySQL instead of PostgreSQL?

Yes! Update .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306

Note: PostgreSQL is recommended for production.

Q: How do I enable custom domains for tenants?

Set in config/tenancy.php:

'identification_mode' => 'both', // subdomain + domain

Then assign domains via Admin panel or database.

Billing

Q: How do I test Stripe integration?

Use Stripe test mode keys (pk_test_, sk_test_) and test card numbers:

  • Success: 4242 4242 4242 4242
  • Decline: 4000 0000 0000 0002

Q: How do I add custom subscription plans?

  1. Create price in Stripe Dashboard
  2. Add to config/billing.php:
'custom_plan' => [
    'stripe_price_id' => env('STRIPE_PRICE_CUSTOM'),
    'features' => [...],
],
  1. Add enum case in SubscriptionPlan.php

Customization

Q: How do I add a new tenant module?

See Example Module Guide for step-by-step instructions.

Q: How do I customize the admin panel theme?

Edit app/Providers/Filament/AdminPanelProvider.php:

->colors([
    'primary' => Color::Blue,
])
->brandLogo(asset('images/logo.svg'))

Q: How do I add API endpoints?

See API Documentation for patterns and examples.

Updates

Q: How do I update to a new version?

See Upgrading Guide for detailed instructions.

Q: Will updates break my customizations?

Core files may change. We recommend:

  • Keep customizations in separate files when possible
  • Use Laravel's extension points (Events, Observers, Middleware)
  • Review CHANGELOG.md before updating

Refund Policy

Tenanto follows CodeCanyon's standard refund policy:

Refund Eligible:

Not Refund Eligible:

For refund requests, contact CodeCanyon support directly through their Help Center.


Version History

See CHANGELOG.md for complete version history.

Additional Resources


Thank you for purchasing Tenanto!

If you find this product useful, please consider leaving a rating on CodeCanyon. Your feedback helps us improve and helps other developers discover Tenanto.