📚 Added "BooksForPlebs" book rental guide for Bitcoin meetups and integrated "FollowTheRabbit" feature to explore Bitcoin rabbit hole themes.

This commit is contained in:
HolgerHatGarKeineNode
2025-11-21 19:37:50 +01:00
parent 7c85fdcefb
commit 2888a723f7
10 changed files with 451 additions and 6 deletions

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Livewire\BooksForPlebs;
use Livewire\Component;
use RalphJSmit\Laravel\SEO\Support\SEOData;
class BookRentalGuide extends Component
{
public function render()
{
return view('livewire.books-for-plebs.book-rental-guide')->with( [
'SEOData' => new SEOData(
title: __('BooksForPlebs'),
description: __('Lokale Buchausleihe für Bitcoin-Meetups.'),
image: asset('img/book-rental.jpg')
),
]);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Livewire\Helper;
use Livewire\Component;
use RalphJSmit\Laravel\SEO\Support\SEOData;
class FollowTheRabbit extends Component
{
public function render()
{
return view('livewire.helper.follow-the-rabbit')->with([
'SEOData' => new SEOData(
title: __('Bitcoin - Rabbit Hole'),
description: __('Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!'),
image: asset('img/kaninchenbau.png')
),
]);
}
}

View File

@@ -21,6 +21,7 @@
"livewire/flux-pro": "^2.2",
"livewire/volt": "^1.7.0",
"outhebox/blade-flags": "^1.5",
"ralphjsmit/laravel-seo": "^1.7",
"simplesoftwareio/simple-qrcode": "^4.2",
"spatie/icalendar-generator": "^3.1",
"spatie/laravel-ciphersweet": "^1.7",

153
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "2f835aeeb5cb6ca796bf1916be38cabf",
"content-hash": "e28b129a600ecef71879618baf7b2358",
"packages": [
{
"name": "akuechler/laravel-geoly",
@@ -4589,6 +4589,157 @@
},
"time": "2019-03-08T08:55:37+00:00"
},
{
"name": "ralphjsmit/laravel-helpers",
"version": "1.10.0",
"source": {
"type": "git",
"url": "https://github.com/ralphjsmit/laravel-helpers.git",
"reference": "85f42d56a632b5e7edd60460cf8163b8f7506771"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralphjsmit/laravel-helpers/zipball/85f42d56a632b5e7edd60460cf8163b8f7506771",
"reference": "85f42d56a632b5e7edd60460cf8163b8f7506771",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^7.4",
"illuminate/contracts": "^10.0|^11.0|^12.0",
"php": "^8.0",
"spatie/laravel-package-tools": "^1.9.2"
},
"require-dev": {
"livewire/livewire": "^2.9|^3.4",
"nesbot/carbon": "^2.66|^3.0",
"nunomaduro/collision": "^7.0|^8.0",
"orchestra/testbench": "^8.0|^9.0|^10.0",
"pestphp/pest": "^2.34|^3.7",
"pestphp/pest-plugin-laravel": "^2.3|^3.1",
"phpunit/phpunit": "^10.5|^11.5",
"spatie/invade": "^1.0|^2.0",
"spatie/laravel-ray": "^1.39"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Helpers": "RalphJSmit\\Helpers\\Facades\\Helpers"
},
"providers": [
"RalphJSmit\\Helpers\\HelpersServiceProvider"
]
}
},
"autoload": {
"files": [
"src/Laravel/Support/helpers.php",
"src/helpers.php"
],
"psr-4": {
"RalphJSmit\\Helpers\\": "src",
"RalphJSmit\\Helpers\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph J. Smit",
"email": "rjs@ralphjsmit.com",
"role": "Developer"
}
],
"description": "A package containing handy helpers for your Laravel-application.",
"homepage": "https://github.com/ralphjsmit/laravel-helpers",
"keywords": [
"laravel",
"laravel-helpers",
"ralphjsmit"
],
"support": {
"issues": "https://github.com/ralphjsmit/laravel-helpers/issues",
"source": "https://github.com/ralphjsmit/laravel-helpers/tree/1.10.0"
},
"time": "2025-02-25T17:18:51+00:00"
},
{
"name": "ralphjsmit/laravel-seo",
"version": "1.7.2",
"source": {
"type": "git",
"url": "https://github.com/ralphjsmit/laravel-seo.git",
"reference": "55f72af14357b22665ed8428f46356f41a61c713"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralphjsmit/laravel-seo/zipball/55f72af14357b22665ed8428f46356f41a61c713",
"reference": "55f72af14357b22665ed8428f46356f41a61c713",
"shasum": ""
},
"require": {
"illuminate/contracts": "^10.0|^11.0|^12.0",
"php": "^8.0",
"ralphjsmit/laravel-helpers": "^1.10",
"spatie/laravel-package-tools": "^1.9.2"
},
"require-dev": {
"laravel/pint": "^1.16",
"nesbot/carbon": "^2.66|^3.0",
"nunomaduro/collision": "^7.0|^8.0|^9.0",
"orchestra/testbench": "^9.0|^10.0",
"pestphp/pest": "^2.0|^3.0",
"pestphp/pest-plugin-laravel": "^2.0|^3.0",
"phpunit/phpunit": "^10.5|^11.5",
"spatie/laravel-ray": "^1.39",
"spatie/pest-plugin-test-time": "^2.0"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"SEOManager": "RalphJSmit\\Laravel\\SEO\\Facades\\SEOManager"
},
"providers": [
"RalphJSmit\\Laravel\\SEO\\LaravelSEOServiceProvider"
]
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"RalphJSmit\\Laravel\\SEO\\": "src",
"RalphJSmit\\Laravel\\SEO\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph J. Smit",
"email": "rjs@ralphjsmit.com",
"role": "Developer"
}
],
"description": "A package to handle the SEO in any Laravel application, big or small.",
"homepage": "https://github.com/ralphjsmit/laravel-seo",
"keywords": [
"laravel",
"laravel-seo",
"ralphjsmit"
],
"support": {
"issues": "https://github.com/ralphjsmit/laravel-seo/issues",
"source": "https://github.com/ralphjsmit/laravel-seo/tree/1.7.2"
},
"time": "2025-09-22T14:21:04+00:00"
},
{
"name": "ramsey/collection",
"version": "2.1.1",

View File

@@ -377,5 +377,9 @@
"Venue Information": "",
"Sprache wechseln": "",
"Spracheinstellungen": "",
"Wähle deine Sprache aus...": ""
"Wähle deine Sprache aus...": "",
"BooksForPlebs": "",
"Lokale Buchausleihe für Bitcoin-Meetups.": "",
"Bitcoin - Rabbit Hole": "",
"Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!": ""
}

View File

@@ -377,5 +377,9 @@
"Venue Information": "Venue Information",
"Sprache wechseln": "Change language",
"Spracheinstellungen": "Language settings",
"Wähle deine Sprache aus...": "Choose your language..."
"Wähle deine Sprache aus...": "Choose your language...",
"BooksForPlebs": "BooksForPlebs",
"Lokale Buchausleihe für Bitcoin-Meetups.": "Local book lending for Bitcoin meetups.",
"Bitcoin - Rabbit Hole": "Bitcoin - Rabbit Hole",
"Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!": "This is a great overview of the Bitcoin rabbit hole with access to areas that Bitcoin encompasses. Each topic has its own rabbit hole that is visualized in a simple and understandable way through infographics, with QR codes leading to explanatory videos and articles. Have fun on your journey of discovery!"
}

View File

@@ -376,5 +376,8 @@
"Venue Information": "Información del lugar",
"Sprache wechseln": "Cambiar idioma",
"Spracheinstellungen": "Configuración de idioma",
"Wähle deine Sprache aus...": "Elige tu idioma..."
}
"Wähle deine Sprache aus...": "Elige tu idioma...",
"BooksForPlebs": "LibrosParaPlebs",
"Lokale Buchausleihe für Bitcoin-Meetups.": "Préstamo local de libros para encuentros Bitcoin.",
"Bitcoin - Rabbit Hole": "Bitcoin - La Madriguera del Conejo",
"Dies ist ein großartiger Überblick über die Bitcoin-Kaninchenhöhle mit Zugängen zu Bereichen, die Bitcoin umfasst. Jedes Thema hat seine eigene Kaninchenhöhle, die durch Infografiken auf einfache und verständliche Weise visualisiert wird, mit QR-Codes, die zu erklärenden Videos und Artikeln führen. Viel Spaß auf Ihrer Entdeckungsreise!": "Esta es una excelente visión general de la madriguera del conejo de Bitcoin con acceso a áreas que abarca Bitcoin. Cada tema tiene su propia madriguera, que se visualiza de manera simple y comprensible a través de infografías, con códigos QR que conducen a videos y artículos explicativos. ¡Disfruta tu viaje de descubrimiento!"

View File

@@ -0,0 +1,213 @@
<div class="h-screen w-full">
<div class="px-4 md:px-8 lg:px-24 py-5">
<div class="flex flex-col md:flex-row justify-between items-center mb-8">
<h1 class="text-4xl md:text-5xl text-orange-500 mb-4 md:mb-0">
Anleitung zum Bücherverleih
</h1>
<img src="{{ asset('/img/apple_touch_icon.png') }}" alt="Buch Etiketten"
class="object-cover h-32 rounded-md shadow-md">
</div>
<h2 class="text-2xl md:text-3xl mb-4 text-white">
Hallo Pleb,
</h2>
<p class="text-lg mb-8 text-white">
Vielen Dank, dass du dich dazu entschieden hast, deine
<span class="text-orange-500">
₿itcoin-Bücher
</span>
zur Verfügung zu stellen. Mit dieser Anleitung kannst du eine Bezahladresse
generieren und hast auch alle Materialien, die du benötigst. Wir haben
darauf geachtet, dass es für jedes Meetup geeignet ist. Deshalb stellen
wir dir die Quelldateien zur Verfügung, damit du deinen eigenen QR-Code
einfügen und das Logo eures Meetups verwenden kannst.
<br>
<p class="text-lg text-white mt-8">
Du hast keine ₿itcoin Wallet oder kein Programm zum Bearbeiten der Dateien?
Kein Problem! Schreib uns einfach und wir helfen dir.
</p>
<br>
<a href="https://t.me/Awesomo12" target="_blank" class="text-orange-500 underline telegram-blue">
<i class="fab fa-telegram mr-2">
</i>
@Awesomo12
</a>
<br>
<a href="https://t.me/LottiTheFuchs" target="_blank" class="text-orange-500 underline telegram-blue">
<i class="fab fa-telegram mr-2">
</i>
@LottiTheFuchs
</a>
<br>
<a href="https://t.me/Robin_Hodl21" target="_blank" class="text-orange-500 underline telegram-blue">
<i class="fab fa-telegram mr-2">
</i>
@Robin_Hodl21
</a>
</p>
<br>
<!-- Bücheretiketten -->
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
<div class="flex flex-col items-center">
<h2 class="text-2xl mb-2 text-orange-500">
Bücheretiketten
</h2>
<p class="text-lg text-gray-300 mb-2">
(Zum Editieren brauchst du
<a href="https://www.adobe.com/de/products/illustrator.html" target="_blank"
class="text-orange-500 underline link-gray">
Adobe Illustrator)
</a>
</p>
<img src="{{ asset('/img/etikett_bucherVerleih-min.jpg') }}" alt="Buch Etiketten"
class="mb-4 object-cover h-64 rounded-md shadow-md">
<div class="flex justify-center space-x-2">
<a download="true" href="{{ route('buecherverleih.download', ['filename' => 'buecherverleih.zip']) }}" class="btn bg-blue-600 text-white py-2 px-4 rounded-md hover:bg-blue-700">
<p class="text-white">
Download .zip
</p>
</a>
</div>
</div>
<!-- Flyer -->
<div class="flex flex-col items-center">
<h2 class="text-2xl mb-2 text-orange-500">
Flyer
</h2>
<p class="text-lg text-gray-300 mb-2">
(Zum Editieren brauchst du
<a href="https://www.adobe.com/de/products/illustrator.html" target="_blank"
class="text-orange-500 underline link-gray">
Adobe Illustrator)
</a>
</p>
<img src="{{ asset('/img/flyerBuecherverleih-min.jpg') }}" alt="Flyer" class="mb-4 object-cover h-64 rounded-md shadow-md">
<div class="flex space-x-2">
<a download="true" href="{{ route('buecherverleih.download', ['filename' => 'buecherverleih.zip']) }}" class="btn bg-blue-600 text-white py-2 px-4 rounded-md hover:bg-blue-700">
<p class="text-white">
Download .zip
</p>
</a>
</div>
</div>
<!-- Lesezeichen -->
<div class="flex flex-col items-center">
<h2 class="text-2xl mb-2 text-orange-500">
Lesezeichen
</h2>
<p class="text-lg text-gray-300 mb-2">
(Nicht editierbar)
</p>
<img src="{{ asset('/img/Lesezeichen-min.jpg') }}" alt="Flyer" class="mb-4 object-cover h-64 rounded-md shadow-md">
<div class="flex space-x-2">
<flux:button
variant="primary"
download="Lesezeichen"
:href="asset('/img/Lesezeichen-min.jpg')">
Download .jpg
</flux:button>
</div>
</div>
<!-- Bookring4Sats -->
<div class="flex flex-col items-center">
<h2 class="text-2xl mb-2 text-orange-500">
Bookring4Sats
</h2>
<p class="text-lg text-gray-300 mb-2">
(Nicht editierbar)
</p>
<img src="{{ asset('/img/B4S-min.jpg') }}" alt="Flyer" class="mb-4 object-cover h-64 rounded-md shadow-md">
<div class="flex space-x-2">
<flux:button
variant="primary"
download="B4S"
:href="asset('/img/B4S-min.jpg')">
Download .jpg
</flux:button>
</div>
</div>
</div>
<p class="text-lg mb-8 text-white">
Um deinen
<span class="text-orange-500">
₿itcoin
</span>
QR-Code zu erstellen, kopiere einfach die Empfangsadresse aus der Wallet
deiner Wahl und füge sie hier ein:
<br>
<a href="https://www.qr-code-generator.com/" target="_blank" class="text-orange-500 underline">
www.qr-code-generator.com
</a>
</p>
<p class="text-lg text-white font-bold mb-8">
Der QR-Code-Generator akzeptiert sowohl Lightning als auch Onchain-Empfangsadressen.
Wir empfehlen dir jedoch Lightning zu verwenden, da es schneller und zumeist deutlich günstiger als Onchain ist.
<br>
<span class="flex items-center text-red-500">
<i class="fas fa-exclamation-triangle mr-2">
</i>
Vorsicht: Bitte KEINE Lightning-Adressen,verwenden, da diese nach einem bestimmten Zeitraum ablaufen!
Stattdessen nutzt Ihr bitte eine LNURL, da diese Statisch sind.
</span>
<span>
Tipp: Der Lightning TipBot "LN.tips" erzeugt euch eine. Dazu müsst Ihr diesen nur aktivieren und mit dem Befehl
"/advanced" eure LNURL anzeigen lassen und diese copy-pasten.
Alternativ kann dies auch die WalletOfSatoshi, dort sehen Sie aus wie E-Mail Adessen, wie zum Beispiel:
"BitcoinKalle@walletofsatoshi.com"
</span>
</p>
<p class="text-lg text-white">
Für die sichere Lagerung deiner Bücher empfehlen wir einen Meetup-Ort,
an dem du regelmäßig bist und die Bücher auch sicher verstaut werden können.
Falls dem nicht der Fall ist, solltet Ihr die Bücher lieber jedes mal separat mit zum Meetup
nehmen und die nicht verliehenen Bücher auch wieder mit zurück.
</p>
<p class="text-lg text-white mt-8">
Du willst deine Bücher nicht nur deinem lokalen Meetup zur Verfügung stellen,
sondern online an die gesamte Community verschicken, dann komm in die Gruppe:
</p>
<p class="text-lg text-white">
<a href="https://t.me/BOOKRING4SATS" target="_blank" class="text-orange-500 underline telegram-blue">
<br>
<i class="fab fa-telegram mr-2">
</i>
@BOOKRING4SATS
</a>
</p>
<p class="text-lg mt-8 text-white font-bold">
<i class="fas fa-book mr-2 text-orange-500">
</i>
Vielen Dank, dass du deine Bücher zur Verfügung stellst und uns dabei
hilfst, das Wissen über ₿itcoin zu verbreiten!
</p>
<div class="flex items-center justify-center mt-4">
<img src="/img/btc-logo-6219386_1280.png" class="h-16" alt="">
<span class="text-orange-500">
Happy Stacking
</span>
</div>
</div>
</div>

View File

@@ -0,0 +1,4 @@
<div class="h-screen w-full">
<iframe allowfullscreen="true" src="https://www.easyzoom.com/embed/1322a81aa55e4fd6a3188f6217476652" width="100%"
style="height: 90vh;"></iframe>
</div>

View File

@@ -2,9 +2,31 @@
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
use Illuminate\Http\Request;
Route::redirect('/', 'welcome');
/*Route::get('/download-buecherverleih', function (Request $request) {
$filename = $request->input('filename');
// Get the file path from the public folder
$filePath = storage_path('app/'.$filename);
dd($filePath);
// Check if the file exists
if (!file_exists($filePath)) {
abort(404);
}
// Generate a response with the file for download
return response()->download($filePath, $filename);
})->name('buecherverleih.download');
Route::middleware([])
->get('/buecherverleih', \App\Livewire\BooksForPlebs\BookRentalGuide::class)
->name('buecherverleih');*/
Route::middleware([])
->get('/kaninchenbau', \App\Livewire\Helper\FollowTheRabbit::class)
->name('kaninchenbau');
Route::get('/img/{path}', \App\Http\Controllers\ImageController::class)
->where('path', '.*')
->name('img');
@@ -35,7 +57,8 @@ Route::middleware([])
Volt::route('meetups', 'meetups.index')->name('meetups.index');
Volt::route('map', 'meetups.map')->name('meetups.map');
Volt::route('meetup/{meetup:slug}', 'meetups.landingpage')->name('meetups.landingpage');
Volt::route('meetup/{meetup:slug}/event/{event}', 'meetups.landingpage-event')->name('meetups.landingpage-event');
Volt::route('meetup/{meetup:slug}/event/{event}',
'meetups.landingpage-event')->name('meetups.landingpage-event');
Volt::route('courses', 'courses.index')->name('courses.index');
Volt::route('course/{course}', 'courses.landingpage')->name('courses.landingpage');
@@ -80,4 +103,6 @@ Route::middleware(['auth'])
Volt::route('settings/appearance', 'settings.appearance')->name('settings.appearance');
});
Route::feeds();
require __DIR__.'/auth.php';