Add Filament admin panel and creative public portfolio site

Adds a Filament admin (Profile settings page plus CRUD resources for
Education, Experience, Projects, and Posts) backing a public-facing
personal site: hero/about/timeline home page, project showcase, and
blog, styled with a dark editorial theme (Fraunces + Instrument Sans).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
m105
2026-07-30 21:10:43 +03:00
co-authored by Claude Sonnet 5
parent ac61c77608
commit 8d97dcbd0f
62 changed files with 5933 additions and 237 deletions
+77 -4
View File
@@ -2,6 +2,11 @@
namespace Database\Seeders;
use App\Models\Education;
use App\Models\Experience;
use App\Models\Post;
use App\Models\Profile;
use App\Models\Project;
use App\Models\User;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
@@ -15,11 +20,79 @@ class DatabaseSeeder extends Seeder
*/
public function run(): void
{
// User::factory(10)->create();
User::firstOrCreate(
['email' => 'admin@mikeisdeving.test'],
['name' => 'Mike', 'password' => bcrypt('password')],
);
User::factory()->create([
'name' => 'Test User',
'email' => 'test@example.com',
Profile::query()->firstOrCreate([], [
'name' => 'Mike',
'headline' => 'Backend developer & tinkerer',
'bio' => '<p>I build web apps and occasionally write about it. This is a placeholder bio — edit it from the admin panel.</p>',
'location' => 'Somewhere, Earth',
'email' => 'hello@mikeisdeving.test',
'social_links' => [
'github' => 'https://github.com/',
'linkedin' => 'https://linkedin.com/',
],
]);
if (Experience::query()->count() === 0) {
Experience::create([
'company' => 'Acme Corp',
'role' => 'Senior Developer',
'location' => 'Remote',
'start_date' => '2023-01-01',
'is_current' => true,
'description' => 'Working on backend systems and internal tooling.',
'sort_order' => 0,
]);
Experience::create([
'company' => 'Startup Inc',
'role' => 'Software Developer',
'location' => 'Remote',
'start_date' => '2020-06-01',
'end_date' => '2022-12-01',
'description' => 'Built and maintained a SaaS product from early stage to scale.',
'sort_order' => 1,
]);
}
if (Education::query()->count() === 0) {
Education::create([
'institution' => 'State University',
'degree' => 'B.Sc.',
'field_of_study' => 'Computer Science',
'start_date' => '2016-09-01',
'end_date' => '2020-06-01',
'sort_order' => 0,
]);
}
if (Project::query()->count() === 0) {
Project::create([
'title' => 'Sample Project',
'slug' => 'sample-project',
'summary' => 'A short description of what this project does.',
'description' => '<p>Longer write-up of the project, the problem it solves, and how it was built.</p>',
'url' => 'https://example.com',
'repository_url' => 'https://github.com/example/example',
'tech_stack' => ['Laravel', 'PHP', 'Tailwind'],
'is_featured' => true,
'sort_order' => 0,
]);
}
if (Post::query()->count() === 0) {
Post::create([
'title' => 'Hello, world',
'slug' => 'hello-world',
'excerpt' => 'The first post on this blog.',
'body' => '<p>This is a placeholder post. Edit or delete it from the admin panel.</p>',
'tags' => ['meta'],
'published_at' => now(),
]);
}
}
}