Implement academy analytics, billing, and web stories updates

This commit is contained in:
2026-05-26 07:27:29 +02:00
parent 456c3d6bb0
commit 0b33a1b074
177 changed files with 27360 additions and 2685 deletions

View File

@@ -2,7 +2,7 @@
return [
'enabled' => (bool) env('SKINBASE_ACADEMY_ENABLED', true),
'payments_enabled' => (bool) env('SKINBASE_ACADEMY_PAYMENTS_ENABLED', false),
'payments_enabled' => (bool) env('SKINBASE_ACADEMY_PAYMENTS_ENABLED', env('ACADEMY_BILLING_ENABLED', false)),
'free_content_enabled' => (bool) env('SKINBASE_ACADEMY_FREE_CONTENT_ENABLED', true),
'challenges_enabled' => (bool) env('SKINBASE_ACADEMY_CHALLENGES_ENABLED', true),
'badges_enabled' => (bool) env('SKINBASE_ACADEMY_BADGES_ENABLED', true),
@@ -25,6 +25,7 @@ return [
'providers' => [
'ChatGPT',
'Gemini',
'Adobe Firefly',
'Leonardo',
'Bing',
'Midjourney',

View File

@@ -0,0 +1,28 @@
<?php
return [
'enabled' => (bool) env('ACADEMY_BILLING_ENABLED', false),
'subscription_name' => env('ACADEMY_STRIPE_SUBSCRIPTION_NAME', 'academy'),
'plans' => [
'creator_monthly' => [
'label' => 'Creator Monthly',
'tier' => 'creator',
'interval' => 'monthly',
'amount' => '4.99',
'currency' => 'EUR',
'stripe_price_id' => env('ACADEMY_CREATOR_MONTHLY_PRICE_ID'),
'featured' => false,
],
'pro_monthly' => [
'label' => 'Pro Monthly',
'tier' => 'pro',
'interval' => 'monthly',
'amount' => '9.99',
'currency' => 'EUR',
'stripe_price_id' => env('ACADEMY_PRO_MONTHLY_PRICE_ID'),
'featured' => true,
],
],
];

130
config/cashier.php Normal file
View File

@@ -0,0 +1,130 @@
<?php
use Laravel\Cashier\Console\WebhookCommand;
use Laravel\Cashier\Invoices\DompdfInvoiceRenderer;
// use Laravel\Cashier\Invoices\LaravelPdfInvoiceRenderer;
return [
/*
|--------------------------------------------------------------------------
| Stripe Keys
|--------------------------------------------------------------------------
|
| The Stripe publishable key and secret key give you access to Stripe's
| API. The "publishable" key is typically used when interacting with
| Stripe.js while the "secret" key accesses private API endpoints.
|
*/
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
/*
|--------------------------------------------------------------------------
| Cashier Path
|--------------------------------------------------------------------------
|
| This is the base URI path where Cashier's views, such as the payment
| verification screen, will be available from. You're free to tweak
| this path according to your preferences and application design.
|
*/
'path' => env('CASHIER_PATH', 'stripe'),
/*
|--------------------------------------------------------------------------
| Stripe Webhooks
|--------------------------------------------------------------------------
|
| Your Stripe webhook secret is used to prevent unauthorized requests to
| your Stripe webhook handling controllers. The tolerance setting will
| check the drift between the current time and the signed request's.
|
*/
'webhook' => [
'secret' => env('STRIPE_WEBHOOK_SECRET'),
'tolerance' => env('STRIPE_WEBHOOK_TOLERANCE', 300),
'events' => WebhookCommand::DEFAULT_EVENTS,
],
/*
|--------------------------------------------------------------------------
| Currency
|--------------------------------------------------------------------------
|
| This is the default currency that will be used when generating charges
| from your application. Of course, you are welcome to use any of the
| various world currencies that are currently supported via Stripe.
|
*/
'currency' => env('CASHIER_CURRENCY', 'usd'),
/*
|--------------------------------------------------------------------------
| Currency Locale
|--------------------------------------------------------------------------
|
| This is the default locale in which your money values are formatted in
| for display. To utilize other locales besides the default en locale
| verify you have the "intl" PHP extension installed on the system.
|
*/
'currency_locale' => env('CASHIER_CURRENCY_LOCALE', 'en'),
/*
|--------------------------------------------------------------------------
| Payment Confirmation Notification
|--------------------------------------------------------------------------
|
| If this setting is enabled, Cashier will automatically notify customers
| whose payments require additional verification. You should listen to
| Stripe's webhooks in order for this feature to function correctly.
|
*/
'payment_notification' => env('CASHIER_PAYMENT_NOTIFICATION'),
/*
|--------------------------------------------------------------------------
| Invoice Settings
|--------------------------------------------------------------------------
|
| The following options determine how Cashier invoices are converted from
| HTML into PDFs. You're free to change the options based on the needs
| of your application or your preferences regarding invoice styling.
|
*/
'invoices' => [
// Supported: DompdfInvoiceRenderer::class, LaravelPdfInvoiceRenderer::class
'renderer' => env('CASHIER_INVOICE_RENDERER', DompdfInvoiceRenderer::class),
'options' => [
// Supported: 'letter', 'legal', 'A4'
'paper' => env('CASHIER_PAPER', 'letter'),
'remote_enabled' => env('CASHIER_REMOTE_ENABLED', false),
],
],
/*
|--------------------------------------------------------------------------
| Stripe Logger
|--------------------------------------------------------------------------
|
| This setting defines which logging channel will be used by the Stripe
| library to write log messages. You are free to specify any of your
| logging channels listed inside the "logging" configuration file.
|
*/
'logger' => env('CASHIER_LOGGER'),
];