Compare commits

25 Commits

Author SHA1 Message Date
f79b2ec8a9 Update .dockerignore and month highscore 2021-12-30 17:34:54 +01:00
16a5c49e1d Fix history query 2021-12-27 12:10:32 +01:00
2d23f5da59 Dashboard history 2021-12-27 11:59:50 +01:00
34d44011bd Add favicon 2021-12-27 11:16:10 +01:00
6a7e7d553f Fix mariadb count bug 2021-12-26 21:33:10 +01:00
5a5a6740c6 Update highscores view, add prices 2021-12-26 21:07:32 +01:00
a3a8dfcf51 Set session lifetime to 1 year 2021-12-26 19:13:55 +01:00
33203f7f10 update main page 2021-12-26 19:00:00 +01:00
1343fdc19f Update register interface 2021-12-26 18:42:55 +01:00
ca777b18e8 Update login interface 2021-12-26 18:33:37 +01:00
3b61a5d7a8 Add highscores, faq and credits 2021-12-26 18:05:58 +01:00
7629e8bfce Fix increment 2021-12-26 12:25:30 +01:00
0ff2eeb12d Update AppServiceProvider 2021-12-25 11:37:08 +01:00
ea545ed104 Force https urls in production 2021-12-25 11:28:59 +01:00
65b65e9a74 Fix migration with big increments 2021-12-25 11:12:19 +01:00
c5fdac0c97 Fix indentation 2021-12-25 01:37:39 +01:00
435d06cca5 Add mysql 2021-12-25 01:36:19 +01:00
5408e25c90 Fix docker-compose 2021-12-25 01:11:41 +01:00
dde03b1945 Add docker-compose env 2021-12-25 01:09:50 +01:00
9cff1f494d Fix docker-compose networks 2021-12-25 01:04:52 +01:00
68b5e5030d Update docker-compose 2021-12-25 01:04:18 +01:00
e881c73911 Shit increment threshold 2021-12-25 00:54:44 +01:00
f49409398a Add own stats site 2021-12-25 00:37:56 +01:00
73933d56b4 Add bootstrap 5 layout 2021-12-24 22:32:53 +01:00
010bd74b7b Update shit-show 2021-09-16 17:51:59 +02:00
28 changed files with 227506 additions and 258 deletions

View File

@@ -13,3 +13,5 @@ storage/framework/testing/*
storage/framework/views/* storage/framework/views/*
storage/logs/* storage/logs/*
vendor/ vendor/
mariadb-data

View File

@@ -13,3 +13,4 @@ npm-debug.log
yarn-error.log yarn-error.log
/.idea /.idea
/.vscode /.vscode
mariadb-data

View File

@@ -3,12 +3,67 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\ShitUser;
use App\Models\User;
use Auth;
use Carbon\Carbon;
use DB;
class ShitController extends Controller class ShitController extends Controller
{ {
public function increment() { public function dashboard() {
$allshits = ShitUser::where('user_id', Auth::user()->id)->orderByDesc('created_at')->take(100)->get();
$buttonRand = collect(['Plop!', 'Pflomp!', 'Zwusch!', 'Blomp!'])->random();
return view('dashboard')->with([
'allshits' => $allshits,
'buttonRand' => $buttonRand,
]);
}
public function increment(Request $request) {
$shituser = new ShitUser();
$shituser->user_id = Auth::user()->id;
$shituser->description = $request->description;
$shituser->goldenshit = $request->goldenshit == "on";
// Get the latest shit event and check if it is over a time threshold
$lastshit = ShitUser::where('user_id', $shituser->user_id)->orderByDesc('created_at')->first();
$timethreshold = Carbon::now()->subMinutes(10);
if (is_null($lastshit) || $lastshit->created_at->lessThan($timethreshold)) {
$shituser->save();
return redirect('/ownstats');
} else {
return redirect('/dashboard');
}
} }
public function ownStats() {
$shits = ShitUser::where('user_id', Auth::user()->id)->get();
$amountshits = $shits->count();
$goldenshits = $shits->where('goldenshit', true)->count();
return view('ownstats')->with([
'amountshits' => $amountshits,
'goldenshits' => $goldenshits,
]);
}
public function highscores() {
$allshits = ShitUser::whereMonth('created_at', Carbon::now()->month)->groupBy('user_id')->select('user_id', DB::raw('count(*) as total'))->orderByDesc('total')->get();
$users = User::all()->sortBy('name');
return view('highscores')->with([
'allshits' => $allshits,
'users' => $users,
]);
}
} }

View File

@@ -3,6 +3,7 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\URL;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@@ -23,6 +24,8 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
// if(env('APP_ENV') !== 'local') {
URL::forceScheme('https');
}
} }
} }

View File

@@ -31,7 +31,7 @@ return [
| |
*/ */
'lifetime' => env('SESSION_LIFETIME', 120), 'lifetime' => env('SESSION_LIFETIME', 525600),
'expire_on_close' => false, 'expire_on_close' => false,

View File

@@ -13,13 +13,15 @@ class ShitUser extends Migration
*/ */
public function up() public function up()
{ {
Schema::create('shituser', function (Blueprint $table) { Schema::create('shit_users', function (Blueprint $table) {
$table->id(); $table->id();
$table->integer('user_id')->unsigned(); $table->unsignedBigInteger('user_id');
$table->index('user_id'); $table->index('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('description'); $table->string('description')->nullable();
$table->boolean('goldenshit');
$table->timestamps();
}); });
} }

View File

@@ -0,0 +1,13 @@
version: '3.3'
services:
mariadb:
image: mariadb
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: laravel
MYSQL_USER: web
MYSQL_PASSWORD: example
volumes:
- ./mariadb-data:/var/lib/mysql

View File

@@ -1,10 +1,44 @@
version: '3.3' version: '3.3'
services: services:
laravel: laravel:
ports:
- '8000:80'
environment: environment:
- APP_ENV=local - APP_ENV=local
- DB_CONNECTION=sqlite
- 'APP_KEY=base64:L+3avOYCfuq8nnDpHs74+5Et3sx27TssucHQIyqfpDY=' - 'APP_KEY=base64:L+3avOYCfuq8nnDpHs74+5Et3sx27TssucHQIyqfpDY='
- DB_CONNECTION=mysql
- DB_HOST=mariadb
- DB_PORT=3306
- DB_DATABASE=laravel
- DB_USERNAME=web
- DB_PASSWORD=example
- APP_URL=https://bibelfreaks.de
build: . build: .
labels:
- "traefik.enable=true"
# https
- "traefik.http.routers.shitshow_https.rule=Host(`bibelfreaks.de`)"
- "traefik.http.routers.shitshow_https.entrypoints=websecure"
- "traefik.http.routers.shitshow_https.tls.certresolver=letsencrypt"
- "traefik.http.services.shitshow_https.loadbalancer.server.port=80"
networks:
- traefik
- shared-database
mariadb:
image: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: laravel
MYSQL_USER: web
MYSQL_PASSWORD: example
volumes:
- ./mariadb-data:/var/lib/mysql
networks:
- shared-database
networks:
shared-database:
traefik:
external:
name: traefik

16867
shit-show/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

188579
shit-show/public/css/app.css vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 0 B

After

Width:  |  Height:  |  Size: 2.2 KiB

21654
shit-show/public/js/app.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
{
"/js/app.js": "/js/app.js",
"/css/app.css": "/css/app.css"
}

View File

@@ -12,26 +12,32 @@
<!-- Validation Errors --> <!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" /> <x-auth-validation-errors class="mb-4" :errors="$errors" />
<div class="container-fluid">
<form method="POST" action="{{ route('login') }}"> <form method="POST" action="{{ route('login') }}">
@csrf @csrf
<!-- Email Address --> <!-- Email Address -->
<div> <div class="form-floating">
<x-label for="email" :value="__('Email')" /> <!--<x-label for="email" :value="__('Email')" />-->
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus /> <input id="email" class="form-control" type="email" name="email" placeholder="Email" :value="old('email')" required autofocus>
<label for="email">Email address</label>
</div> </div>
<!-- Password --> <!-- Password -->
<div class="mt-4"> <div class="form-floating">
<x-label for="password" :value="__('Password')" />
<x-input id="password" class="block mt-1 w-full" <x-input id="password" class="form-control"
type="password" type="password"
name="password" name="password"
placeholder="Password"
required autocomplete="current-password" /> required autocomplete="current-password" />
<label for="password" :value="__('Password')" />Password</label>
</div> </div>
<!-- Remember Me --> <!-- Remember Me -->
<div class="block mt-4"> <div class="block mt-4">
<label for="remember_me" class="inline-flex items-center"> <label for="remember_me" class="inline-flex items-center">
@@ -47,10 +53,15 @@
</a> </a>
@endif @endif
<x-button class="ml-3"> <x-button class="w-100 btn btn-lg btn-primary">
{{ __('Log in') }} {{ __('Log in') }}
</x-button> </x-button>
</div> </div>
</form> </form>
</div>
<main class="form-signin">
</x-auth-card> </x-auth-card>
</x-guest-layout> </x-guest-layout>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

View File

@@ -13,36 +13,35 @@
@csrf @csrf
<!-- Name --> <!-- Name -->
<div> <div class="form-floating">
<x-input id="name" class="form-control" type="text" name="name" :value="old('name')" placeholder="Name" required autofocus />
<x-label for="name" :value="__('Name')" /> <x-label for="name" :value="__('Name')" />
<x-input id="name" class="block mt-1 w-full" type="text" name="name" :value="old('name')" required autofocus />
</div> </div>
<!-- Email Address --> <!-- Email Address -->
<div class="mt-4"> <div class="form-floating">
<x-input id="email" class="form-control" type="email" name="email" :value="old('email')" placeholder="Email" required />
<x-label for="email" :value="__('Email')" /> <x-label for="email" :value="__('Email')" />
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required />
</div> </div>
<!-- Password --> <!-- Password -->
<div class="mt-4"> <div class="form-floating">
<x-label for="password" :value="__('Password')" /> <x-input id="password" class="form-control"
<x-input id="password" class="block mt-1 w-full"
type="password" type="password"
name="password" name="password"
placeholder="Password"
required autocomplete="new-password" /> required autocomplete="new-password" />
<x-label for="password" :value="__('Password')" />
</div> </div>
<!-- Confirm Password --> <!-- Confirm Password -->
<div class="mt-4"> <div class="form-floating">
<x-label for="password_confirmation" :value="__('Confirm Password')" /> <x-input id="password_confirmation" class="form-control"
<x-input id="password_confirmation" class="block mt-1 w-full"
type="password" type="password"
name="password_confirmation" required /> name="password_confirmation"
placeholder="Confirm Password"
required />
<x-label for="password_confirmation" :value="__('Confirm Password')" />
</div> </div>
<div class="flex items-center justify-end mt-4"> <div class="flex items-center justify-end mt-4">
@@ -50,7 +49,7 @@
{{ __('Already registered?') }} {{ __('Already registered?') }}
</a> </a>
<x-button class="ml-4"> <x-button class="w-100 btn btn-lg btn-primary">
{{ __('Register') }} {{ __('Register') }}
</x-button> </x-button>
</div> </div>

View File

@@ -1,6 +1,6 @@
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100"> <div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100">
<div> <div>
{{ $logo }} {{-- $logo --}}
</div> </div>
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rounded-lg"> <div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rounded-lg">

View File

@@ -0,0 +1,22 @@
<x-guest-layout>
<!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{-- __('Dashboard') --}}
</h2>
</x-slot>-->
<div class="p-5 mb-4 bg-light rounded-3">
<div class="h-100 p-5 bg-light border rounded-3">
<h2>Danksagung</h2>
<p>Einen riesen Dank für Ideen und Anregungen geht an die Rüsselbande.</p>
</div>
<br>
<div class="h-100 p-5 bg-light border rounded-3">
<h2>Sourcecode:</h2>
<p>Link zum <a href="https://git.schoffit.net/structix/shit-show">Git-Repository</a></p>
</div>
</div>
</x-guest-layout>

View File

@@ -1,17 +1,52 @@
<x-app-layout> <x-app-layout>
<x-slot name="header"> <!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight"> <h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }} {{-- __('Dashboard') --}}
</h2> </h2>
</x-slot> </x-slot>-->
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8"> <div class="p-5 mb-4 bg-light rounded-3">
<div class="bg-white overflow-hidden shadow-sm sm:rounded-lg"> <div class="container-fluid py-5">
<div class="p-6 bg-white border-b border-gray-200"> <h1 class="display-5 fw-bold">Stuhlgang hinzufügen</h1>
You're logged in! <p class="col-md-8 fs-4">Mit einem Knopfdruck wird ein weiterer Stuhlgang hinzugefügt. Sie dürfen im folgenden Textfeld gerne noch Details in schriftlicher Form beisteuern.</p>
</div> <form action="/increment" method="post">
@csrf
<div class="col-sm-6">
<label for="description" class="form-label">Beschreibung</label>
<input type="text" class="form-control" id="description" name="description" placeholder="Beschreibungstext hier einfügen..." value="">
<div class="invalid-feedback">
Ungültige Beschreibung.
</div>
</div> </div>
</div> <div class="form-check">
<input type="checkbox" class="form-check-input" id="goldenshit" name="goldenshit">
<label class="form-check-label" for="goldenshit">Mein Stuhlgang war ein goldener Schiss.</label>
</div>
<button type="submit" class="btn btn-primary btn-lg">{{ $buttonRand }}</button>
</form>
</div>
</div> </div>
<div class="container-fluid">
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Zeit</th>
<th scope="col">Beschreibung</th>
<th scope="col">Goldener Schiss</th>
</tr>
</thead>
<tbody>
@foreach($allshits as $shit)
<tr>
<th scope="row">{{ $shit->created_at }}</th>
<td>{{ $shit->description }} </td>
<td>{{ $shit->goldenshit ? "Ja" : "Nein" }} </td>
</tr>
@endforeach
</tbody>
</table>
</div>
</x-app-layout> </x-app-layout>

View File

@@ -0,0 +1,22 @@
<x-guest-layout>
<!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{-- __('Dashboard') --}}
</h2>
</x-slot>-->
<div class="p-5 mb-4 bg-light rounded-3">
<div class="h-100 p-5 bg-light border rounded-3">
<h2>Frage: Was ist ein goldener Schiss?</h2>
<p>Ein goldener Schiss ist auch unter Phantom-Schiss bekannt. Drei goldene Schisse hintereinander ergeben einen Platin-Schiss.</p>
</div>
<br>
<div class="h-100 p-5 bg-light border rounded-3">
<h2>Frage: Mein Schiss wird nicht gewertet, was kann ich tun?</h2>
<p>Um Flüchtigkeitsfehler vorzubeugen, kann ein weiterer Schiss erst nach 10 Minuten eingetragen werden. Bei akutem Durchfall muss dann leider auf eine Strichliste zurück gegriffen werden.</p>
</div>
</div>
</x-guest-layout>

View File

@@ -0,0 +1,28 @@
<x-app-layout>
<!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{-- __('Dashboard') --}}
</h2>
</x-slot>-->
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Person</th>
<th scope="col">Anzahl Stuhlgänge</th>
</tr>
</thead>
<tbody>
@foreach($allshits as $shit)
<tr>
<th scope="row">{{ $users->where('id', $shit->user_id)->first()->name }}</th>
<td>{{ $shit->total }} </td>
</tr>
@endforeach
</tbody>
</table>
</x-app-layout>

View File

@@ -11,14 +11,18 @@
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
<!-- Styles --> <!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/app.css') }}"> <!--<link rel="stylesheet" href="{{ asset('css/app.css') }}">-->
<!-- Scripts --> <!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script> <!--<script src="{{ asset('js/app.js') }}" defer></script>-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="icon" href="{{ url('favicon.ico') }}">
</head> </head>
<body class="font-sans antialiased"> <body class="font-sans antialiased">
<div class="min-h-screen bg-gray-100"> <div class="min-h-screen bg-gray-100">
@include('layouts.navigation') @include('layouts.navigation-app')
<!-- Page Heading --> <!-- Page Heading -->
<header class="bg-white shadow"> <header class="bg-white shadow">
@@ -32,5 +36,6 @@
{{ $slot }} {{ $slot }}
</main> </main>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -11,14 +11,20 @@
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
<!-- Styles --> <!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/app.css') }}"> <!--<link rel="stylesheet" href="{{ asset('css/app.css') }}">-->
<!-- Scripts --> <!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script> <!--<script src="{{ asset('js/app.js') }}" defer></script>-->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="icon" href="{{ url('favicon.ico') }}">
</head> </head>
<body> <body>
@include('layouts.navigation')
<div class="font-sans text-gray-900 antialiased"> <div class="font-sans text-gray-900 antialiased">
{{ $slot }} {{ $slot }}
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -0,0 +1,24 @@
<header class="p-3 bg-dark text-white">
<div class="container">
<div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
<a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
<svg class="bi me-2" width="40" height="32" role="img" aria-label="Bootstrap"><use xlink:href="#bootstrap"/></svg>
</a>
<ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
<li><a href="/dashboard" class="nav-link px-2 text-white">Dashboard</a></li>
<li><a href="/ownstats" class="nav-link px-2 text-white">Eigene Statistik</a></li>
<li><a href="/highscores" class="nav-link px-2 text-white">Highscores</a></li>
<li><a href="/prices" class="nav-link px-2 text-white">Preise</a></li>
</ul>
<div class="text-end">
<form action="/logout" method="post">
@csrf
<button type="submit" class="btn btn-danger">Abmelden</button>
</form>
</div>
</div>
</div>
</header>

View File

@@ -1,92 +1,25 @@
<nav x-data="{ open: false }" class="bg-white border-b border-gray-100"> <header class="p-3 bg-dark text-white">
<!-- Primary Navigation Menu --> <div class="container">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
<div class="flex justify-between h-16"> <a href="/" class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none">
<div class="flex"> <svg class="bi me-2" width="40" height="32" role="img" aria-label="Bootstrap"><use xlink:href="#bootstrap"/></svg>
<!-- Logo --> </a>
<div class="flex-shrink-0 flex items-center">
<a href="{{ route('dashboard') }}">
<x-application-logo class="block h-10 w-auto fill-current text-gray-600" />
</a>
</div>
<!-- Navigation Links --> <ul class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0">
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex"> <li><a href="/" class="nav-link px-2 text-white">Shit-Show</a></li>
<x-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')"> <li><a href="/faq" class="nav-link px-2 text-white">FAQ</a></li>
{{ __('Dashboard') }} <li><a href="/credits" class="nav-link px-2 text-white">Credits</a></li>
</x-nav-link> </ul>
</div>
</div>
<!-- Settings Dropdown -->
<div class="hidden sm:flex sm:items-center sm:ml-6">
<x-dropdown align="right" width="48">
<x-slot name="trigger">
<button class="flex items-center text-sm font-medium text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out">
<div>{{ Auth::user()->name }}</div>
<div class="ml-1"> <div class="text-end">
<svg class="fill-current h-4 w-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"> @auth
<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" /> <a href="/dashboard"><button type="button" class="btn btn-outline-light me-2">Dashboard anzeigen</button></a>
</svg> @else
</div> <a href="/login"><button type="button" class="btn btn-outline-light me-2">Login</button></a>
</button> <a href="/register"><button type="button" class="btn btn-warning">Registrieren</button></a>
</x-slot> @endauth
<x-slot name="content">
<!-- Authentication -->
<form method="POST" action="{{ route('logout') }}">
@csrf
<x-dropdown-link :href="route('logout')"
onclick="event.preventDefault();
this.closest('form').submit();">
{{ __('Log Out') }}
</x-dropdown-link>
</form>
</x-slot>
</x-dropdown>
</div>
<!-- Hamburger -->
<div class="-mr-2 flex items-center sm:hidden">
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out">
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
<path :class="{'hidden': open, 'inline-flex': ! open }" class="inline-flex" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
<path :class="{'hidden': ! open, 'inline-flex': open }" class="hidden" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
</div> </div>
</div>
</div> </div>
</header>
<!-- Responsive Navigation Menu -->
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
<div class="pt-2 pb-3 space-y-1">
<x-responsive-nav-link :href="route('dashboard')" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }}
</x-responsive-nav-link>
</div>
<!-- Responsive Settings Options -->
<div class="pt-4 pb-1 border-t border-gray-200">
<div class="px-4">
<div class="font-medium text-base text-gray-800">{{ Auth::user()->name }}</div>
<div class="font-medium text-sm text-gray-500">{{ Auth::user()->email }}</div>
</div>
<div class="mt-3 space-y-1">
<!-- Authentication -->
<form method="POST" action="{{ route('logout') }}">
@csrf
<x-responsive-nav-link :href="route('logout')"
onclick="event.preventDefault();
this.closest('form').submit();">
{{ __('Log Out') }}
</x-responsive-nav-link>
</form>
</div>
</div>
</div>
</nav>

View File

@@ -0,0 +1,18 @@
<x-app-layout>
<!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{-- __('Dashboard') --}}
</h2>
</x-slot>-->
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">Ihre Stuhlgänge</h1>
<p class="col-md-8 fs-4">Sie haben ingesamt {{ $amountshits }} Stuhlgänge erreicht, davon sind {{ $goldenshits }} goldene Stuhlgänge.</p>
</div>
</div>
</x-app-layout>

View File

@@ -0,0 +1,17 @@
<x-app-layout>
<!--<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{-- __('Dashboard') --}}
</h2>
</x-slot>-->
<div class="p-5 mb-4 bg-light rounded-3">
<div class="h-100 p-5 bg-light border rounded-3">
<h2>Preise</h2>
<p>Hier werden jeden Monat neue Challenges veröffentlicht. Der Gewinner erhält einen Preis.</p>
</div>
</div>
</x-app-layout>

View File

@@ -1,132 +1,31 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <html lang="de">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title> <title>Shit-Show</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- Fonts --> <link rel="icon" href="{{ url('favicon.ico') }}">
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<!-- Styles -->
<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}}
</style>
<style>
body {
font-family: 'Nunito', sans-serif;
}
</style>
</head> </head>
<body class="antialiased"> <body>
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
@if (Route::has('login'))
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
@auth
<a href="{{ url('/dashboard') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Dashboard</a>
@else
<a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>
@if (Route::has('register')) @include('layouts.navigation')
<a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
@endif
@endauth
</div>
@endif
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
<svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
<g clip-path="url(#clip0)" fill="#EF3B2D">
<path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
</g>
</svg>
</div>
<div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg"> <div class="p-5 mb-4 bg-light rounded-3">
<div class="grid grid-cols-1 md:grid-cols-2"> <div class="container-fluid py-5">
<div class="p-6"> <h1 class="display-5 fw-bold">Shit-Show</h1>
<div class="flex items-center"> <p class="col-md-8 fs-4">Der Stuhlgang-Tracker der Ihr Leben erleichtert. Fehlt Ihnen auf den WC-Sessions auch immer der kompetitive Aspekt und Sie denken es wäre verschwendete Zeit?
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg> Ganz und gar nicht! Mit dieser Shit-Show können Sie mit dem Rest der Welt um die Wette scheißen!
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div> </p>
</div> <p class="col-md-8 fs-4">Jeden Monat warten neue spannende Challenges und Preise auf Sie, also worauf warten Sie noch? Registrieren und rauf auf den Pott!</p>
<div class="ml-12">
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
</div>
</div>
</div>
<div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
<div class="flex items-center">
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
</div>
<div class="ml-12">
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
</div>
</div>
</div>
<div class="p-6 border-t border-gray-200 dark:border-gray-700">
<div class="flex items-center">
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
<div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
</div>
<div class="ml-12">
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
</div>
</div>
</div>
<div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
<div class="flex items-center">
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
<div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
</div>
<div class="ml-12">
<div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
</div>
</div>
</div>
</div>
</div>
<div class="flex justify-center mt-4 sm:items-center sm:justify-between">
<div class="text-center text-sm text-gray-500 sm:text-left">
<div class="flex items-center">
<svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
<path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
</svg>
<a href="https://laravel.bigcartel.com" class="ml-1 underline">
Shop
</a>
<svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
<path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
</svg>
<a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
Sponsor
</a>
</div>
</div>
<div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
</div>
</div>
</div> </div>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -2,6 +2,8 @@
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ShitController;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Web Routes | Web Routes
@@ -17,8 +19,21 @@ Route::get('/', function () {
return view('welcome'); return view('welcome');
}); });
Route::get('/dashboard', function () { Route::get('/dashboard', [ShitController::class, 'dashboard'])->middleware(['auth'])->name('dashboard');
return view('dashboard');
})->middleware(['auth'])->name('dashboard'); Route::post('/increment', [ShitController::class, 'increment'])->middleware(['auth']);
Route::get('/ownstats', [ShitController::class, 'ownStats'])->middleware(['auth']);
Route::get('/highscores', [ShitController::class, 'highscores'])->middleware(['auth']);
Route::get('/prices', function () {
return view('prices');
})->middleware(['auth']);
Route::get('/faq', function () {
return view('faq');
});
Route::get('/credits', function () {
return view('credits');
});
require __DIR__.'/auth.php'; require __DIR__.'/auth.php';