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
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ yarn-error.log

/demo-runner

/resources/json-database/*
!/resources/json-database/references.json
/resources/json-database/rector_runs.json

/.env

Expand Down
20 changes: 20 additions & 0 deletions resources/json-database/upcoming_talks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"title": "Mastering Automated Refactoring with custom Rector rules - Dave Liddament",
"date": "2025-05-20",
"location": "Chicago, Illinois, USA",
"url": "https://phptek.io/schedule"
},
{
"title": "Intro to Automated Refactoring with RectorPHP - Chris Abbey",
"date": "2025-05-22",
"location": "Chicago, Illinois, USA",
"url": "https://phptek.io/schedule"
},
{
"title": "Advanced Rector Shenanigans - Chris Abbey",
"date": "2025-05-22",
"location": "Chicago, Illinois, USA",
"url": "https://phptek.io/schedule"
}
]
18 changes: 18 additions & 0 deletions resources/views/homepage/_parts/posts.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<h3>Featured Posts</h3>

@foreach ($recentPosts as $recentPost)
@php /** @var \App\Entity\Post $recentPost */ @endphp

<a href="{{ action(\App\Controller\Blog\PostController::class, ['postSlug' => $recentPost->getSlug() ]) }}">
<li style="list-style: none; font-size: 1.25em; line-height: 1.9em">
<div class="d-flex" style="justify-content: space-between">
{{ $recentPost->getTitle() }}

<div style="width:5em; justify-content: space-between; white-space: nowrap; color:#BBB;">
{{ $recentPost->getDateTime()->format('M j, Y') }}
</div>
</div>
</li>

</a>
@endforeach
20 changes: 20 additions & 0 deletions resources/views/homepage/_parts/upcoming_talks.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<h3>Upcoming Talks</h3>

@foreach ($upcomingTalks as $upcomingTalk)
<a href="{{ $upcomingTalk['url'] }}">
<li style="list-style: none; font-size: 1.25em; line-height: 1.9em" class="mb-4">
<div class="d-flex" style="justify-content: space-between">
{{ $upcomingTalk['title'] }}<br>

<div style="width:5em; justify-content: space-between; white-space: nowrap; color:#BBB;">
{{ date("M j, Y", strtotime($upcomingTalk['date'])) }}
</div>
</div>

<div style="color:#BBB; font-size: 0.9em">
{{ $upcomingTalk['location'] }}
</div>
</li>

</a>
@endforeach
83 changes: 41 additions & 42 deletions resources/views/homepage/homepage.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
</h1>

<div class="text-bigger text-center">
<p>We help successful and growing companies to get the most out of the code they already have.</p>
<p>We help successful and growing companies to get the most out of the code they
already have.</p>

<p>
<strong>Reduce maintenance cost</strong>, <strong>make feature delivery
Expand All @@ -37,48 +38,60 @@ class="btn btn-primary">Try It Online</a>
<h3 class="mt-5 mb-5 text-center">Trusted by engineers at</h3>

<div id="company_logos" class="mt-3 mb-5 text-center">
<img src="assets/images/logo/logo_bigger/curve.svg" alt="Curve logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/i6.png" alt="i6 logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/gotphoto.png" alt="GotPhoto logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/ares_travel.svg" alt="Ares Travel logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/media_trust.png" alt="Media Trust logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/spaceflow.png" alt="Spaceflow logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/eonx.png" alt="EONX logo" class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2 p-3">
<img src="assets/images/logo/logo_bigger/curve.svg" alt="Curve logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/i6.png" alt="i6 logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/gotphoto.png" alt="GotPhoto logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/ares_travel.svg" alt="Ares Travel logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/media_trust.png" alt="Media Trust logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/spaceflow.png" alt="Spaceflow logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2">
<img src="assets/images/logo/logo_bigger/eonx.png" alt="EONX logo"
class="img-fluid pt-4 pb-4 pb-sm-2 pt-sm-2 p-3">
</div>
</div>
</div>

<div class="container mobile-margin-top">
<div id="homepage">
<h2>
How does Rector <span class="text-rector-green">Improve&nbsp;your&nbsp;Business</span>?
How does Rector <span
class="text-rector-green">Improve&nbsp;your&nbsp;Business</span>?
</h2>

<div class="text-medium">
<p>
Rector is a PHP tool that you can run on any PHP project to get an instant upgrade
Rector is a PHP tool that you can run on any PHP project to get an instant
upgrade
or automated refactoring.
</p>

<p>
It helps you with:

<ul>
<li>PHP and framework upgrades,</li>
<li>in-house framework migrations,</li>
<li>improving your code quality to deliver features faster than competition</li>
</ul>
<ul>
<li>PHP and framework upgrades,</li>
<li>in-house framework migrations,</li>
<li>improving your code quality to deliver features faster than competition</li>
</ul>
</p>

<p>
In the hands of an expert, Rector massively reduces your work-time.<br>
Where project upgrade PHP 8.0 to 8.4 would <strong>take 3 months</strong>, <strong>Rector is done in 3 days</strong>.
Where project upgrade PHP 8.0 to 8.4 would <strong>take 3 months</strong>,
<strong>Rector is done in 3 days</strong>.
</p>

<p>
You can learn it yourself from <a href="{{ action(\App\Controller\DocumentationController::class) }}">documentation</a>,
You can learn it yourself from <a
href="{{ action(\App\Controller\DocumentationController::class) }}">documentation</a>,
or to save time and start upgrading today,
<strong><a href="{{ action(\App\Controller\HireTeamController::class) }}">hire our upgrade team</a></strong>.
<strong><a href="{{ action(\App\Controller\HireTeamController::class) }}">hire
our upgrade team</a></strong>.
</p>
</div>

Expand All @@ -104,42 +117,28 @@ class="img-fluid img-thumbnail">
90% of problems you'll face are&nbsp;new to you.
</p>
<p>
We've already seen them and&nbsp;know exactly how to solve them cost-effectively
We've already seen them and&nbsp;know exactly how to solve them
cost-effectively
and quickly.
</p>

<p>
How does typical <a href="{{ action(\App\Controller\CodebaseRenovationController::class) }} ">codebase renovation</a> look like?
How does typical <a
href="{{ action(\App\Controller\CodebaseRenovationController::class) }} ">codebase
renovation</a> look like?
</p>
</div>
</div>
</div>

<!--
@todo they write about us
* post
* rector talk at laracon https://www.youtube.com/watch?v=qGrsvcWdERc&ab_channel=LaraconEU
-->

@include('_snippets/homepage_separator')

<h3>Featured</h3>
@foreach ($recentPosts as $recentPost)
@php /** @var \App\Entity\Post $recentPost */ @endphp

<a href="{{ action(\App\Controller\Blog\PostController::class, ['postSlug' => $recentPost->getSlug() ]) }}">
<li style="list-style: none; font-size: 1.25em; line-height: 1.9em">
<div class="d-flex" style="justify-content: space-between">
{{ $recentPost->getTitle() }}

<div style="width:5em; justify-content: space-between; white-space: nowrap; color:#BBB;">
{{ $recentPost->getDateTime()->format('M j, Y') }}
</div>
</div>
</li>
@if (count($upcomingTalks) > 0)
@include('homepage/_parts/upcoming_talks')
@include('_snippets/homepage_separator')
@endif

</a>
@endforeach
@include('homepage/_parts/posts')

@include('_snippets/homepage_separator')

Expand Down
16 changes: 14 additions & 2 deletions src/Controller/HomepageController.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public function __invoke(): View
'recentPosts' => $this->postRepository->fetchLast(5),

'references' => $this->loadReferences(),
'upcomingTalks' => $this->loadUpcomingTalks(),

// seo
'metaTitle' => 'Rector: Fast PHP Code Upgrades & Refactoring',
Expand All @@ -36,8 +37,19 @@ public function __invoke(): View
*/
private function loadReferences(): array
{
$referencesFileContents = FileSystem::read(__DIR__ . '/../../resources/json-database/references.json');
$fileContents = FileSystem::read(__DIR__ . '/../../resources/json-database/references.json');
return Json::decode($fileContents, forceArrays: true);
}

/**
* @return mixed[]
*/
private function loadUpcomingTalks(): array
{
$fileContents = FileSystem::read(__DIR__ . '/../../resources/json-database/upcoming_talks.json');
$upcomingTalks = Json::decode($fileContents, forceArrays: true);

return Json::decode($referencesFileContents, forceArrays: true);
// remove past talks
return array_filter($upcomingTalks, static fn (array $talk): bool => $talk['date'] > date('Y-m-d'));
}
}