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
- License Activation
- Quick Start
- Test Coverage & Quality Assurance
- Support Channels
- Frequently Asked Questions
- Refund Policy
Installation from CodeCanyon
Step 1: Download the Package
- Log in to your CodeCanyon account
- Go to Downloads section
- Find Tenanto and click Download
- 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:
- PHP 8.4+
- PostgreSQL 16+ or MySQL 8+
- Redis 7+
- Composer 2.x
- Node.js 20+
# 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.
-
Enable Licensing (Optional)
# .env file LICENSE_ENABLED=true LICENSE_SECRET_KEY=your-very-long-secret-key-here LICENSE_VALIDATION_MODE=offline -
Generate a License
docker compose exec app php artisan license:generate --tier=pro [email protected] --name="Customer Name" -
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:
- Each site requires a separate Regular or Extended license
- Contact support for volume licensing options
Quick Start
Creating Your First Tenant
Via Admin Panel:
- Go to http://admin.tenanto.local
- Navigate to Tenants > Create
- Enter tenant name and slug (e.g., "Acme Corp" / "acme")
- 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
- Create a Stripe account at https://stripe.com
- Get your API keys from Stripe Dashboard
- Configure in
.env:STRIPE_KEY=pk_test_xxx STRIPE_SECRET=sk_test_xxx STRIPE_WEBHOOK_SECRET=whsec_xxx - 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):
- Multi-tenant isolation (data never leaks between tenants)
- Authentication & authorization (roles, permissions)
- Billing & subscription logic
- API endpoints (full CRUD coverage)
- License system validation
Frontend (Playwright E2E):
- Complete user journeys across 5 browsers
- Admin panel CRUD operations
- Tenant panel workflows
- API integration tests
- Error handling & edge cases
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
- Confidence: Know your installation is working correctly
- Upgrades: Verify nothing breaks after updates
- Customization: Test your changes before deploying
- Security: Tenant isolation is verified by automated tests
Support Channels
Getting Help
| Channel | Response Time | Best For |
|---|---|---|
| 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:
- Installation assistance
- Bug reports and fixes
- Configuration questions
- Clarification on documentation
Not Covered:
- Custom feature development
- Third-party integrations
- Server/hosting setup
- Code customization
Reporting Bugs
When reporting a bug, please include:
-
Environment details:
- PHP version (
php -v) - Laravel version (
php artisan --version) - Database type and version
- Docker or traditional setup
- PHP version (
-
Steps to reproduce:
- Exact steps taken
- Expected behavior
- Actual behavior
-
Error logs:
- Check
storage/logs/laravel.log - Browser console errors
- Network tab responses
- Check
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-autoloadand 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
.envmatch your setup. Docker users: usedbas host, notlocalhost.
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=3306Note: PostgreSQL is recommended for production.
Q: How do I enable custom domains for tenants?
Set in
config/tenancy.php:'identification_mode' => 'both', // subdomain + domainThen 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?
- Create price in Stripe Dashboard
- Add to
config/billing.php:'custom_plan' => [ 'stripe_price_id' => env('STRIPE_PRICE_CUSTOM'), 'features' => [...], ],
- 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:
- Item is "not as described"
- Item doesn't work as promised
- Item has a security vulnerability
- Support not provided as promised
Not Refund Eligible:
- Changed your mind
- Doesn't meet expectations not in description
- Bought by mistake
- Don't have expertise to use it
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.