Skip to content

Commit 21ed01b

Browse files
simonhampclaude
andauthored
Transform /build-my-app into /consulting page (#353)
* Transform /build-my-app into /consulting page Replace the build-my-app page with a consulting page featuring the NativePHP core team (Simon Hamp & Shane Rosenthal). Adds team bios with headshots and social links, service offerings, engagement model, agency partners section, and smooth-scrolling anchor navigation. - Add 301 redirect from /build-my-app to /consulting - Remove budget field from lead submission form and make DB column nullable - Update navigation (desktop pill, mobile menu, footer) - Update lead notifications for consulting context - Add team headshot images - Update tests for new routing and removed budget field Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add New badge to Consulting nav links and hide from desktop menu Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f99ad75 commit 21ed01b

15 files changed

Lines changed: 617 additions & 110 deletions

app/Livewire/LeadSubmissionForm.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ class LeadSubmissionForm extends Component
2121

2222
public string $description = '';
2323

24-
public string $budget = '';
25-
2624
public string $turnstileToken = '';
2725

2826
#[Locked]
@@ -35,7 +33,6 @@ protected function rules(): array
3533
'email' => ['required', 'email', 'max:255'],
3634
'company' => ['required', 'string', 'max:255'],
3735
'description' => ['required', 'string', 'max:5000'],
38-
'budget' => ['required', 'string', 'in:'.implode(',', array_keys(Lead::BUDGETS))],
3936
];
4037

4138
if (config('services.turnstile.secret_key')) {
@@ -48,7 +45,6 @@ protected function rules(): array
4845
public function messages(): array
4946
{
5047
return [
51-
'budget.in' => 'Please select a budget range.',
5248
'turnstileToken.required' => 'Please complete the security check.',
5349
];
5450
}
@@ -73,7 +69,6 @@ public function submit(): void
7369
'email' => $this->email,
7470
'company' => $this->company,
7571
'description' => $this->description,
76-
'budget' => $this->budget,
7772
'ip_address' => request()->ip(),
7873
]);
7974

@@ -87,8 +82,6 @@ public function submit(): void
8782

8883
public function render()
8984
{
90-
return view('livewire.lead-submission-form', [
91-
'budgets' => Lead::BUDGETS,
92-
]);
85+
return view('livewire.lead-submission-form');
9386
}
9487
}

app/Notifications/LeadReceived.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ public function toMail(object $notifiable): MailMessage
2121
return (new MailMessage)
2222
->subject('Thank you for your enquiry')
2323
->greeting("Hi {$notifiable->name},")
24-
->line('Thank you for reaching out to NativePHP about your app development project.')
25-
->line('We have received your enquiry and one of our team members will be in touch soon to discuss your requirements.')
24+
->line('Thank you for reaching out to NativePHP about consulting.')
25+
->line('We have received your enquiry and one of our team will be in touch soon to discuss your project.')
2626
->line('In the meantime, feel free to explore our documentation or join our Discord community.')
2727
->action('Visit NativePHP', url('/'))
2828
->salutation('Best regards,<br>The NativePHP Team');

app/Notifications/NewLeadSubmitted.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ public function via(object $notifiable): array
2424
public function toMail(object $notifiable): MailMessage
2525
{
2626
return (new MailMessage)
27-
->subject('New Build My App Enquiry: '.$this->lead->company)
27+
->subject('New Consulting Enquiry: '.$this->lead->company)
2828
->replyTo($this->lead->email, $this->lead->name)
2929
->greeting('New lead received!')
3030
->line("**Name:** {$this->lead->name}")
3131
->line("**Email:** {$this->lead->email}")
3232
->line("**Company:** {$this->lead->company}")
33-
->line("**Budget:** {$this->lead->budget_label}")
33+
->when($this->lead->budget, fn (MailMessage $message) => $message->line("**Budget:** {$this->lead->budget_label}"))
3434
->line('**Project Description:**')
3535
->line($this->lead->description);
3636
}

database/factories/LeadFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function definition(): array
2222
'email' => fake()->safeEmail(),
2323
'company' => fake()->company(),
2424
'description' => fake()->paragraphs(2, true),
25-
'budget' => fake()->randomElement(array_keys(Lead::BUDGETS)),
25+
'budget' => fake()->optional()->randomElement(array_keys(Lead::BUDGETS)),
2626
'ip_address' => fake()->ipv4(),
2727
];
2828
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
use Illuminate\Database\Migrations\Migration;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Support\Facades\Schema;
6+
7+
return new class extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*/
12+
public function up(): void
13+
{
14+
Schema::table('leads', function (Blueprint $table) {
15+
$table->string('budget')->nullable()->change();
16+
});
17+
}
18+
19+
public function down(): void
20+
{
21+
Schema::table('leads', function (Blueprint $table) {
22+
$table->string('budget')->nullable(false)->change();
23+
});
24+
}
25+
};

public/img/team/shanerosenthal.jpg

20 KB
Loading

public/img/team/simonhamp.jpg

26.1 KB
Loading

resources/views/build-my-app.blade.php

Lines changed: 0 additions & 30 deletions
This file was deleted.

resources/views/components/footer.blade.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,13 @@ class="inline-block px-px py-1.5 transition duration-300 will-change-transform h
244244
</li>
245245
<li>
246246
<a
247-
href="{{ route('build-my-app') }}"
247+
href="{{ route('consulting') }}"
248248
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"
249249
>
250-
Develop
250+
<span class="inline-flex items-center gap-1.5">
251+
Consulting
252+
<span class="rounded-full bg-emerald-500 px-1.5 py-px text-[10px] font-bold leading-tight text-white">New</span>
253+
</span>
251254
</a>
252255
</li>
253256
<li>

resources/views/components/navbar/mobile-menu.blade.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class="@md:grid-cols-3 grid grid-cols-2 text-xl"
9696
$isUltraActive = request()->routeIs('pricing');
9797
$isBlogActive = request()->routeIs('blog*');
9898
$isPartnersActive = request()->routeIs('partners*');
99-
$isServicesActive = request()->routeIs('build-my-app');
99+
$isServicesActive = request()->routeIs('consulting');
100100
$isCourseActive = request()->routeIs('course');
101101
$isSupportActive = request()->routeIs('support.*');
102102
$isSponsorActive = request()->routeIs('sponsoring*');
@@ -231,10 +231,10 @@ class="size-4 shrink-0"
231231
</a>
232232
</div>
233233

234-
{{-- Services Link --}}
235-
<div>
234+
{{-- Consulting Link (mobile only, shown in navbar on desktop) --}}
235+
<div class="lg:hidden">
236236
<a
237-
href="{{ route('build-my-app') }}"
237+
href="{{ route('consulting') }}"
238238
@class([
239239
'flex items-center gap-2 py-3 transition duration-200',
240240
'font-medium' => $isServicesActive,
@@ -250,7 +250,10 @@ class="size-4 shrink-0"
250250
/>
251251
@endif
252252

253-
<div>Develop</div>
253+
<div class="inline-flex items-center gap-2">
254+
Consulting
255+
<span class="rounded-full bg-emerald-500 px-1.5 py-px text-[10px] font-bold leading-tight text-white">New</span>
256+
</div>
254257
</a>
255258
</div>
256259

0 commit comments

Comments
 (0)