Compare commits
13 Commits
20250716-m
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8b937acbe7 | |||
| c5c2c0dca4 | |||
| f10e531c71 | |||
| 4775d77063 | |||
| cde2928694 | |||
| 20a5672753 | |||
| a7a3c6e6f6 | |||
| a6f34ea8fa | |||
| 46262b3862 | |||
| 0892f252a4 | |||
| ec89417b23 | |||
| e38552e186 | |||
| 85917e0cdf |
617
_ide_helper.php
617
_ide_helper.php
@@ -23885,6 +23885,611 @@ public static function setSiteName($name)
|
||||
}
|
||||
}
|
||||
|
||||
namespace Barryvdh\Debugbar\Facades {
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @method static void alert(mixed $message)
|
||||
* @method static void critical(mixed $message)
|
||||
* @method static void debug(mixed $message)
|
||||
* @method static void emergency(mixed $message)
|
||||
* @method static void error(mixed $message)
|
||||
* @method static void info(mixed $message)
|
||||
* @method static void log(mixed $message)
|
||||
* @method static void notice(mixed $message)
|
||||
* @method static void warning(mixed $message)
|
||||
* @see \Barryvdh\Debugbar\LaravelDebugbar
|
||||
*/
|
||||
class Debugbar {
|
||||
/**
|
||||
* Returns the HTTP driver
|
||||
*
|
||||
* If no http driver where defined, a PhpHttpDriver is automatically created
|
||||
*
|
||||
* @return \DebugBar\HttpDriverInterface
|
||||
* @static
|
||||
*/
|
||||
public static function getHttpDriver()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getHttpDriver();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the Debugbar and boot, if not already booted.
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function enable()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->enable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Boot the debugbar (add collectors, renderer and listener)
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function boot()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->boot();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function shouldCollect($name, $default = false)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->shouldCollect($name, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a data collector
|
||||
*
|
||||
* @param \DebugBar\DataCollector\DataCollectorInterface $collector
|
||||
* @throws DebugBarException
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function addCollector($collector)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->addCollector($collector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle silenced errors
|
||||
*
|
||||
* @param $level
|
||||
* @param $message
|
||||
* @param string $file
|
||||
* @param int $line
|
||||
* @param array $context
|
||||
* @throws \ErrorException
|
||||
* @static
|
||||
*/
|
||||
public static function handleError($level, $message, $file = '', $line = 0, $context = [])
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->handleError($level, $message, $file, $line, $context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a measure
|
||||
*
|
||||
* @param string $name Internal name, used to stop the measure
|
||||
* @param string $label Public name
|
||||
* @param string|null $collector
|
||||
* @static
|
||||
*/
|
||||
public static function startMeasure($name, $label = null, $collector = null)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->startMeasure($name, $label, $collector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops a measure
|
||||
*
|
||||
* @param string $name
|
||||
* @static
|
||||
*/
|
||||
public static function stopMeasure($name)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->stopMeasure($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an exception to be profiled in the debug bar
|
||||
*
|
||||
* @param \Exception $e
|
||||
* @deprecated in favor of addThrowable
|
||||
* @static
|
||||
*/
|
||||
public static function addException($e)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->addException($e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds an exception to be profiled in the debug bar
|
||||
*
|
||||
* @param \Throwable $e
|
||||
* @static
|
||||
*/
|
||||
public static function addThrowable($e)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->addThrowable($e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a JavascriptRenderer for this instance
|
||||
*
|
||||
* @param string $baseUrl
|
||||
* @param string $basePath
|
||||
* @return \Barryvdh\Debugbar\JavascriptRenderer
|
||||
* @static
|
||||
*/
|
||||
public static function getJavascriptRenderer($baseUrl = null, $basePath = null)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getJavascriptRenderer($baseUrl, $basePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify the response and inject the debugbar (or data in headers)
|
||||
*
|
||||
* @param \Symfony\Component\HttpFoundation\Request $request
|
||||
* @param \Symfony\Component\HttpFoundation\Response $response
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
* @static
|
||||
*/
|
||||
public static function modifyResponse($request, $response)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->modifyResponse($request, $response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the Debugbar is enabled
|
||||
*
|
||||
* @return boolean
|
||||
* @static
|
||||
*/
|
||||
public static function isEnabled()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->isEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Collects the data from the collectors
|
||||
*
|
||||
* @return array
|
||||
* @static
|
||||
*/
|
||||
public static function collect()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->collect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Injects the web debug toolbar into the given Response.
|
||||
*
|
||||
* @param \Symfony\Component\HttpFoundation\Response $response A Response instance
|
||||
* Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php
|
||||
* @static
|
||||
*/
|
||||
public static function injectDebugbar($response)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->injectDebugbar($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if there is stacked data in the session
|
||||
*
|
||||
* @return boolean
|
||||
* @static
|
||||
*/
|
||||
public static function hasStackedData()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->hasStackedData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the data stacked in the session
|
||||
*
|
||||
* @param boolean $delete Whether to delete the data in the session
|
||||
* @return array
|
||||
* @static
|
||||
*/
|
||||
public static function getStackedData($delete = true)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getStackedData($delete);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the Debugbar
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function disable()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->disable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a measure
|
||||
*
|
||||
* @param string $label
|
||||
* @param float $start
|
||||
* @param float $end
|
||||
* @param array|null $params
|
||||
* @param string|null $collector
|
||||
* @static
|
||||
*/
|
||||
public static function addMeasure($label, $start, $end, $params = [], $collector = null)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->addMeasure($label, $start, $end, $params, $collector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function to measure the execution of a Closure
|
||||
*
|
||||
* @param string $label
|
||||
* @param \Closure $closure
|
||||
* @param string|null $collector
|
||||
* @return mixed
|
||||
* @static
|
||||
*/
|
||||
public static function measure($label, $closure, $collector = null)
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->measure($label, $closure, $collector);
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect data in a CLI request
|
||||
*
|
||||
* @return array
|
||||
* @static
|
||||
*/
|
||||
public static function collectConsole()
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->collectConsole();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a message to the MessagesCollector
|
||||
*
|
||||
* A message can be anything from an object to a string
|
||||
*
|
||||
* @param mixed $message
|
||||
* @param string $label
|
||||
* @static
|
||||
*/
|
||||
public static function addMessage($message, $label = 'info')
|
||||
{
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->addMessage($message, $label);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a data collector has been added
|
||||
*
|
||||
* @param string $name
|
||||
* @return boolean
|
||||
* @static
|
||||
*/
|
||||
public static function hasCollector($name)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->hasCollector($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a data collector
|
||||
*
|
||||
* @param string $name
|
||||
* @return \DebugBar\DataCollector\DataCollectorInterface
|
||||
* @throws DebugBarException
|
||||
* @static
|
||||
*/
|
||||
public static function getCollector($name)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getCollector($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all data collectors
|
||||
*
|
||||
* @return array[DataCollectorInterface]
|
||||
* @static
|
||||
*/
|
||||
public static function getCollectors()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getCollectors();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the request id generator
|
||||
*
|
||||
* @param \DebugBar\RequestIdGeneratorInterface $generator
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function setRequestIdGenerator($generator)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->setRequestIdGenerator($generator);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return \DebugBar\RequestIdGeneratorInterface
|
||||
* @static
|
||||
*/
|
||||
public static function getRequestIdGenerator()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getRequestIdGenerator();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the id of the current request
|
||||
*
|
||||
* @return string
|
||||
* @static
|
||||
*/
|
||||
public static function getCurrentRequestId()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getCurrentRequestId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the storage backend to use to store the collected data
|
||||
*
|
||||
* @param \DebugBar\StorageInterface $storage
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function setStorage($storage = null)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->setStorage($storage);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @return \DebugBar\StorageInterface
|
||||
* @static
|
||||
*/
|
||||
public static function getStorage()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the data will be persisted
|
||||
*
|
||||
* @return boolean
|
||||
* @static
|
||||
*/
|
||||
public static function isDataPersisted()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->isDataPersisted();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the HTTP driver
|
||||
*
|
||||
* @param \DebugBar\HttpDriverInterface $driver
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function setHttpDriver($driver)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->setHttpDriver($driver);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns collected data
|
||||
*
|
||||
* Will collect the data if none have been collected yet
|
||||
*
|
||||
* @return array
|
||||
* @static
|
||||
*/
|
||||
public static function getData()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of HTTP headers containing the data
|
||||
*
|
||||
* @param string $headerName
|
||||
* @param integer $maxHeaderLength
|
||||
* @return array
|
||||
* @static
|
||||
*/
|
||||
public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends the data through the HTTP headers
|
||||
*
|
||||
* @param bool $useOpenHandler
|
||||
* @param string $headerName
|
||||
* @param integer $maxHeaderLength
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stacks the data in the session for later rendering
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function stackData()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->stackData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the key to use in the $_SESSION array
|
||||
*
|
||||
* @param string $ns
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function setStackDataSessionNamespace($ns)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->setStackDataSessionNamespace($ns);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the key used in the $_SESSION array
|
||||
*
|
||||
* @return string
|
||||
* @static
|
||||
*/
|
||||
public static function getStackDataSessionNamespace()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->getStackDataSessionNamespace();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether to only use the session to store stacked data even
|
||||
* if a storage is enabled
|
||||
*
|
||||
* @param boolean $enabled
|
||||
* @return \Barryvdh\Debugbar\LaravelDebugbar
|
||||
* @static
|
||||
*/
|
||||
public static function setStackAlwaysUseSessionStorage($enabled = true)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->setStackAlwaysUseSessionStorage($enabled);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the session is always used to store stacked data
|
||||
* even if a storage is enabled
|
||||
*
|
||||
* @return boolean
|
||||
* @static
|
||||
*/
|
||||
public static function isStackAlwaysUseSessionStorage()
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->isStackAlwaysUseSessionStorage();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function offsetSet($key, $value)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->offsetSet($key, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function offsetGet($key)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->offsetGet($key);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function offsetExists($key)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->offsetExists($key);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @static
|
||||
*/
|
||||
public static function offsetUnset($key)
|
||||
{
|
||||
//Method inherited from \DebugBar\DebugBar
|
||||
/** @var \Barryvdh\Debugbar\LaravelDebugbar $instance */
|
||||
return $instance->offsetUnset($key);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
namespace Laravel\Socialite\Facades {
|
||||
/**
|
||||
*
|
||||
@@ -24653,6 +25258,17 @@ public static function getConfig()
|
||||
* @implements \Illuminate\Support\Enumerable<TKey, TValue>
|
||||
*/
|
||||
class Collection {
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @see \Barryvdh\Debugbar\ServiceProvider::register()
|
||||
* @static
|
||||
*/
|
||||
public static function debug()
|
||||
{
|
||||
return \Illuminate\Support\Collection::debug();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
@@ -30076,6 +30692,7 @@ class JsonLd extends \Artesaos\SEOTools\Facades\JsonLd {}
|
||||
class SEOMeta extends \Artesaos\SEOTools\Facades\SEOMeta {}
|
||||
class Twitter extends \Artesaos\SEOTools\Facades\TwitterCard {}
|
||||
class OpenGraph extends \Artesaos\SEOTools\Facades\OpenGraph {}
|
||||
class Debugbar extends \Barryvdh\Debugbar\Facades\Debugbar {}
|
||||
class Horizon extends \Laravel\Horizon\Horizon {}
|
||||
class Socialite extends \Laravel\Socialite\Facades\Socialite {}
|
||||
class Excel extends \Maatwebsite\Excel\Facades\Excel {}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
class GenerateMemesSitemap extends Command
|
||||
{
|
||||
protected $signature = 'sitemap:generate:memes';
|
||||
|
||||
protected $description = 'Generate sitemap for individual meme pages (memes.show)';
|
||||
|
||||
public function __construct(
|
||||
@@ -38,7 +39,7 @@ public function handle(): int
|
||||
|
||||
// Add each meme to the sitemap
|
||||
foreach ($memes as $meme) {
|
||||
$url = Url::create($baseUrl . '/meme/' . $meme->slug)
|
||||
$url = Url::create($baseUrl.'/meme/'.$meme->slug)
|
||||
->setPriority(0.8)
|
||||
->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY)
|
||||
->setLastModificationDate($meme->updated_at);
|
||||
@@ -54,7 +55,7 @@ public function handle(): int
|
||||
$sitemapPath = public_path('sitemap_memes.xml');
|
||||
$sitemap->writeToFile($sitemapPath);
|
||||
|
||||
$this->info("Memes sitemap generated successfully!");
|
||||
$this->info('Memes sitemap generated successfully!');
|
||||
$this->info("Sitemap saved to: {$sitemapPath}");
|
||||
$this->info("Total URLs: {$memes->count()}");
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
class GenerateSitemap extends Command
|
||||
{
|
||||
protected $signature = 'sitemap:generate';
|
||||
|
||||
protected $description = 'Generate main sitemap index that links to all sub-sitemaps';
|
||||
|
||||
public function handle(): int
|
||||
@@ -22,11 +23,11 @@ public function handle(): int
|
||||
// List of sub-sitemaps to include in the main sitemap
|
||||
$subSitemaps = [
|
||||
[
|
||||
'url' => $baseUrl . '/sitemap_static.xml',
|
||||
'url' => $baseUrl.'/sitemap_static.xml',
|
||||
'lastModified' => $this->getSitemapLastModified('sitemap_static.xml'),
|
||||
],
|
||||
[
|
||||
'url' => $baseUrl . '/sitemap_memes.xml',
|
||||
'url' => $baseUrl.'/sitemap_memes.xml',
|
||||
'lastModified' => $this->getSitemapLastModified('sitemap_memes.xml'),
|
||||
],
|
||||
// Future sitemaps can be added here:
|
||||
@@ -46,9 +47,9 @@ public function handle(): int
|
||||
$sitemapPath = public_path('sitemap.xml');
|
||||
$sitemapIndex->writeToFile($sitemapPath);
|
||||
|
||||
$this->info("Main sitemap index generated successfully!");
|
||||
$this->info('Main sitemap index generated successfully!');
|
||||
$this->info("Sitemap saved to: {$sitemapPath}");
|
||||
$this->info("Total sub-sitemaps: " . count($subSitemaps));
|
||||
$this->info('Total sub-sitemaps: '.count($subSitemaps));
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
@@ -61,10 +62,10 @@ private function getSitemapLastModified(string $filename): \DateTime
|
||||
$filepath = public_path($filename);
|
||||
|
||||
if (file_exists($filepath)) {
|
||||
return new \DateTime('@' . filemtime($filepath));
|
||||
return new \DateTime('@'.filemtime($filepath));
|
||||
}
|
||||
|
||||
// If file doesn't exist, return current time
|
||||
return new \DateTime();
|
||||
return new \DateTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
class GenerateStaticSitemap extends Command
|
||||
{
|
||||
protected $signature = 'sitemap:generate:static';
|
||||
|
||||
protected $description = 'Generate sitemap for static pages (home, privacy, terms, dmca, meme library)';
|
||||
|
||||
public function handle(): int
|
||||
@@ -29,25 +30,25 @@ public function handle(): int
|
||||
'lastModificationDate' => now(),
|
||||
],
|
||||
[
|
||||
'url' => $baseUrl . '/meme-library',
|
||||
'url' => $baseUrl.'/meme-library',
|
||||
'priority' => 0.9,
|
||||
'changeFrequency' => Url::CHANGE_FREQUENCY_DAILY,
|
||||
'lastModificationDate' => now(),
|
||||
],
|
||||
[
|
||||
'url' => $baseUrl . '/privacy',
|
||||
'url' => $baseUrl.'/privacy',
|
||||
'priority' => 0.3,
|
||||
'changeFrequency' => Url::CHANGE_FREQUENCY_YEARLY,
|
||||
'lastModificationDate' => now()->subMonths(6), // Adjust based on when you last updated
|
||||
],
|
||||
[
|
||||
'url' => $baseUrl . '/terms',
|
||||
'url' => $baseUrl.'/terms',
|
||||
'priority' => 0.3,
|
||||
'changeFrequency' => Url::CHANGE_FREQUENCY_YEARLY,
|
||||
'lastModificationDate' => now()->subMonths(6), // Adjust based on when you last updated
|
||||
],
|
||||
[
|
||||
'url' => $baseUrl . '/dmca-copyright',
|
||||
'url' => $baseUrl.'/dmca-copyright',
|
||||
'priority' => 0.2,
|
||||
'changeFrequency' => Url::CHANGE_FREQUENCY_YEARLY,
|
||||
'lastModificationDate' => now()->subMonths(6), // Adjust based on when you last updated
|
||||
@@ -70,9 +71,9 @@ public function handle(): int
|
||||
$sitemapPath = public_path('sitemap_static.xml');
|
||||
$sitemap->writeToFile($sitemapPath);
|
||||
|
||||
$this->info("Static sitemap generated successfully!");
|
||||
$this->info('Static sitemap generated successfully!');
|
||||
$this->info("Sitemap saved to: {$sitemapPath}");
|
||||
$this->info("Total URLs: " . count($staticPages));
|
||||
$this->info('Total URLs: '.count($staticPages));
|
||||
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
@@ -18,9 +18,7 @@
|
||||
* fileContent, url, mode, fileName, disk, name, userId, mimeType)
|
||||
*/
|
||||
|
||||
namespace App\Examples;
|
||||
|
||||
use App\Helpers\FirstParty\MediaEngine\MediaEngine;
|
||||
namespace App\Helpers\FirstParty\MediaEngine;
|
||||
|
||||
class MediaEngineExampleCodes
|
||||
{
|
||||
|
||||
@@ -49,6 +49,14 @@ public function index()
|
||||
private function getFaqData()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'q' => 'What is MEMEFA.ST?',
|
||||
'a' => 'MEMEFA.ST is a simple & fast meme video editor, 100% powered by the web. You can now quickly create and export video memes for TikTok, Youtube Shorts, Instagram Reels channel, or just share with your friends in WhatsApp, Discord, Facebook Messenger, Telegram, etc!',
|
||||
],
|
||||
[
|
||||
'q' => 'Why did you made MEMEFA.ST?',
|
||||
'a' => "<a target=\"blank\" class=\"underline\" href=\"https://x.com/charlestehio\">Charles</a> here, creator of MEMEFA.ST. I like making fun memes to troll my friends, and I decided that there needs to be a faster solution than popular video editors like CapCut and Adobe Premiere Pro.<br><br>Thanks to today's web technology, we can now leverage the power of the web to create and export meme videos in minutes! Isn't that awesome?",
|
||||
],
|
||||
[
|
||||
'q' => 'How can I create a meme video?',
|
||||
'a' => 'Use the video editor on top to start making your meme!<br><br>Edit your caption, background and meme. Once satisfied, press the Export button to download your video!',
|
||||
@@ -63,7 +71,7 @@ private function getFaqData()
|
||||
],
|
||||
[
|
||||
'q' => 'What video format do you export?',
|
||||
'a' => 'We export high-quality MP4 videos optimized for all social media platforms in 9:16 format.<br><br>This is compatible for TikTok, Youtube Shorts, Instagram Reels, and more.',
|
||||
'a' => 'We export high-quality 720p MP4 videos optimized for all social media platforms in 9:16 format.<br><br>This is compatible for TikTok, Youtube Shorts, Instagram Reels, and more.',
|
||||
],
|
||||
[
|
||||
'q' => 'Is there a mobile app?',
|
||||
|
||||
@@ -8,27 +8,43 @@
|
||||
use App\Models\MemeMedia;
|
||||
use App\Services\TrackingAnalyticsService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class FrontMediaController extends Controller
|
||||
{
|
||||
public function init(Request $request)
|
||||
{
|
||||
$meme = Meme::with('meme_media', 'background_media')->where('status', MemeGenerator::STATUS_COMPLETED)->inRandomOrder()->first();
|
||||
$skipCache = $request->input('sc') == '1';
|
||||
$cacheKey = 'front_media_init';
|
||||
|
||||
$meme_media = MemeGenerator::getSuitableMemeMedia($meme, 15);
|
||||
if (! $skipCache && Cache::has($cacheKey)) {
|
||||
return response()->json(Cache::get($cacheKey));
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
// $meme = Meme::with('meme_media', 'background_media')->where('status', MemeGenerator::STATUS_COMPLETED)->inRandomOrder()->first();
|
||||
|
||||
$meme_media = MemeMedia::where('type', 'video')->where('sub_type', 'overlay')->take(1)->inRandomOrder()->first();
|
||||
|
||||
$background_media = BackgroundMedia::where('status', 'completed')->take(1)->inRandomOrder()->first();
|
||||
|
||||
$response = [
|
||||
'success' => [
|
||||
'data' => [
|
||||
'init' => [
|
||||
'info' => $meme,
|
||||
'caption' => $meme->caption,
|
||||
// 'info' => $meme,
|
||||
'caption' => 'Add your caption here',
|
||||
'meme' => $meme_media,
|
||||
'background' => $meme->background_media,
|
||||
'background' => $background_media,
|
||||
],
|
||||
],
|
||||
],
|
||||
]);
|
||||
];
|
||||
|
||||
if (! $skipCache) {
|
||||
Cache::put($cacheKey, $response, 300); // Cache for 5 minutes
|
||||
}
|
||||
|
||||
return response()->json($response);
|
||||
}
|
||||
|
||||
public function memes(Request $request)
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Services\MemeMediaService;
|
||||
use Artesaos\SEOTools\Facades\SEOMeta;
|
||||
use Artesaos\SEOTools\Facades\OpenGraph;
|
||||
use Artesaos\SEOTools\Facades\SEOMeta;
|
||||
use Artesaos\SEOTools\Facades\TwitterCard;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response as HttpResponse;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Intervention\Image\ImageManager;
|
||||
use Intervention\Image\Drivers\Imagick\Driver;
|
||||
use Intervention\Image\ImageManager;
|
||||
|
||||
class FrontMemeController extends Controller
|
||||
{
|
||||
@@ -28,6 +28,7 @@ public function search(string $search): Response
|
||||
{
|
||||
// Convert + back to spaces for search
|
||||
$searchTerm = str_replace('+', ' ', $search);
|
||||
|
||||
return $this->getMemes($searchTerm);
|
||||
}
|
||||
|
||||
@@ -36,7 +37,7 @@ private function getMemes(?string $search = null): Response
|
||||
$memes = $this->memeMediaService->searchMemes($search, 24);
|
||||
|
||||
// Set up SEO meta tags
|
||||
$title = $search ? ucfirst($search) . " Memes in MEMEFA.ST" : 'Meme Library - Thousands of Video Meme Templates';
|
||||
$title = $search ? ucfirst($search).' Memes in MEMEFA.ST' : 'Meme Library - Thousands of Video Meme Templates';
|
||||
|
||||
if ($search) {
|
||||
// Get SEO descriptions from config
|
||||
@@ -138,12 +139,12 @@ public function generateOG(string $ids): HttpResponse
|
||||
// Load the template image
|
||||
$templatePath = public_path('memefast-og-template.jpg');
|
||||
|
||||
if (!file_exists($templatePath)) {
|
||||
if (! file_exists($templatePath)) {
|
||||
abort(404, 'Template image not found');
|
||||
}
|
||||
|
||||
// Create ImageManager with Imagick driver
|
||||
$manager = new ImageManager(new Driver());
|
||||
$manager = new ImageManager(new Driver);
|
||||
|
||||
// Load the template image
|
||||
$image = $manager->read($templatePath);
|
||||
@@ -180,7 +181,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
// Place the meme image vertically centered, horizontally right-justified
|
||||
$image->place($memeImage, 'center-right', $imageX, $imageY);
|
||||
} else {
|
||||
$image->text('HTTP Error: ' . $httpCode, 200, 200, function ($font) {
|
||||
$image->text('HTTP Error: '.$httpCode, 200, 200, function ($font) {
|
||||
$font->size(20);
|
||||
$font->color('#ff0000');
|
||||
$font->align('center');
|
||||
@@ -188,7 +189,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
// If meme image fails to load, add debug text
|
||||
$image->text('Image failed to load: ' . $e->getMessage(), 200, 200, function ($font) {
|
||||
$image->text('Image failed to load: '.$e->getMessage(), 200, 200, function ($font) {
|
||||
$font->size(20);
|
||||
$font->color('#ff0000');
|
||||
$font->align('center');
|
||||
@@ -206,7 +207,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
$imagick = $image->core()->native(); // Get the native Imagick object
|
||||
|
||||
// First draw the green outline
|
||||
$drawOutline = new \ImagickDraw();
|
||||
$drawOutline = new \ImagickDraw;
|
||||
$drawOutline->setFillColor('#00FF00');
|
||||
$drawOutline->setFont($fontPath);
|
||||
$drawOutline->setFontSize(70);
|
||||
@@ -215,16 +216,16 @@ public function generateOG(string $ids): HttpResponse
|
||||
$drawOutline->setStrokeWidth(20); // Thicker stroke for outline effect
|
||||
|
||||
// Then draw the black text on top
|
||||
$draw = new \ImagickDraw();
|
||||
$draw = new \ImagickDraw;
|
||||
$draw->setFillColor('#000000');
|
||||
$draw->setFont($fontPath);
|
||||
$draw->setFontSize(70);
|
||||
//$draw->setTextKerning(-4); // Negative for tighter kerning
|
||||
// $draw->setTextKerning(-4); // Negative for tighter kerning
|
||||
$draw->setTextAlignment(\Imagick::ALIGN_LEFT);
|
||||
|
||||
// Text wrapping - 70% of canvas width (1600 * 0.7 = 1120px)
|
||||
$maxWidth = 1120;
|
||||
$text = "Make meme videos instantly with " . $meme->name . " meme with";
|
||||
$text = 'Make meme videos instantly with '.$meme->name.' meme with';
|
||||
|
||||
// Split text into words
|
||||
$words = explode(' ', $text);
|
||||
@@ -232,7 +233,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
$currentLine = '';
|
||||
|
||||
foreach ($words as $word) {
|
||||
$testLine = $currentLine . ($currentLine ? ' ' : '') . $word;
|
||||
$testLine = $currentLine.($currentLine ? ' ' : '').$word;
|
||||
|
||||
// Get text metrics for the test line
|
||||
$metrics = $imagick->queryFontMetrics($draw, $testLine);
|
||||
@@ -251,7 +252,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
$lines[] = $currentLine;
|
||||
}
|
||||
|
||||
$lines[] .= "MEMEFAST";
|
||||
$lines[] .= 'MEMEFAST';
|
||||
|
||||
// Text positioning variables
|
||||
$textX = 100; // Horizontal position
|
||||
@@ -267,7 +268,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
$y = $startY + ($index * $lineHeight);
|
||||
|
||||
// Check if this is the MEMEFA.ST line
|
||||
if ($line === "MEMEFAST") {
|
||||
if ($line === 'MEMEFAST') {
|
||||
|
||||
$extraSizing = 40;
|
||||
|
||||
@@ -276,7 +277,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
|
||||
if (file_exists($bungeeFontPath)) {
|
||||
// Create separate draw objects for Bungee font
|
||||
$bungeeOutline = new \ImagickDraw();
|
||||
$bungeeOutline = new \ImagickDraw;
|
||||
$bungeeOutline->setFillColor('#00FF00');
|
||||
$bungeeOutline->setFont($bungeeFontPath);
|
||||
$bungeeOutline->setFontSize(70);
|
||||
@@ -284,7 +285,7 @@ public function generateOG(string $ids): HttpResponse
|
||||
$bungeeOutline->setStrokeColor('#00FF00');
|
||||
$bungeeOutline->setStrokeWidth(20);
|
||||
|
||||
$bungeeText = new \ImagickDraw();
|
||||
$bungeeText = new \ImagickDraw;
|
||||
$bungeeText->setFillColor('#000000');
|
||||
$bungeeText->setFont($bungeeFontPath);
|
||||
$bungeeText->setFontSize(70 + $extraSizing);
|
||||
@@ -321,7 +322,6 @@ public function generateOG(string $ids): HttpResponse
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Generate the image and return as response
|
||||
$encodedImage = $image->toJpeg(100);
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Artesaos\SEOTools\Facades\SEOMeta;
|
||||
use Artesaos\SEOTools\Facades\OpenGraph;
|
||||
use Artesaos\SEOTools\Facades\SEOMeta;
|
||||
use Artesaos\SEOTools\Facades\TwitterCard;
|
||||
use Illuminate\Support\Str;
|
||||
use Inertia\Inertia;
|
||||
|
||||
@@ -80,7 +80,7 @@ class MemeMedia extends Model
|
||||
'type',
|
||||
'sub_type',
|
||||
'original_id',
|
||||
//'description',
|
||||
// 'description',
|
||||
'mov_uuid',
|
||||
'webm_uuid',
|
||||
'gif_uuid',
|
||||
@@ -98,7 +98,7 @@ class MemeMedia extends Model
|
||||
protected function ids(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
get: fn($value, $attributes) => hashids_encode($attributes['id']),
|
||||
get: fn ($value, $attributes) => hashids_encode($attributes['id']),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public function findByHashIds(string $ids): MemeMedia
|
||||
{
|
||||
$memeId = hashids_decode($ids);
|
||||
|
||||
if (!$memeId) {
|
||||
if (! $memeId) {
|
||||
throw new ModelNotFoundException('Meme not found');
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"appstract/laravel-opcache": "^4.0",
|
||||
"artesaos/seotools": "^1.3",
|
||||
"inertiajs/inertia-laravel": "^2.0",
|
||||
"intervention/image": "^3.11",
|
||||
@@ -18,6 +19,7 @@
|
||||
"laravel/cashier": "^15.7",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/horizon": "^5.31",
|
||||
"laravel/nightwatch": "^1.10",
|
||||
"laravel/sanctum": "^4.0",
|
||||
"laravel/socialite": "^5.21",
|
||||
"laravel/tinker": "^2.10.1",
|
||||
@@ -33,6 +35,7 @@
|
||||
"vinkla/hashids": "^13.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"barryvdh/laravel-debugbar": "^3.15",
|
||||
"barryvdh/laravel-ide-helper": "^3.5",
|
||||
"fakerphp/faker": "^1.23",
|
||||
"laravel/pail": "^1.2.2",
|
||||
|
||||
305
composer.lock
generated
305
composer.lock
generated
@@ -4,8 +4,70 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "79a02fbcd504e47b61331dad19bd62a0",
|
||||
"content-hash": "ef78ce386c5eee35cd5edc8050dff263",
|
||||
"packages": [
|
||||
{
|
||||
"name": "appstract/laravel-opcache",
|
||||
"version": "4.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appstract/laravel-opcache.git",
|
||||
"reference": "d2ce88cddda6af54c14d1f9ceaaf94b54f38f9d3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/appstract/laravel-opcache/zipball/d2ce88cddda6af54c14d1f9ceaaf94b54f38f9d3",
|
||||
"reference": "d2ce88cddda6af54c14d1f9ceaaf94b54f38f9d3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/guzzle": "^6.3.1|^7.0",
|
||||
"laravel/framework": ">=7.0",
|
||||
"php": ">=7.2.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "^5.0",
|
||||
"phpunit/phpunit": "^8.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Appstract\\Opcache\\OpcacheServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Appstract\\Opcache\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Olav van Schie",
|
||||
"email": "mail@appstract.nl",
|
||||
"homepage": "https://appstract.nl",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "PHP OPcache Artisan commands for Laravel.",
|
||||
"homepage": "https://github.com/appstract/laravel-opcache",
|
||||
"keywords": [
|
||||
"Opcache",
|
||||
"appstract",
|
||||
"laravel",
|
||||
"php"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/appstract/laravel-opcache/issues",
|
||||
"source": "https://github.com/appstract/laravel-opcache/tree/4.0.2"
|
||||
},
|
||||
"time": "2020-12-01T16:12:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "artesaos/seotools",
|
||||
"version": "v1.3.2",
|
||||
@@ -2477,6 +2539,92 @@
|
||||
},
|
||||
"time": "2025-04-18T12:57:39+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/nightwatch",
|
||||
"version": "v1.10.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/nightwatch.git",
|
||||
"reference": "075c2cd68cb2fbfa460799d1d24c10d0abbdb2fb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/nightwatch/zipball/075c2cd68cb2fbfa460799d1d24c10d0abbdb2fb",
|
||||
"reference": "075c2cd68cb2fbfa460799d1d24c10d0abbdb2fb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-zlib": "*",
|
||||
"guzzlehttp/promises": "^2.0",
|
||||
"laravel/framework": "^10.0|^11.0|^12.0",
|
||||
"monolog/monolog": "^3.0",
|
||||
"nesbot/carbon": "^2.0|^3.0",
|
||||
"php": "^8.2",
|
||||
"psr/http-message": "^1.0|^2.0",
|
||||
"psr/log": "^1.0|^2.0|^3.0",
|
||||
"symfony/console": "^6.0|^7.0",
|
||||
"symfony/http-foundation": "^6.0|^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"aws/aws-sdk-php": "^3.349",
|
||||
"ext-pdo": "*",
|
||||
"guzzlehttp/guzzle": "^7.0",
|
||||
"guzzlehttp/psr7": "^2.0",
|
||||
"laravel/horizon": "^5.4",
|
||||
"laravel/pint": "1.21.0",
|
||||
"laravel/vapor-core": "^2.38.2",
|
||||
"livewire/livewire": "^2.0|^3.0",
|
||||
"mockery/mockery": "^1.0",
|
||||
"mongodb/laravel-mongodb": "^4.0|^5.0",
|
||||
"orchestra/testbench": "^8.0|^9.0|^10.0",
|
||||
"orchestra/testbench-core": "^8.0|^9.0|^10.0",
|
||||
"orchestra/workbench": "^8.0|^9.0|^10.0",
|
||||
"phpstan/phpstan": "^1.0",
|
||||
"phpunit/phpunit": "^10.0|^11.0",
|
||||
"ramsey/uuid": "^4.0",
|
||||
"singlestoredb/singlestoredb-laravel": "^1.0|^2.0",
|
||||
"spatie/laravel-ignition": "^2.0",
|
||||
"symfony/mailer": "^6.0|^7.0",
|
||||
"symfony/mime": "^6.0|^7.0",
|
||||
"symfony/var-dumper": "^6.0|^7.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Laravel\\Nightwatch\\NightwatchServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Laravel\\Nightwatch\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Taylor Otwell",
|
||||
"email": "taylor@laravel.com"
|
||||
}
|
||||
],
|
||||
"description": "The official Laravel Nightwatch package.",
|
||||
"homepage": "https://nightwatch.laravel.com",
|
||||
"keywords": [
|
||||
"Insights",
|
||||
"laravel",
|
||||
"monitoring"
|
||||
],
|
||||
"support": {
|
||||
"docs": "https://nightwatch.laravel.com/docs",
|
||||
"issues": "https://github.com/laravel/nightwatch/issues",
|
||||
"source": "https://github.com/laravel/nightwatch"
|
||||
},
|
||||
"time": "2025-07-08T01:29:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/prompts",
|
||||
"version": "v0.3.5",
|
||||
@@ -9711,6 +9859,91 @@
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.15.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-debugbar.git",
|
||||
"reference": "c0667ea91f7185f1e074402c5788195e96bf8106"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/c0667ea91f7185f1e074402c5788195e96bf8106",
|
||||
"reference": "c0667ea91f7185f1e074402c5788195e96bf8106",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/routing": "^9|^10|^11|^12",
|
||||
"illuminate/session": "^9|^10|^11|^12",
|
||||
"illuminate/support": "^9|^10|^11|^12",
|
||||
"php": "^8.1",
|
||||
"php-debugbar/php-debugbar": "~2.1.1",
|
||||
"symfony/finder": "^6|^7"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.3.3",
|
||||
"orchestra/testbench-dusk": "^7|^8|^9|^10",
|
||||
"phpunit/phpunit": "^9.5.10|^10|^11",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"aliases": {
|
||||
"Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
|
||||
},
|
||||
"providers": [
|
||||
"Barryvdh\\Debugbar\\ServiceProvider"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "3.15-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Barryvdh\\Debugbar\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "PHP Debugbar integration for Laravel",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debugbar",
|
||||
"dev",
|
||||
"laravel",
|
||||
"profiler",
|
||||
"webprofiler"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
|
||||
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.15.4"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://fruitcake.nl",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/barryvdh",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-04-16T06:32:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-ide-helper",
|
||||
"version": "v3.5.5",
|
||||
@@ -11448,6 +11681,76 @@
|
||||
},
|
||||
"time": "2022-02-21T01:04:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-debugbar/php-debugbar",
|
||||
"version": "v2.1.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-debugbar/php-debugbar.git",
|
||||
"reference": "16fa68da5617220594aa5e33fa9de415f94784a0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/16fa68da5617220594aa5e33fa9de415f94784a0",
|
||||
"reference": "16fa68da5617220594aa5e33fa9de415f94784a0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^8",
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/var-dumper": "^4|^5|^6|^7"
|
||||
},
|
||||
"require-dev": {
|
||||
"dbrekelmans/bdi": "^1",
|
||||
"phpunit/phpunit": "^8|^9",
|
||||
"symfony/panther": "^1|^2.1",
|
||||
"twig/twig": "^1.38|^2.7|^3.0"
|
||||
},
|
||||
"suggest": {
|
||||
"kriswallsmith/assetic": "The best way to manage assets",
|
||||
"monolog/monolog": "Log using Monolog",
|
||||
"predis/predis": "Redis storage"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"DebugBar\\": "src/DebugBar/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Maxime Bouroumeau-Fuseau",
|
||||
"email": "maxime.bouroumeau@gmail.com",
|
||||
"homepage": "http://maximebf.com"
|
||||
},
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Debug bar in the browser for php application",
|
||||
"homepage": "https://github.com/php-debugbar/php-debugbar",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debug bar",
|
||||
"debugbar",
|
||||
"dev"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/php-debugbar/php-debugbar/issues",
|
||||
"source": "https://github.com/php-debugbar/php-debugbar/tree/v2.1.6"
|
||||
},
|
||||
"time": "2025-02-21T17:47:03+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "2.2.0",
|
||||
|
||||
30
config/opcache.php
Normal file
30
config/opcache.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'url' => env('OPCACHE_URL', config('app.url')),
|
||||
'prefix' => 'opcache-api',
|
||||
'verify' => true,
|
||||
'headers' => [],
|
||||
'directories' => [
|
||||
base_path('app'),
|
||||
base_path('bootstrap'),
|
||||
base_path('public'),
|
||||
base_path('resources'),
|
||||
base_path('routes'),
|
||||
base_path('storage'),
|
||||
base_path('vendor'),
|
||||
],
|
||||
'exclude' => [
|
||||
'test',
|
||||
'Test',
|
||||
'tests',
|
||||
'Tests',
|
||||
'stub',
|
||||
'Stub',
|
||||
'stubs',
|
||||
'Stubs',
|
||||
'dumper',
|
||||
'Dumper',
|
||||
'Autoload',
|
||||
],
|
||||
];
|
||||
@@ -2,115 +2,115 @@
|
||||
|
||||
return [
|
||||
'search_descriptions' => [
|
||||
"Create hilarious __KEYWORD__ memes with our video editor. Browse __KEYWORD__ memes perfect for sharing on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make funny __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit sharp __KEYWORD__ memes in minutes. Send to friends on WhatsApp, Telegram, Discord. Works great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make clean __KEYWORD__ memes that slay. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Turn clips into solid __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create scroll-stopping __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make short, punchy __KEYWORD__ memes. Send to your group on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit quick __KEYWORD__ memes that hit. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop clean __KEYWORD__ memes online. Send to friends on WhatsApp, Telegram, Discord. Works across TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build smooth __KEYWORD__ memes with ease. Share on WhatsApp, Telegram, Discord. Ready to post on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft tight __KEYWORD__ memes in your browser. Send to group chats on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design fresh __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create polished __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit clean-cut __KEYWORD__ memes with no hassle. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make crisp __KEYWORD__ memes that just work. Send to friends on WhatsApp, Telegram, Discord. Works well on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build meme-ready __KEYWORD__ clips. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft easy __KEYWORD__ memes for short-form. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Generate funny __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop solid __KEYWORD__ memes from your clips. Send to your squad on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make short-form __KEYWORD__ memes that pop. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit no-fuss __KEYWORD__ memes that land. Send to friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create well-paced __KEYWORD__ memes fast. Share on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design sharp-looking __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Turn moments into funny __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make funny __KEYWORD__ memes with MEMEFA.ST! Send to your crew on WhatsApp, Telegram, Discord. Works across TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit fast and funny __KEYWORD__ memes online. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft __KEYWORD__ memes with ease. Send to friends on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build meme edits that feel right. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create scroll-stopping __KEYWORD__ memes in seconds. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make cool, clean __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Fits TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit funny __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop funny __KEYWORD__ memes to your friends. Share on WhatsApp, Telegram, Discord. Format fits TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft fast, fun __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build clean meme formats for __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create cool-looking __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Turn quick ideas into __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Post funny __KEYWORD__ memes to friends. Send on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make feed-friendly __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit short and funny __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect fit for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create fast edits for __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build simple __KEYWORD__ memes that hit. Send to friends on WhatsApp, Telegram, Discord. Works everywhere: TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft no-frills __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit funny, format-ready __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop quick laughs with __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make meme-worthy __KEYWORD__ clips. Send to group chats on WhatsApp, Telegram, Discord. Works best on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create short-form memes with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design TikTok-ready __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Also works for Instagram Reels and YouTube Shorts.",
|
||||
"Build meme videos around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft quick meme edits for __KEYWORD__. Send to your crew on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Generate clean __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make to-the-point __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit compact __KEYWORD__ memes with ease. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create meme videos around __KEYWORD__. Send to friends on WhatsApp, Telegram, Discord. Formats made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop clean meme clips for __KEYWORD__. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build creator-friendly __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make short, solid __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit smooth __KEYWORD__ memes in minutes. Send to group chats on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft low-effort __KEYWORD__ memes that hit. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create fast-turnaround __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design clean meme edits around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build high-replay __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make meme-worthy short videos with __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Great on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop funny clips with __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create instantly watchable __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design videos around __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build ready-to-post __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft on-trend __KEYWORD__ memes fast. Send to your squad on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit memes with __KEYWORD__ that feel current. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create funny __KEYWORD__ clips that loop well. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make clean, short __KEYWORD__ edits. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Drop relatable __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Generate quick meme takes on __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build video memes with __KEYWORD__ in seconds. Send to your crew on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit short meme clips using __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Works for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create smooth meme edits with __KEYWORD__. Send to group chats on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make fast content using __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Craft short-form comedy with __KEYWORD__. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Design meme videos fast with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build scrollable __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Formats made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create short, clever __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit quick takes with __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make watchable meme clips using __KEYWORD__. Share on WhatsApp, Telegram, Discord. Works great on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Turn trends into __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Build fast meme edits featuring __KEYWORD__. Share on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create funny __KEYWORD__ content. Send to your crew on WhatsApp, Telegram, Discord. Works seamlessly across TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit meme videos using __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Match TikTok, Instagram Reels, and YouTube Shorts formats.",
|
||||
"Drop clean __KEYWORD__ content for short-form feeds. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make smart edits with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Generate short-form __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Create meme videos around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Edit short and shareable __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Make well-timed __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Browse funny __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Find hilarious __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Discover trending __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Search cool __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Get fresh __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Pick awesome __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Choose top __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Select viral __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Download funny __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Save hilarious __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Grab trending __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Access cool __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Use fresh __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Watch funny __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"View hilarious __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Stream trending __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Play cool __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.",
|
||||
"Check out fresh __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts."
|
||||
]
|
||||
'Create hilarious __KEYWORD__ memes with our video editor. Browse __KEYWORD__ memes perfect for sharing on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make funny __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit sharp __KEYWORD__ memes in minutes. Send to friends on WhatsApp, Telegram, Discord. Works great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make clean __KEYWORD__ memes that slay. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Turn clips into solid __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create scroll-stopping __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make short, punchy __KEYWORD__ memes. Send to your group on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit quick __KEYWORD__ memes that hit. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop clean __KEYWORD__ memes online. Send to friends on WhatsApp, Telegram, Discord. Works across TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build smooth __KEYWORD__ memes with ease. Share on WhatsApp, Telegram, Discord. Ready to post on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft tight __KEYWORD__ memes in your browser. Send to group chats on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design fresh __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create polished __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit clean-cut __KEYWORD__ memes with no hassle. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make crisp __KEYWORD__ memes that just work. Send to friends on WhatsApp, Telegram, Discord. Works well on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build meme-ready __KEYWORD__ clips. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft easy __KEYWORD__ memes for short-form. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Generate funny __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop solid __KEYWORD__ memes from your clips. Send to your squad on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make short-form __KEYWORD__ memes that pop. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit no-fuss __KEYWORD__ memes that land. Send to friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create well-paced __KEYWORD__ memes fast. Share on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design sharp-looking __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Turn moments into funny __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make funny __KEYWORD__ memes with MEMEFA.ST! Send to your crew on WhatsApp, Telegram, Discord. Works across TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit fast and funny __KEYWORD__ memes online. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft __KEYWORD__ memes with ease. Send to friends on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build meme edits that feel right. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create scroll-stopping __KEYWORD__ memes in seconds. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make cool, clean __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Fits TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit funny __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop funny __KEYWORD__ memes to your friends. Share on WhatsApp, Telegram, Discord. Format fits TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft fast, fun __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build clean meme formats for __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create cool-looking __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Turn quick ideas into __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Post funny __KEYWORD__ memes to friends. Send on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make feed-friendly __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit short and funny __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect fit for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create fast edits for __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build simple __KEYWORD__ memes that hit. Send to friends on WhatsApp, Telegram, Discord. Works everywhere: TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft no-frills __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit funny, format-ready __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop quick laughs with __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make meme-worthy __KEYWORD__ clips. Send to group chats on WhatsApp, Telegram, Discord. Works best on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create short-form memes with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design TikTok-ready __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Also works for Instagram Reels and YouTube Shorts.',
|
||||
'Build meme videos around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft quick meme edits for __KEYWORD__. Send to your crew on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Generate clean __KEYWORD__ memes fast. Share with friends on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make to-the-point __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit compact __KEYWORD__ memes with ease. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create meme videos around __KEYWORD__. Send to friends on WhatsApp, Telegram, Discord. Formats made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop clean meme clips for __KEYWORD__. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build creator-friendly __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Ideal for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make short, solid __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit smooth __KEYWORD__ memes in minutes. Send to group chats on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft low-effort __KEYWORD__ memes that hit. Share on WhatsApp, Telegram, Discord. Designed for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create fast-turnaround __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design clean meme edits around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build high-replay __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make meme-worthy short videos with __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Great on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop funny clips with __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create instantly watchable __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design videos around __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build ready-to-post __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft on-trend __KEYWORD__ memes fast. Send to your squad on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit memes with __KEYWORD__ that feel current. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create funny __KEYWORD__ clips that loop well. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make clean, short __KEYWORD__ edits. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Drop relatable __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Generate quick meme takes on __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build video memes with __KEYWORD__ in seconds. Send to your crew on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit short meme clips using __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Works for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create smooth meme edits with __KEYWORD__. Send to group chats on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make fast content using __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Craft short-form comedy with __KEYWORD__. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Design meme videos fast with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Best for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build scrollable __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Formats made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create short, clever __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit quick takes with __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make watchable meme clips using __KEYWORD__. Share on WhatsApp, Telegram, Discord. Works great on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Turn trends into __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Build fast meme edits featuring __KEYWORD__. Share on WhatsApp, Telegram, Discord. For TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create funny __KEYWORD__ content. Send to your crew on WhatsApp, Telegram, Discord. Works seamlessly across TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit meme videos using __KEYWORD__. Share with friends on WhatsApp, Telegram, Discord. Match TikTok, Instagram Reels, and YouTube Shorts formats.',
|
||||
'Drop clean __KEYWORD__ content for short-form feeds. Send to group chats on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make smart edits with __KEYWORD__. Share on WhatsApp, Telegram, Discord. Optimized for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Generate short-form __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Create meme videos around __KEYWORD__. Share on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Edit short and shareable __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Post to TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Make well-timed __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Browse funny __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Find hilarious __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Discover trending __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Search cool __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Get fresh __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Pick awesome __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Choose top __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Select viral __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Download funny __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Save hilarious __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Grab trending __KEYWORD__ memes. Send to your squad on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Access cool __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Use fresh __KEYWORD__ memes. Send to group chats on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Watch funny __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Perfect for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'View hilarious __KEYWORD__ memes. Send to friends on WhatsApp, Telegram, Discord. Built for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Stream trending __KEYWORD__ memes. Share on WhatsApp, Telegram, Discord. Works on TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Play cool __KEYWORD__ memes. Send to your crew on WhatsApp, Telegram, Discord. Made for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
'Check out fresh __KEYWORD__ memes. Share with friends on WhatsApp, Telegram, Discord. Great for TikTok, Instagram Reels, and YouTube Shorts.',
|
||||
],
|
||||
];
|
||||
@@ -3,8 +3,8 @@
|
||||
/**
|
||||
* @see https://github.com/artesaos/seotools
|
||||
*/
|
||||
$title = 'MEMEFAST: Make meme in seconds';
|
||||
$description = 'Simple & fast meme video editor';
|
||||
$title = 'MEMEFAST: Make meme videos right in your browser';
|
||||
$description = 'Simple & fast meme video editor, 100% powered by the web.';
|
||||
|
||||
return [
|
||||
'inertia' => env('SEO_TOOLS_INERTIA', false),
|
||||
|
||||
@@ -50,7 +50,7 @@ public function run(): void
|
||||
$this->ensureMediaCollectionExists();
|
||||
|
||||
// Read CSV file
|
||||
$csv_path = database_path('seeders/data/g2.csv');
|
||||
$csv_path = database_path('seeders/data/aura-farming.csv');
|
||||
$meme_data = $this->parseCsvFile($csv_path);
|
||||
|
||||
$this->command->info('📊 Found '.count($meme_data).' memes to import');
|
||||
|
||||
2
database/seeders/data/aura-farming.csv
Normal file
2
database/seeders/data/aura-farming.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
"filename","type","sub_type","name","description","audio_description","keywords","media_1_mime_type"
|
||||
"aura-farming.webm","video","overlay","Kid Aura Farming on Boat","Indonesian kid performs aura farming move during the Indonesian annual boat racing competition","","aura,farming,aura farming,indonesian,boat racing,young black & rich,melly mike,dancing kid","video/webm"
|
||||
|
@@ -0,0 +1 @@
|
||||
f2bbaff90bdd47cbb4d0bd50d4f4ffa3
|
||||
10
public/logo/memefast-text-logo.svg
Normal file
10
public/logo/memefast-text-logo.svg
Normal file
@@ -0,0 +1,10 @@
|
||||
<svg width="221" height="29" viewBox="0 0 221 29" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.4 28.8H1.44C0.933333 28.8 0.56 28.6933 0.32 28.48C0.106667 28.24 0 27.8667 0 27.36V1.44C0 0.933334 0.106667 0.573334 0.32 0.36C0.56 0.12 0.933333 0 1.44 0H7.88C8.30667 0 8.65333 0.0933329 8.92 0.279999C9.21333 0.466666 9.48 0.773333 9.72 1.2L13.32 7.72C13.4533 7.96 13.56 8.13333 13.64 8.24C13.7467 8.34667 13.88 8.4 14.04 8.4H14.4C14.56 8.4 14.68 8.34667 14.76 8.24C14.8667 8.13333 14.9867 7.96 15.12 7.72L18.68 1.2C18.92 0.773333 19.1733 0.466666 19.44 0.279999C19.7333 0.0933329 20.0933 0 20.52 0H27C27.5067 0 27.8667 0.12 28.08 0.36C28.32 0.573334 28.44 0.933334 28.44 1.44V27.36C28.44 27.8667 28.32 28.24 28.08 28.48C27.8667 28.6933 27.5067 28.8 27 28.8H20.84C20.3333 28.8 19.96 28.6933 19.72 28.48C19.5067 28.24 19.4 27.8667 19.4 27.36V13.28L17.04 17.64C16.8 18.0933 16.5067 18.4267 16.16 18.64C15.84 18.8267 15.4267 18.92 14.92 18.92H13.32C12.8133 18.92 12.3867 18.8267 12.04 18.64C11.72 18.4267 11.44 18.0933 11.2 17.64L8.84 13.28V27.36C8.84 27.8667 8.72 28.24 8.48 28.48C8.26667 28.6933 7.90667 28.8 7.4 28.8Z" fill="black"/>
|
||||
<path d="M53.9453 28.8H35.3853C34.8786 28.8 34.5053 28.6933 34.2653 28.48C34.052 28.24 33.9453 27.8667 33.9453 27.36V1.44C33.9453 0.933334 34.052 0.573334 34.2653 0.36C34.5053 0.12 34.8786 0 35.3853 0H53.9453C54.452 0 54.812 0.12 55.0253 0.36C55.2653 0.573334 55.3853 0.933334 55.3853 1.44V6.12C55.3853 6.62667 55.2653 7 55.0253 7.24C54.812 7.45333 54.452 7.56 53.9453 7.56H42.9053V10.64H50.7053C51.212 10.64 51.572 10.76 51.7853 11C52.0253 11.2133 52.1453 11.5733 52.1453 12.08V16.36C52.1453 16.8667 52.0253 17.24 51.7853 17.48C51.572 17.6933 51.212 17.8 50.7053 17.8H42.9053V21.24H53.9453C54.452 21.24 54.812 21.36 55.0253 21.6C55.2653 21.8133 55.3853 22.1733 55.3853 22.68V27.36C55.3853 27.8667 55.2653 28.24 55.0253 28.48C54.812 28.6933 54.452 28.8 53.9453 28.8Z" fill="black"/>
|
||||
<path d="M67.5172 28.8H61.5572C61.0505 28.8 60.6772 28.6933 60.4372 28.48C60.2239 28.24 60.1172 27.8667 60.1172 27.36V1.44C60.1172 0.933334 60.2239 0.573334 60.4372 0.36C60.6772 0.12 61.0505 0 61.5572 0H67.9972C68.4239 0 68.7705 0.0933329 69.0372 0.279999C69.3305 0.466666 69.5972 0.773333 69.8372 1.2L73.4372 7.72C73.5705 7.96 73.6772 8.13333 73.7572 8.24C73.8639 8.34667 73.9972 8.4 74.1572 8.4H74.5172C74.6772 8.4 74.7972 8.34667 74.8772 8.24C74.9839 8.13333 75.1039 7.96 75.2372 7.72L78.7972 1.2C79.0372 0.773333 79.2905 0.466666 79.5572 0.279999C79.8505 0.0933329 80.2105 0 80.6372 0H87.1172C87.6239 0 87.9839 0.12 88.1972 0.36C88.4372 0.573334 88.5572 0.933334 88.5572 1.44V27.36C88.5572 27.8667 88.4372 28.24 88.1972 28.48C87.9839 28.6933 87.6239 28.8 87.1172 28.8H80.9572C80.4505 28.8 80.0772 28.6933 79.8372 28.48C79.6239 28.24 79.5172 27.8667 79.5172 27.36V13.28L77.1572 17.64C76.9172 18.0933 76.6239 18.4267 76.2772 18.64C75.9572 18.8267 75.5439 18.92 75.0372 18.92H73.4372C72.9305 18.92 72.5039 18.8267 72.1572 18.64C71.8372 18.4267 71.5572 18.0933 71.3172 17.64L68.9572 13.28V27.36C68.9572 27.8667 68.8372 28.24 68.5972 28.48C68.3839 28.6933 68.0239 28.8 67.5172 28.8Z" fill="black"/>
|
||||
<path d="M114.062 28.8H95.5025C94.9958 28.8 94.6225 28.6933 94.3825 28.48C94.1692 28.24 94.0625 27.8667 94.0625 27.36V1.44C94.0625 0.933334 94.1692 0.573334 94.3825 0.36C94.6225 0.12 94.9958 0 95.5025 0H114.062C114.569 0 114.929 0.12 115.143 0.36C115.383 0.573334 115.503 0.933334 115.503 1.44V6.12C115.503 6.62667 115.383 7 115.143 7.24C114.929 7.45333 114.569 7.56 114.062 7.56H103.022V10.64H110.823C111.329 10.64 111.689 10.76 111.903 11C112.143 11.2133 112.263 11.5733 112.263 12.08V16.36C112.263 16.8667 112.143 17.24 111.903 17.48C111.689 17.6933 111.329 17.8 110.823 17.8H103.022V21.24H114.062C114.569 21.24 114.929 21.36 115.143 21.6C115.383 21.8133 115.503 22.1733 115.503 22.68V27.36C115.503 27.8667 115.383 28.24 115.143 28.48C114.929 28.6933 114.569 28.8 114.062 28.8Z" fill="black"/>
|
||||
<path d="M127.874 28.8H121.674C121.168 28.8 120.794 28.6933 120.554 28.48C120.341 28.24 120.234 27.8667 120.234 27.36V1.44C120.234 0.933334 120.341 0.573334 120.554 0.36C120.794 0.12 121.168 0 121.674 0H139.514C140.021 0 140.381 0.12 140.594 0.36C140.834 0.573334 140.954 0.933334 140.954 1.44V6.2C140.954 6.70667 140.834 7.08 140.594 7.32C140.381 7.53333 140.021 7.64 139.514 7.64H129.314V11.8H136.274C136.781 11.8 137.141 11.92 137.354 12.16C137.594 12.3733 137.714 12.7333 137.714 13.24V18.04C137.714 18.5467 137.594 18.92 137.354 19.16C137.141 19.3733 136.781 19.48 136.274 19.48H129.314V27.36C129.314 27.8667 129.194 28.24 128.954 28.48C128.741 28.6933 128.381 28.8 127.874 28.8Z" fill="#00D800"/>
|
||||
<path d="M153.995 8.4L152.115 14.48H158.395L156.515 8.4C156.408 8.16 156.288 7.98667 156.155 7.88C156.048 7.77333 155.915 7.72 155.755 7.72H154.755C154.595 7.72 154.448 7.77333 154.315 7.88C154.208 7.98667 154.101 8.16 153.995 8.4ZM151.715 27.36C151.715 27.8667 151.595 28.24 151.355 28.48C151.141 28.6933 150.781 28.8 150.275 28.8H144.395C143.888 28.8 143.515 28.6933 143.275 28.48C143.061 28.24 142.955 27.8667 142.955 27.36V16.8C142.955 16 143.075 15.08 143.315 14.04C143.581 13 143.981 11.7867 144.515 10.4L147.995 1.32C148.155 0.866666 148.395 0.533333 148.715 0.320001C149.061 0.106667 149.501 0 150.035 0H160.795C161.301 0 161.715 0.106667 162.035 0.320001C162.381 0.533333 162.635 0.866666 162.795 1.32L166.275 10.4C166.808 11.7867 167.195 13 167.435 14.04C167.701 15.08 167.835 16 167.835 16.8V27.36C167.835 27.8667 167.715 28.24 167.475 28.48C167.261 28.6933 166.901 28.8 166.395 28.8H160.355C159.821 28.8 159.421 28.6933 159.155 28.48C158.915 28.24 158.795 27.8667 158.795 27.36V21.76H151.715V27.36Z" fill="#00D800"/>
|
||||
<path d="M186.133 28.8H173.493C172.987 28.8 172.613 28.6933 172.373 28.48C172.16 28.24 172.053 27.8667 172.053 27.36V22.68C172.053 22.1733 172.16 21.8133 172.373 21.6C172.613 21.36 172.987 21.24 173.493 21.24H184.253C184.6 21.24 184.853 21.1333 185.013 20.92C185.2 20.68 185.293 20.4 185.293 20.08C185.293 19.6267 185.2 19.2933 185.013 19.08C184.853 18.8667 184.6 18.7467 184.253 18.72L178.253 17.88C176.387 17.6133 174.88 17 173.733 16.04C172.613 15.08 172.053 13.48 172.053 11.24V7.04C172.053 4.77333 172.787 3.04 174.253 1.84C175.72 0.613333 177.747 0 180.333 0H191.533C192.04 0 192.4 0.12 192.613 0.36C192.853 0.573334 192.973 0.933334 192.973 1.44V6.2C192.973 6.70667 192.853 7.08 192.613 7.32C192.4 7.53333 192.04 7.64 191.533 7.64H182.213C181.867 7.64 181.6 7.76 181.413 8C181.227 8.21333 181.133 8.49333 181.133 8.84C181.133 9.18667 181.227 9.48 181.413 9.72C181.6 9.96 181.867 10.0933 182.213 10.12L188.173 10.92C190.04 11.1867 191.547 11.8 192.693 12.76C193.84 13.72 194.413 15.32 194.413 17.56V21.76C194.413 24.0267 193.667 25.7733 192.173 27C190.707 28.2 188.693 28.8 186.133 28.8Z" fill="#00D800"/>
|
||||
<path d="M211.998 28.8H205.518C205.012 28.8 204.638 28.6933 204.398 28.48C204.185 28.24 204.078 27.8667 204.078 27.36V7.72H198.198C197.692 7.72 197.318 7.61333 197.078 7.4C196.865 7.16 196.758 6.78667 196.758 6.28V1.44C196.758 0.933334 196.865 0.573334 197.078 0.36C197.318 0.12 197.692 0 198.198 0H219.318C219.825 0 220.185 0.12 220.398 0.36C220.638 0.573334 220.758 0.933334 220.758 1.44V6.28C220.758 6.78667 220.638 7.16 220.398 7.4C220.185 7.61333 219.825 7.72 219.318 7.72H213.438V27.36C213.438 27.8667 213.318 28.24 213.078 28.48C212.865 28.6933 212.505 28.8 211.998 28.8Z" fill="#00D800"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.2 KiB |
BIN
resources/.DS_Store
vendored
BIN
resources/.DS_Store
vendored
Binary file not shown.
BIN
resources/fonts/.DS_Store
vendored
BIN
resources/fonts/.DS_Store
vendored
Binary file not shown.
85
resources/js/components/editor/EditorSkeleton.jsx
Normal file
85
resources/js/components/editor/EditorSkeleton.jsx
Normal file
@@ -0,0 +1,85 @@
|
||||
import { useLayoutEffect, useState } from 'react';
|
||||
import { Skeleton } from '@/components/ui/skeleton';
|
||||
import { LAYOUT_CONSTANTS, calculateOptimalMaxWidth, calculateResponsiveWidth, calculateResponsiveScale } from '@/modules/editor/utils/layout-constants';
|
||||
|
||||
// Hook for responsive dimensions (same as Editor)
|
||||
const useResponsiveDimensions = () => {
|
||||
const [dimensions, setDimensions] = useState(() => ({
|
||||
maxWidth: calculateOptimalMaxWidth(),
|
||||
responsiveWidth: calculateResponsiveWidth(),
|
||||
}));
|
||||
|
||||
useLayoutEffect(() => {
|
||||
const newMaxWidth = calculateOptimalMaxWidth();
|
||||
const newResponsiveWidth = calculateResponsiveWidth();
|
||||
setDimensions({
|
||||
maxWidth: newMaxWidth,
|
||||
responsiveWidth: newResponsiveWidth,
|
||||
});
|
||||
}, []);
|
||||
|
||||
return dimensions;
|
||||
};
|
||||
|
||||
// Hook for responsive canvas scale (same as EditorCanvas)
|
||||
const useResponsiveCanvas = (maxWidth = 350) => {
|
||||
const [scale, setScale] = useState(() => calculateResponsiveScale(maxWidth));
|
||||
|
||||
useLayoutEffect(() => {
|
||||
setScale(calculateResponsiveScale(maxWidth));
|
||||
}, [maxWidth]);
|
||||
|
||||
return scale;
|
||||
};
|
||||
|
||||
const EditorSkeleton = () => {
|
||||
const { maxWidth, responsiveWidth } = useResponsiveDimensions();
|
||||
const scale = useResponsiveCanvas(maxWidth);
|
||||
const displayWidth = LAYOUT_CONSTANTS.CANVAS_WIDTH * scale;
|
||||
const displayHeight = LAYOUT_CONSTANTS.CANVAS_HEIGHT * scale;
|
||||
|
||||
return (
|
||||
<div className="relative mx-auto flex min-h-[88vh] flex-col space-y-2" style={{ width: `${responsiveWidth}px` }}>
|
||||
{/* Header Skeleton - EditorHeader currently returns empty <></> */}
|
||||
<div className="mx-auto" style={{ width: `${responsiveWidth}px` }}>
|
||||
{/* Header is empty in actual component, so we skip it */}
|
||||
</div>
|
||||
|
||||
{/* Canvas Skeleton - matching EditorCanvas structure */}
|
||||
<div className="flex w-full justify-center">
|
||||
<div
|
||||
style={{
|
||||
width: `${displayWidth}px`,
|
||||
height: `${displayHeight}px`,
|
||||
}}
|
||||
>
|
||||
<Skeleton
|
||||
className="origin-top-left rounded-3xl border bg-white shadow-sm dark:bg-black bg-gradient-to-r from-muted via-background to-muted bg-[length:200%_100%] animate-shimmer"
|
||||
style={{
|
||||
width: `${LAYOUT_CONSTANTS.CANVAS_WIDTH}px`,
|
||||
height: `${LAYOUT_CONSTANTS.CANVAS_HEIGHT}px`,
|
||||
transform: `scale(${scale})`,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Controls Skeleton - matching EditorControls structure */}
|
||||
<div className="mx-auto flex items-center justify-center gap-2" style={{ width: `${responsiveWidth}px` }}>
|
||||
{/* Play/Pause button */}
|
||||
<Skeleton className="h-12 w-12 rounded-full border shadow-sm bg-gradient-to-r from-muted via-background to-muted bg-[length:200%_100%] animate-shimmer" />
|
||||
|
||||
{/* Edit button */}
|
||||
<Skeleton className="h-12 w-12 rounded-full border shadow-sm bg-gradient-to-r from-muted via-background to-muted bg-[length:200%_100%] animate-shimmer" />
|
||||
|
||||
{/* Refresh button */}
|
||||
<Skeleton className="h-12 w-12 rounded-full border shadow-sm bg-gradient-to-r from-muted via-background to-muted bg-[length:200%_100%] animate-shimmer" />
|
||||
|
||||
{/* Download button */}
|
||||
<Skeleton className="h-12 w-12 rounded-full border shadow-sm bg-gradient-to-r from-muted via-background to-muted bg-[length:200%_100%] animate-shimmer" />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default EditorSkeleton;
|
||||
@@ -119,6 +119,10 @@ const VideoPreview = ({
|
||||
elementRefs,
|
||||
);
|
||||
|
||||
const handleResetClick = () => {
|
||||
emitter.emit('video-reset');
|
||||
};
|
||||
|
||||
// Enhanced stage click handler that also clears guide lines
|
||||
const handleStageClick = (e) => {
|
||||
baseHandleStageClick(e);
|
||||
@@ -281,6 +285,7 @@ const VideoPreview = ({
|
||||
id="open-text-editor"
|
||||
className="h-16 w-16 rounded-full shadow-xl"
|
||||
onClick={() => {
|
||||
handleResetClick();
|
||||
handleElementSelect(element.id);
|
||||
onOpenTextSidebar();
|
||||
}}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { useMitt } from '@/plugins/MittContext';
|
||||
import useVideoEditorStore from '@/stores/VideoEditorStore';
|
||||
import useMediaStore from '@/stores/MediaStore';
|
||||
import { Download, Play, Square, SquarePen, RefreshCw } from 'lucide-react';
|
||||
import useVideoEditorStore from '@/stores/VideoEditorStore';
|
||||
import { Download, Play, RefreshCw, Square, SquarePen } from 'lucide-react';
|
||||
|
||||
const EditorControls = ({ className = '', onEditClick = () => {}, isEditActive = false }) => {
|
||||
const { videoIsPlaying } = useVideoEditorStore();
|
||||
@@ -16,21 +16,28 @@ const EditorControls = ({ className = '', onEditClick = () => {}, isEditActive =
|
||||
emitter.emit('video-play');
|
||||
};
|
||||
|
||||
const handleOnEditClick = () => {
|
||||
handleReset();
|
||||
onEditClick();
|
||||
};
|
||||
|
||||
const handleReset = () => {
|
||||
emitter.emit('video-reset');
|
||||
};
|
||||
|
||||
const handleDownloadButton = () => {
|
||||
handleReset();
|
||||
emitter.emit('video-open-download-modal');
|
||||
};
|
||||
|
||||
const handleAIButton = () => {
|
||||
handleReset();
|
||||
emitter.emit('open-ai-editor-sheet');
|
||||
};
|
||||
|
||||
const handleRefresh = () => {
|
||||
handleReset();
|
||||
init();
|
||||
init(true);
|
||||
};
|
||||
|
||||
const togglePlayPause = () => {
|
||||
@@ -60,7 +67,7 @@ const EditorControls = ({ className = '', onEditClick = () => {}, isEditActive =
|
||||
variant={isEditActive ? 'outline' : 'outline'}
|
||||
size="icon"
|
||||
className="h-12 w-12 rounded-full border shadow-sm"
|
||||
onClick={onEditClick}
|
||||
onClick={handleOnEditClick}
|
||||
>
|
||||
<SquarePen className={`h-8 w-8 ${isEditActive ? 'text-white' : ''}`} />
|
||||
</Button>
|
||||
|
||||
@@ -4,8 +4,8 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@
|
||||
import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/ui/sheet';
|
||||
import { Textarea } from '@/components/ui/textarea';
|
||||
import { useMitt } from '@/plugins/MittContext';
|
||||
import useVideoEditorStore from '@/stores/VideoEditorStore';
|
||||
import useMediaStore from '@/stores/MediaStore';
|
||||
import useVideoEditorStore from '@/stores/VideoEditorStore';
|
||||
import { Bold, Italic, Minus, Plus, Type } from 'lucide-react';
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
@@ -303,7 +303,7 @@ export default function TextSidebar({ isOpen, onClose }) {
|
||||
</div>
|
||||
|
||||
{/* Note about transformer resize */}
|
||||
<div className="mt-1 text-center text-xs text-blue-600">💡 You can also resize by dragging the corners</div>
|
||||
{/* <div className="mt-1 text-center text-xs text-blue-600">💡 You can also resize by dragging the corners</div> */}
|
||||
</div>
|
||||
|
||||
{/* Font Style Controls */}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import EditorSkeleton from '@/components/editor/EditorSkeleton.jsx';
|
||||
import { useEffect, useState } from 'react';
|
||||
import BrandLogo from './partials/BrandLogo.jsx';
|
||||
import FAQDiscord from './partials/FAQDiscord.jsx';
|
||||
@@ -24,13 +25,7 @@ const Home = ({ faqData, popularKeywords }) => {
|
||||
<div className="min-h-[100vh] space-y-0 bg-neutral-50 py-6 dark:bg-black">
|
||||
<BrandLogo className="pb-2" />
|
||||
<div className="to-muted/10 w-full bg-gradient-to-b from-transparent dark:from-transparent dark:to-neutral-900">
|
||||
{isClient && Editor ? (
|
||||
<Editor />
|
||||
) : (
|
||||
<div className="flex h-96 items-center justify-center">
|
||||
<div className="text-muted-foreground">Loading editor...</div>
|
||||
</div>
|
||||
)}
|
||||
{isClient && Editor ? <Editor /> : <EditorSkeleton />}
|
||||
</div>
|
||||
<div className="space-y-16">
|
||||
<Hero />
|
||||
|
||||
@@ -4,12 +4,12 @@ import { route } from 'ziggy-js';
|
||||
|
||||
const BrandLogo = ({ className = '', onNavClick = () => {}, isNavActive = false }) => {
|
||||
return (
|
||||
<Link href={route('home')} className={cn('flex w-full items-center justify-center gap-2 hover:opacity-80 transition-opacity', className)}>
|
||||
<Link href={route('home')} className={cn('flex w-full items-center justify-center gap-2 transition-opacity hover:opacity-80', className)}>
|
||||
<img alt="MEMEFA.ST LOGO" className="h-10 w-10" src="/logo/memefast-logo-144.png"></img>
|
||||
|
||||
<div className="font-display ml-0 text-lg tracking-wide md:ml-3 md:text-xl">
|
||||
<span className="text-foreground">MEME</span>
|
||||
<span className="text-[#00DD00] dark:text-[#00FF00]">FAST</span>
|
||||
<span className="text-[#00DD00] dark:text-[#00FF00]">FA.ST</span>
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
|
||||
@@ -4,7 +4,7 @@ const Features = () => {
|
||||
const features = [
|
||||
{
|
||||
icon: Video,
|
||||
title: 'No installation needed',
|
||||
title: 'No additional software needed',
|
||||
description: 'Easy video editor with editable text, background, memes, built into the web.',
|
||||
gradient: 'bg-gradient-to-br from-transparent to-blue-500/5 dark:to-blue-400/10 hover:bg-gradient-to-tl',
|
||||
order: 3,
|
||||
@@ -25,7 +25,7 @@ const Features = () => {
|
||||
},
|
||||
{
|
||||
icon: Smartphone,
|
||||
title: 'Works Everywhere',
|
||||
title: 'Works in your browser',
|
||||
description: 'Create on desktop, tablet, or mobile! Potato devices not recommended though.',
|
||||
gradient: 'bg-gradient-to-br from-transparent to-purple-500/5 dark:to-purple-400/10 hover:bg-gradient-to-tl',
|
||||
order: 4,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { usePage } from '@inertiajs/react';
|
||||
const Hero = () => {
|
||||
const { stats } = usePage().props;
|
||||
return (
|
||||
<section className="relative bg-gradient-to-b to-transparent dark:from-neutral-900 dark:to-transparent">
|
||||
<section className="relative bg-gradient-to-b to-transparent pt-6 dark:from-neutral-900 dark:to-transparent">
|
||||
<div className="relative mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">
|
||||
<div className="space-y-4 text-center">
|
||||
{/* Badge */}
|
||||
@@ -18,13 +18,14 @@ const Hero = () => {
|
||||
<img alt="MEMEFA.ST LOGO" className="h-16 w-16 md:h-18 md:w-18 lg:h-24 lg:w-24" src="logo/memefast-logo-180.png"></img>
|
||||
<h1 className="font-display text-4xl font-black tracking-tight sm:text-6xl lg:text-8xl">
|
||||
<span className="text-foreground">MEME</span>
|
||||
<span className="text-[#00DD00] dark:text-[#00FF00]">FAST</span>
|
||||
<span className="text-[#00DD00] dark:text-[#00FF00]">FA.ST</span>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<h2 className="text-muted-foreground mx-auto max-w-4xl text-xl leading-relaxed font-light sm:text-2xl lg:text-3xl">
|
||||
Fast and simple meme video editor
|
||||
<h2 className="text-foreground mx-auto max-w-4xl text-xl leading-relaxed font-bold sm:text-2xl lg:text-2xl">
|
||||
Make meme videos right in your browser
|
||||
</h2>
|
||||
<p className="text-muted-foreground">No additional software required! Just press the Download button when you're done.</p>
|
||||
</div>
|
||||
|
||||
{/* Stats */}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { MemeCard } from '@/components/custom/meme-card';
|
||||
import EditorSkeleton from '@/components/editor/EditorSkeleton';
|
||||
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '@/components/ui/breadcrumb';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
||||
import { KeywordBadge } from '@/components/ui/keyword-badge';
|
||||
import { Spinner } from '@/components/ui/spinner';
|
||||
import Footer from '@/pages/home/partials/Footer';
|
||||
import { Link } from '@inertiajs/react';
|
||||
import { ArrowLeft } from 'lucide-react';
|
||||
@@ -94,14 +94,7 @@ export default function MemeShow({ meme, relatedMemes }: Props) {
|
||||
setInitialText={(setText) => setText('add your meme caption here')}
|
||||
/>
|
||||
) : (
|
||||
<div className="flex h-96 items-center justify-center text-center">
|
||||
<div className="space-y-2">
|
||||
<Spinner />
|
||||
<div className="text-muted-foreground" data-nosnippet>
|
||||
Loading meme video editor...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<EditorSkeleton />
|
||||
)}
|
||||
</div>
|
||||
<div className="container mx-auto grid justify-center gap-5 lg:grid-cols-1" id="more-info">
|
||||
|
||||
@@ -133,7 +133,7 @@ const useMediaStore = create(
|
||||
set({ keywords: [] });
|
||||
},
|
||||
|
||||
init: async () => {
|
||||
init: async (skipCache = false) => {
|
||||
const state = get();
|
||||
|
||||
// Skip API call completely if ALL initial values were set via props
|
||||
@@ -142,7 +142,12 @@ const useMediaStore = create(
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await axiosInstance.post(route('api.app.init'));
|
||||
const params = {};
|
||||
if (skipCache) {
|
||||
params.sc = '1';
|
||||
}
|
||||
|
||||
const response = await axiosInstance.post(route('api.app.init'), params);
|
||||
|
||||
if (response?.data?.success?.data?.init) {
|
||||
const updates = {};
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -61,8 +61,8 @@
|
||||
});
|
||||
});
|
||||
|
||||
require __DIR__ . '/settings.php';
|
||||
require __DIR__ . '/auth.php';
|
||||
require __DIR__.'/settings.php';
|
||||
require __DIR__.'/auth.php';
|
||||
}
|
||||
|
||||
Route::get('/', [FrontHomeController::class, 'index'])
|
||||
|
||||
2
storage/debugbar/.gitignore
vendored
Normal file
2
storage/debugbar/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
||||
Reference in New Issue
Block a user