Solavel Solavel Docs

Plans and features

docs/solavel/plans-features.md

Who can use this: Anyone (the public plans page is open); editing is Admin or Super Admin only URL / Route: Public plans listing at /plans (client.plans.index); admin editing at /admin/plans/*, /admin/projects/{project}/plans/*, /admin/features (read-only) Plan / feature gate: Always on

Purpose

This page explains what plans and features are, where the prices live, and how to change them. Plans decide what your subscription costs and what the limits are. Features are the per-flag toggles that decide which buttons and pages are visible inside Solabooks.

What plans look like

Each app (project) has its own ladder of plan tiers. The current Solabooks ladder is:

Tier Slug Price Max users / org
Free standard $0.00 2
Professional professional $25.00 5
Premium premium $35.00 8
Enterprise enterprise $100.00 unlimited

HR has a single Free tier (free). Solavel Projects has Free, Pro, Premium. Inventory (when seeded) has Standard, Professional, Premium, Enterprise to mirror Solabooks. The exact prices are seeded by database/seeders/ProjectPlanSeeder.php and can be edited from the admin shell.

In addition there are three bundles that combine apps at a fixed tier:

Bundle Slug Includes
Starter starter Solabooks + Inventory at Standard
Business business Solabooks + Inventory at Premium
Enterprise enterprise Solabooks + Inventory at Enterprise

Bundles are seeded by database/seeders/BundleSeeder.php. Their price equals the sum of the included project plans' prices.

Public plans page

  • URL: /plans (route client.plans.index).
  • Who: Public. Anyone can browse.
  • What you do: Read each tier, then click Subscribe (POST /plans/{projectPlan}/subscribe, client.plans.subscribe). Subscribe sends signed-out users to /register and signed-in users into the new-organization wizard.

There is also a comparison page at /comparison (plans.compare) that shows tiers side by side, and per-app landing pages at /finance/plans (finance.plans) and /hr/plans (hr.plans).

What features are

A feature is a single named flag — for example, multi_currency_enabled, pdf_templates_enabled, tracker.bank_reconciliation. Features come in two shapes:

  • Boolean — on or off (vat_enabled = true).
  • Limit — a numeric cap (workflow_rules = 3, scheduled_reports = 5).

The full catalog (108 entries) lives in config/features.catalog.php and is loaded by app/Support/FeatureRegistry.php. Each entry has a key, label, description, category, type, default value, and whether it applies globally or to a single project. The catalog is the source of truth.

When database/seeders/PlanFeatureSeeder.php runs, it copies every entry into the plan_features table. Anything missing from the registry is marked inactive — the catalog is authoritative.

Each plan tier has a feature_overrides map that overlays the defaults. For example, the Solabooks Free tier turns off multi_currency_enabled, sets workflow_rules to 3, and disables enable_purchase_orders.

How features are enforced

  • Inside Solabooks, the route layer reads each tier's resolved features. A request to /finance/ar/invoices/* only succeeds if the active organization's plan has tracker.invoices = true. The check is performed by the feature: rule attached to the route.
  • Some features also have a permission counterpart — for example, bank_reconciliation_enabled (feature) versus banking.reconciliation.start (permission). Both must allow the action for it to go through.

Step by step (admin)

Browse the feature catalog

  1. Open /admin/features (admin.features.index).
  2. The page lists every entry with its category, type, and default. It is read-only — to change a default you edit config/features.catalog.php and re-run the seeder.

Edit a plan tier

  1. Open /admin/plans (admin.plans.index).
  2. Click a plan to view (admin.plans.show) or edit (admin.plans.edit). You can adjust price, max users, and the per-feature overrides.
  3. Save (PUT admin.plans.update). The new values apply on the next page load for any subscriber on that tier.

Edit project-level plans

  1. Open /admin/projects (Super Admin only — admin.projects.index).
  2. Pick a project to see its plans at /admin/projects/{project}/plans (admin.projects.plans.index).
  3. Add a new tier (admin.projects.plans.create / .store), edit one (admin.projects.plans.edit / .update), or remove one (admin.projects.plans.destroy).

Permissions / restrictions

  • /plans and /comparison: public.
  • POST /plans/{projectPlan}/subscribe: signed-in user. The subscription is created against the current selected organization (or a new one if you have none).
  • /admin/plans/*: Admin or Super Admin.
  • /admin/projects/* and child plans: Super Admin only.
  • /admin/features: Admin or Super Admin (read-only viewer).

Common problems

  • "This feature is not available on your plan." — The active organization's tier has the feature flag off. Upgrade from Subscriptions and billing.
  • A feature exists in Solabooks but is not in the central catalog. The audit found 116 finance feature keys that are not in config/features.catalog.php. Some of these are tracked elsewhere; if a customer asks about a feature that has no entitlement record, fall back to the global default in finance_features.php until the catalog is reconciled.
  • Bundles missing Inventory. BundleSeeder only adds Inventory if the inventory project was seeded. If services.inventory.base_url was unset at seed time, bundles will silently include only Solabooks.

Related

Source: docs/solavel/plans-features.md ← All documentation