Skip to content
Open
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
15 changes: 14 additions & 1 deletion app/Http/Controllers/ProfileController.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,5 +209,18 @@ public function activity(Request $request): View
->paginate(20);

return view('profile.activity', compact('activity'));
}
}

public function getPfp(Request $request, string $username)
{
$user = User::whereRaw('LOWER(username) = ?', [strtolower($username)])->firstOrFail();

if ($user->avatar_path && Storage::disk('public')->exists($user->avatar_path)) {
return response()->file(Storage::disk('public')->path($user->avatar_path));
} else {
//return response()->file(public_path('images/default-avatar.png'));
//return response()->file(public_path('images/random-AI-cube.png'));
return response()->file(public_path('images/Gemini_Generated_Image_safk1csafk1csafk.png'));
}
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions resources/lang/en/lander.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,29 @@
'signup_btn' => 'Sign up now',
'learn_mtex_btn' => 'Learn about mtex.dev',
],

'whats_new' => [
'badge' => 'New Features',
'title' => 'What\'s New',
'subtitle' => 'We\'ve added powerful new features to make your profile even more customizable and accessible.',
'socials_title' => 'Extended Social Links',
'socials_description' => 'Connect all your platforms — from CodePen to Figma, we\'ve got you covered with 12+ new integrations.',
'pronouns_title' => 'Custom Pronouns',
'pronouns_description' => 'Select from preset pronouns or define your own. Express your identity your way on your profile.',
'routes_title' => 'Clean Profile Routes',
'routes_description' => 'Beautiful, memorable URLs for your profile, JSON export, and avatar image.',
],

'routes' => [
'section_title' => 'Clean URLs',
'title' => 'Beautiful Profile Routes',
'description' => 'Share your profile with clean, memorable URLs that are easy to remember and type.',
'profile_title' => 'Profile Page',
'profile_desc' => 'Your public profile at @username',
'json_title' => 'JSON Export',
'json_desc' => 'Get your profile data as JSON',
'pfp_title' => 'Avatar Image',
'pfp_desc' => 'Direct link to your profile picture',
'example_label' => 'Example',
],
];
2 changes: 2 additions & 0 deletions resources/views/pages/lander.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
<main class="bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100">
@include('pages.lander._hero')
@include('pages.lander._features')
@include('pages.lander._whats_new')
@include('pages.lander._api_showcase')
@include('pages.lander._routes_showcase')
@include('pages.lander._stats', $stats_data)
@include('pages.lander._cta_banner')
</main>
Expand Down
89 changes: 89 additions & 0 deletions resources/views/pages/lander/_routes_showcase.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
<section class="py-24 sm:py-32 bg-gray-50 dark:bg-gray-900">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto grid max-w-2xl grid-cols-1 gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-2 lg:items-center">

{{-- Content --}}
<div class="lg:order-2 lg:pl-8">
<h2 class="text-base font-semibold leading-7 text-getmyname-600 dark:text-getmyname-400">
{{ __('lander.routes.section_title') }}
</h2>
<p class="mt-2 text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl">
{{ __('lander.routes.title') }}
</p>
<p class="mt-6 text-lg leading-8 text-gray-600 dark:text-gray-400">
{{ __('lander.routes.description') }}
</p>

<dl class="mt-10 max-w-xl space-y-6 text-base leading-7 text-gray-700 dark:text-gray-300 lg:max-w-none">
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900 dark:text-gray-100">
<i class="bi bi-check-circle-fill absolute left-0 top-1 h-5 w-5 text-getmyname-600"></i>
{{ __('lander.routes.profile_title') }}
</dt>
<dd class="inline ml-1">
— {{ __('lander.routes.profile_desc') }}
</dd>
</div>
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900 dark:text-gray-100">
<i class="bi bi-check-circle-fill absolute left-0 top-1 h-5 w-5 text-getmyname-600"></i>
{{ __('lander.routes.json_title') }}
</dt>
<dd class="inline ml-1">
— {{ __('lander.routes.json_desc') }}
</dd>
</div>
<div class="relative pl-9">
<dt class="inline font-semibold text-gray-900 dark:text-gray-100">
<i class="bi bi-check-circle-fill absolute left-0 top-1 h-5 w-5 text-getmyname-600"></i>
{{ __('lander.routes.pfp_title') }}
</dt>
<dd class="inline ml-1">
— {{ __('lander.routes.pfp_desc') }}
</dd>
</div>
</dl>
</div>

{{-- Code Preview --}}
<div class="lg:order-1">
<div class="rounded-xl bg-white dark:bg-gray-800 p-6 shadow-lg ring-1 ring-gray-200 dark:ring-gray-700">
<div class="flex items-center justify-between mb-4">
<div class="flex items-center space-x-2">
<div class="h-3 w-3 rounded-full bg-red-500"></div>
<div class="h-3 w-3 rounded-full bg-yellow-400"></div>
<div class="h-3 w-3 rounded-full bg-green-500"></div>
</div>
<span class="text-xs text-gray-500 dark:text-gray-400 font-mono">routes/web.php</span>
</div>
<pre class="text-sm overflow-x-auto text-gray-800 dark:text-gray-200"><code class="language-php"><span class="text-gray-500">// Profile routes</span>
<span class="text-purple-600 dark:text-purple-400">Route</span>::<span class="text-blue-600 dark:text-blue-400">get</span>(<span class="text-green-600 dark:text-green-400">'@{username}'</span>, [<span class="text-purple-600 dark:text-purple-400">ProfileController</span>::<span class="text-blue-600 dark:text-blue-400">class</span>, <span class="text-green-600 dark:text-green-400">'show'</span>]);
<span class="text-purple-600 dark:text-purple-400">Route</span>::<span class="text-blue-600 dark:text-blue-400">get</span>(<span class="text-green-600 dark:text-green-400">'@{username}/json'</span>, [<span class="text-purple-600 dark:text-purple-400">ProfileController</span>::<span class="text-blue-600 dark:text-blue-400">class</span>, <span class="text-green-600 dark:text-green-400">'json'</span>]);

<span class="text-gray-500">// Avatar routes</span>
<span class="text-purple-600 dark:text-purple-400">Route</span>::<span class="text-blue-600 dark:text-blue-400">get</span>(<span class="text-green-600 dark:text-green-400">'/{username}.png'</span>, [<span class="text-purple-600 dark:text-purple-400">AvatarController</span>::<span class="text-blue-600 dark:text-blue-400">class</span>, <span class="text-green-600 dark:text-green-400">'show'</span>]);
<span class="text-purple-600 dark:text-purple-400">Route</span>::<span class="text-blue-600 dark:text-blue-400">get</span>(<span class="text-green-600 dark:text-green-400">'@{username}/pfp'</span>, [<span class="text-purple-600 dark:text-purple-400">AvatarController</span>::<span class="text-blue-600 dark:text-blue-400">class</span>, <span class="text-green-600 dark:text-green-400">'show'</span>]);</code></pre>
</div>

{{-- Example URLs --}}
<div class="mt-6 grid grid-cols-1 sm:grid-cols-2 gap-3">
<div class="flex items-center gap-3 rounded-lg bg-white dark:bg-gray-800 px-4 py-3 shadow-sm ring-1 ring-gray-200 dark:ring-gray-700">
<i class="bi bi-person-circle text-getmyname-600 dark:text-getmyname-400 text-xl"></i>
<div>
<p class="text-xs text-gray-500 dark:text-gray-400">{{ __('lander.routes.example_label') }}</p>
<code class="text-sm font-medium text-gray-900 dark:text-gray-100">getmy.name/@janedoe</code>
</div>
</div>
<div class="flex items-center gap-3 rounded-lg bg-white dark:bg-gray-800 px-4 py-3 shadow-sm ring-1 ring-gray-200 dark:ring-gray-700">
<i class="bi bi-filetype-json text-getmyname-600 dark:text-getmyname-400 text-xl"></i>
<div>
<p class="text-xs text-gray-500 dark:text-gray-400">{{ __('lander.routes.example_label') }}</p>
<code class="text-sm font-medium text-gray-900 dark:text-gray-100">getmy.name/@janedoe/json</code>
</div>
</div>
</div>
</div>

</div>
</div>
</section>
124 changes: 124 additions & 0 deletions resources/views/pages/lander/_whats_new.blade.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<section class="py-24 sm:py-32 bg-white dark:bg-gray-800">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<div class="mx-auto max-w-2xl lg:text-center">
<span class="inline-flex items-center rounded-full bg-getmyname-100 dark:bg-getmyname-900/30 px-4 py-1.5 text-sm font-medium text-getmyname-700 dark:text-getmyname-300 ring-1 ring-inset ring-getmyname-600/20">
<i class="bi bi-stars mr-2"></i>
{{ __('lander.whats_new.badge') }}
</span>
<h2 class="mt-6 text-3xl font-bold tracking-tight text-gray-900 dark:text-gray-100 sm:text-4xl">
{{ __('lander.whats_new.title') }}
</h2>
<p class="mt-4 text-lg leading-8 text-gray-600 dark:text-gray-400">
{{ __('lander.whats_new.subtitle') }}
</p>
</div>

<div class="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none">
<dl class="grid max-w-xl grid-cols-1 gap-x-8 gap-y-10 lg:max-w-none lg:grid-cols-3 lg:gap-y-16">

{{-- New Social Links --}}
<div class="relative pl-16">
<dt class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
<div class="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-getmyname-600">
<i class="bi bi-share-fill text-white text-xl"></i>
</div>
{{ __('lander.whats_new.socials_title') }}
</dt>
<dd class="mt-2 text-base leading-7 text-gray-600 dark:text-gray-400">
{{ __('lander.whats_new.socials_description') }}
</dd>
<div class="mt-4 flex flex-wrap gap-2">
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-codepen mr-1"></i> CodePen
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-instagram mr-1"></i> Instagram
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-youtube mr-1"></i> YouTube
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-stack-overflow mr-1"></i> StackOverflow
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-file-code mr-1"></i> dev.to
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-hash mr-1"></i> Hashnode
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-npm mr-1"></i> npm
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-box mr-1"></i> Product Hunt
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-people mr-1"></i> Polywork
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-git mr-1"></i> GitLab
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-brush mr-1"></i> Dribbble
</span>
<span class="inline-flex items-center rounded-md bg-gray-100 dark:bg-gray-700 px-2 py-1 text-xs font-medium text-gray-600 dark:text-gray-300">
<i class="bi bi-palette mr-1"></i> Figma
</span>
</div>
</div>

{{-- Pronouns --}}
<div class="relative pl-16">
<dt class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
<div class="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-getmyname-600">
<i class="bi bi-person-heart text-white text-xl"></i>
</div>
{{ __('lander.whats_new.pronouns_title') }}
</dt>
<dd class="mt-2 text-base leading-7 text-gray-600 dark:text-gray-400">
{{ __('lander.whats_new.pronouns_description') }}
</dd>
<div class="mt-4 flex flex-wrap gap-2">
<span class="inline-flex items-center rounded-full bg-getmyname-50 dark:bg-getmyname-900/30 px-3 py-1 text-sm text-getmyname-700 dark:text-getmyname-300">
she/her
</span>
<span class="inline-flex items-center rounded-full bg-getmyname-50 dark:bg-getmyname-900/30 px-3 py-1 text-sm text-getmyname-700 dark:text-getmyname-300">
he/him
</span>
<span class="inline-flex items-center rounded-full bg-getmyname-50 dark:bg-getmyname-900/30 px-3 py-1 text-sm text-getmyname-700 dark:text-getmyname-300">
they/them
</span>
<span class="inline-flex items-center rounded-full bg-gray-100 dark:bg-gray-700 px-3 py-1 text-sm text-gray-600 dark:text-gray-300 ring-1 ring-inset ring-gray-200 dark:ring-gray-600">
custom...
</span>
</div>
</div>

{{-- Profile Routes --}}
<div class="relative pl-16">
<dt class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
<div class="absolute left-0 top-0 flex h-10 w-10 items-center justify-center rounded-lg bg-getmyname-600">
<i class="bi bi-link-45deg text-white text-xl"></i>
</div>
{{ __('lander.whats_new.routes_title') }}
</dt>
<dd class="mt-2 text-base leading-7 text-gray-600 dark:text-gray-400">
{{ __('lander.whats_new.routes_description') }}
</dd>
<div class="mt-4 space-y-2">
<code class="block rounded bg-gray-100 dark:bg-gray-700 px-3 py-1.5 text-sm text-gray-800 dark:text-gray-200">
@{username}
</code>
<code class="block rounded bg-gray-100 dark:bg-gray-700 px-3 py-1.5 text-sm text-gray-800 dark:text-gray-200">
@{username}/json
</code>
<code class="block rounded bg-gray-100 dark:bg-gray-700 px-3 py-1.5 text-sm text-gray-800 dark:text-gray-200">
/{username}.png
</code>
</div>
</div>

</dl>
</div>
</div>
</section>
Loading