Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
292 changes: 120 additions & 172 deletions .cursor/rules/laravel-boost.mdc

Large diffs are not rendered by default.

292 changes: 120 additions & 172 deletions .github/copilot-instructions.md

Large diffs are not rendered by default.

292 changes: 120 additions & 172 deletions .junie/guidelines.md

Large diffs are not rendered by default.

375 changes: 375 additions & 0 deletions AGENTS.md

Large diffs are not rendered by default.

292 changes: 120 additions & 172 deletions CLAUDE.md

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions app/Http/Controllers/CustomerLicenseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,13 @@ public function index(): View
// Get subscription plan name
$subscriptionName = null;
if ($activeSubscription) {
try {
$subscriptionName = \App\Enums\Subscription::fromStripePriceId($activeSubscription->stripe_price)->name();
} catch (\RuntimeException) {
if ($activeSubscription->stripe_price) {
try {
$subscriptionName = \App\Enums\Subscription::fromStripePriceId($activeSubscription->stripe_price)->name();
} catch (\RuntimeException) {
$subscriptionName = ucfirst($activeSubscription->type);
}
} else {
$subscriptionName = ucfirst($activeSubscription->type);
}
}
Expand Down
10 changes: 10 additions & 0 deletions boost.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"agents": [
"claude_code",
"copilot",
"cursor",
"opencode",
"phpstorm"
],
"guidelines": []
}
43 changes: 43 additions & 0 deletions database/migrations/2026_03_07_143318_seed_masterclass_product.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php

use App\Models\Product;
use App\Models\ProductPrice;
use Illuminate\Database\Migrations\Migration;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
$product = Product::create([
'name' => 'The NativePHP Masterclass',
'slug' => 'nativephp-masterclass',
'description' => 'Go from zero to published app. Learn to build native mobile and desktop applications using the PHP and Laravel skills you already have.',
'is_active' => true,
'published_at' => now(),
]);

ProductPrice::create([
'product_id' => $product->id,
'tier' => 'regular',
'amount' => 10100,
'currency' => 'USD',
'is_active' => true,
]);
}

/**
* Reverse the migrations.
*/
public function down(): void
{
$product = Product::where('slug', 'nativephp-masterclass')->first();

if ($product) {
$product->prices()->delete();
$product->delete();
}
}
};
11 changes: 11 additions & 0 deletions resources/views/components/footer.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,17 @@ class="inline-block px-px py-1.5 transition duration-300 will-change-transform h
Develop
</a>
</li>
<li>
<a
href="{{ route('course') }}"
class="inline-block px-px py-1.5 transition duration-300 will-change-transform hover:translate-x-1 hover:text-gray-700 dark:hover:text-gray-300"
>
<span class="inline-flex items-center gap-1.5">
Learn
<span class="rounded-full bg-emerald-500 px-1.5 py-px text-[10px] font-bold leading-tight text-white">New</span>
</span>
</a>
</li>
<li>
<a
href="{{ route('wall-of-love') }}"
Expand Down
2 changes: 1 addition & 1 deletion resources/views/components/layout.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
}"
x-resize="
width = $width
if (width >= 1024) {
if (width >= 1280) {
showMobileMenu = false
showDocsMenu = false
}
Expand Down
27 changes: 27 additions & 0 deletions resources/views/components/navbar/mobile-menu.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ class="@md:grid-cols-3 grid grid-cols-2 text-xl"
$isBlogActive = request()->routeIs('blog*');
$isPartnersActive = request()->routeIs('partners*');
$isServicesActive = request()->routeIs('build-my-app');
$isCourseActive = request()->routeIs('course');
$isSponsorActive = request()->routeIs('sponsoring*');
$isLoginActive = request()->routeIs('customer.login*');
@endphp
Expand Down Expand Up @@ -244,6 +245,32 @@ class="size-4 shrink-0"
</a>
</div>

{{-- Course Link --}}
<div>
<a
href="{{ route('course') }}"
@class([
'flex items-center gap-2 py-3 transition duration-200',
'font-medium' => $isCourseActive,
'opacity-50 hover:translate-x-1 hover:opacity-100' => ! $isCourseActive,
])
aria-current="{{ $isCourseActive ? 'page' : 'false' }}"
>
@if ($isCourseActive)
<x-icons.right-arrow
class="size-4 shrink-0"
aria-hidden="true"
focusable="false"
/>
@endif

<div class="inline-flex items-center gap-2">
Learn
<span class="rounded-full bg-emerald-500 px-1.5 py-px text-[10px] font-bold leading-tight text-white">New</span>
</div>
</a>
</div>

{{-- Login/Dashboard --}}
@feature(App\Features\ShowAuthButtons::class)
<div>
Expand Down
22 changes: 22 additions & 0 deletions resources/views/components/navigation-bar.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,28 @@ class="size-[3px] rotate-45 rounded-xs bg-gray-400 transition duration-200 dark:
Develop
</a>

{{-- Decorative circle --}}
<div
class="size-[3px] rotate-45 rounded-xs bg-gray-400 transition duration-200 dark:opacity-60"
aria-hidden="true"
></div>

{{-- Link --}}
<a
href="{{ route('course') }}"
@class([
'transition duration-200',
'font-medium' => request()->routeIs('course'),
'opacity-60 hover:opacity-100' => ! request()->routeIs('course'),
])
aria-current="{{ request()->routeIs('course') ? 'page' : 'false' }}"
>
<span class="inline-flex items-center gap-1.5">
Learn
<span class="rounded-full bg-emerald-500 px-1.5 py-px text-[10px] font-bold leading-tight text-white">New</span>
</span>
</a>

{{-- Login/Logout --}}
@feature(App\Features\ShowAuthButtons::class)
{{-- Decorative circle --}}
Expand Down
Loading