Skip to content

Commit 7a749dc

Browse files
committed
setup ui
1 parent e2abe1c commit 7a749dc

File tree

11 files changed

+295
-8
lines changed

11 files changed

+295
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ yarn-error.log
1717
/.fleet
1818
/.idea
1919
/.vscode
20+
21+
storage/repositories

app/Livewire/CreateRepository.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace App\Livewire;
4+
5+
use App\Models\Repository;
6+
use CzProject\GitPhp\Git;
7+
use Illuminate\Support\Facades\Auth;
8+
use Livewire\Attributes\Validate;
9+
use Livewire\Component;
10+
11+
class CreateRepository extends Component
12+
{
13+
#[Validate('required')]
14+
public $title = '';
15+
16+
public function render()
17+
{
18+
return view('livewire.create-repository')->extends('layouts.app');
19+
}
20+
21+
public function create()
22+
{
23+
$this->validate();
24+
25+
$repository = new Repository();
26+
$repository->title = $this->title;
27+
$repository->user_id = Auth::id();
28+
$repository->save();
29+
30+
$git = new Git();
31+
32+
$git->init(storage_path('repositories/' . $this->title));
33+
34+
$this->redirect(route('home'), navigate: true);
35+
}
36+
}

app/Livewire/Repositories.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace App\Livewire;
4+
5+
use App\Models\Repository;
6+
use Livewire\Attributes\Computed;
7+
use Livewire\Component;
8+
9+
class Repositories extends Component
10+
{
11+
public function render()
12+
{
13+
return view('livewire.repositories')->extends('layouts.app');;
14+
}
15+
16+
#[Computed()]
17+
public function repositories()
18+
{
19+
return Repository::all();
20+
}
21+
22+
public function create()
23+
{
24+
return $this->redirect(route('repositories.create'), navigate: true);
25+
}
26+
}

app/Models/Repository.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace App\Models;
4+
5+
use Illuminate\Database\Eloquent\Factories\HasFactory;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
class Repository extends Model
9+
{
10+
use HasFactory;
11+
12+
protected $fillable = [
13+
'title',
14+
'user_id',
15+
];
16+
}

composer.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"license": "MIT",
77
"require": {
88
"php": "^8.1",
9+
"blade-ui-kit/blade-icons": "^1.5",
10+
"czproject/git-php": "^4.2",
911
"guzzlehttp/guzzle": "^7.2",
1012
"laravel-frontend-presets/tall": "^7.0",
1113
"laravel/framework": "^10.10",

composer.lock

Lines changed: 134 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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::create('repositories', function (Blueprint $table) {
15+
$table->id();
16+
$table->string('title');
17+
$table->foreignId('user_id')->constrained();
18+
$table->timestamps();
19+
});
20+
}
21+
22+
/**
23+
* Reverse the migrations.
24+
*/
25+
public function down(): void
26+
{
27+
Schema::dropIfExists('repositories');
28+
}
29+
};

resources/views/layouts/app.blade.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
@extends('layouts.base')
22

33
@section('body')
4-
@yield('content')
5-
6-
@isset($slot)
7-
{{ $slot }}
8-
@endisset
4+
<div class="flex flex-col min-h-screen py-12 bg-gray-100 sm:px-6 lg:px-8">
5+
@yield('content')
6+
7+
@isset($slot)
8+
{{ $slot }}
9+
@endisset
10+
</div>
911
@endsection
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<div class="bg-white w-full p-5">
2+
<form wire:submit='create'>
3+
<h1 class="mb-2">Criar novo repositório</h1>
4+
<div class="mb-2">
5+
<label for="title" class="block text-sm font-medium text-gray-700 leading-5">
6+
Titulo do repositório
7+
</label>
8+
9+
<div class="mt-1 rounded-md shadow-sm">
10+
<input wire:model="title" id="title" name="title" type="text" required autofocus class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md placeholder-gray-400 focus:outline-none focus:ring-blue focus:border-blue-300 transition duration-150 ease-in-out sm:text-sm sm:leading-5 @error('email') border-red-300 text-red-900 placeholder-red-300 focus:border-red-300 focus:ring-red @enderror" />
11+
</div>
12+
13+
@error('title')
14+
<p class="mt-2 text-sm text-red-600">{{ $message }}</p>
15+
@enderror
16+
</div>
17+
<div class="flex justify-end">
18+
<button type="submit" class="flex justify-center px-4 py-2 text-sm font-medium text-white bg-indigo-600 border border-transparent rounded-md hover:bg-indigo-500 focus:outline-none focus:border-indigo-700 focus:ring-indigo active:bg-indigo-700 transition duration-150 ease-in-out">
19+
Criar
20+
</button>
21+
</div>
22+
</form>
23+
</div>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<div class="bg-white w-full p-5">
2+
<div class="flex justify-between items-center mb-5">
3+
<h1>Repositorios</h1>
4+
<button wire:click='create' type="button" class="flex justify-center px-4 py-2 text-sm font-medium text-white bg-indigo-600 border border-transparent rounded-md hover:bg-indigo-500 focus:outline-none focus:border-indigo-700 focus:ring-indigo active:bg-indigo-700 transition duration-150 ease-in-out">
5+
Criar novo repositorio
6+
</button>
7+
</div>
8+
@foreach ($this->repositories as $repository)
9+
<div class="flex justify-between bg-gray-100 mb-3 p-3">
10+
<span>
11+
{{ $repository->title }}
12+
</span>
13+
</div>
14+
@endforeach
15+
</div>

routes/web.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
use App\Livewire\Auth\Passwords\Reset;
99
use App\Livewire\Auth\Register;
1010
use App\Livewire\Auth\Verify;
11+
use App\Livewire\CreateRepository;
12+
use App\Livewire\Repositories;
1113
use Illuminate\Support\Facades\Route;
1214

1315
/*
@@ -21,8 +23,6 @@
2123
|
2224
*/
2325

24-
Route::view('/', 'welcome')->name('home');
25-
2626
Route::middleware('guest')->group(function () {
2727
Route::get('login', Login::class)
2828
->name('login');
@@ -53,4 +53,7 @@
5353

5454
Route::post('logout', LogoutController::class)
5555
->name('logout');
56+
57+
Route::get('/', Repositories::class)->name('home');
58+
Route::get('/create', CreateRepository::class)->name('repositories.create');
5659
});

0 commit comments

Comments
 (0)