diff --git a/.playwright-mcp/GPrompt-Ebook-Desenvolvedores-v1.pdf b/.playwright-mcp/GPrompt-Ebook-Desenvolvedores-v1.pdf new file mode 100644 index 0000000..a960562 Binary files /dev/null and b/.playwright-mcp/GPrompt-Ebook-Desenvolvedores-v1.pdf differ diff --git a/.playwright-mcp/download.pdf b/.playwright-mcp/download.pdf new file mode 100644 index 0000000..a960562 Binary files /dev/null and b/.playwright-mcp/download.pdf differ diff --git a/bootstrap/providers.php b/bootstrap/providers.php index cd60025..0ab2cb3 100755 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -5,4 +5,5 @@ use App\Providers\AppServiceProvider; return [ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, + Barryvdh\DomPDF\ServiceProvider::class, ]; diff --git a/composer.json b/composer.json index d4d832e..845fc26 100755 --- a/composer.json +++ b/composer.json @@ -7,9 +7,9 @@ "license": "MIT", "require": { "php": "^8.3", + "barryvdh/laravel-dompdf": "^3.1", "laravel/framework": "^13.8", - "laravel/tinker": "^3.0", - "barryvdh/laravel-dompdf": "^3.0" + "laravel/tinker": "^3.0" }, "require-dev": { "fakerphp/faker": "^1.23", diff --git a/composer.lock b/composer.lock index 0cfc9f5..a9d1893 100755 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,85 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "16e72b11427154de902612c561b9c304", + "content-hash": "2a63f5b976767b68f7e581743095bd53", "packages": [ + { + "name": "barryvdh/laravel-dompdf", + "version": "v3.1.2", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/ee3b72b19ccdf57d0243116ecb2b90261344dedc", + "reference": "ee3b72b19ccdf57d0243116ecb2b90261344dedc", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^3.0", + "illuminate/support": "^9|^10|^11|^12|^13.0", + "php": "^8.1" + }, + "require-dev": { + "larastan/larastan": "^2.7|^3.0", + "orchestra/testbench": "^7|^8|^9.16|^10|^11.0", + "phpro/grumphp": "^2.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf", + "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf" + }, + "providers": [ + "Barryvdh\\DomPDF\\ServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\DomPDF\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "A DOMPDF Wrapper for Laravel", + "keywords": [ + "dompdf", + "laravel", + "pdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.2" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2026-02-21T08:51:10+00:00" + }, { "name": "brick/math", "version": "0.18.0", @@ -376,6 +453,161 @@ ], "time": "2024-02-05T11:56:58+00:00" }, + { + "name": "dompdf/dompdf", + "version": "v3.1.6", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6d4b4eb8500f7a786da8868ba463a71b725a4005", + "reference": "6d4b4eb8500f7a786da8868ba463a71b725a4005", + "shasum": "" + }, + "require": { + "dompdf/php-font-lib": "^1.0.0", + "dompdf/php-svg-lib": "^1.0.0", + "ext-dom": "*", + "ext-mbstring": "*", + "masterminds/html5": "^2.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-gd": "*", + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v3.1.6" + }, + "time": "2026-07-20T12:29:38+00:00" + }, + { + "name": "dompdf/php-font-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "The FontLib Community", + "homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/dompdf/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/1.0.2" + }, + "time": "2026-01-20T14:10:26+00:00" + }, + { + "name": "dompdf/php-svg-lib", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "reference": "8259ffb930817e72b1ff1caef5d226501f3dfeb1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4 || ^9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "The SvgLib Community", + "homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/dompdf/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/1.0.2" + }, + "time": "2026-01-02T16:01:13+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.6.0", @@ -2032,6 +2264,73 @@ ], "time": "2026-03-08T20:05:35+00:00" }, + { + "name": "masterminds/html5", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "reference": "a1e7a2f88ee13635d86fc61cfbdf2306a76ddfc7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=7.4" + }, + "require-dev": { + "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" + }, + "time": "2026-08-18T06:18:41+00:00" + }, { "name": "monolog/monolog", "version": "3.10.0", @@ -3306,6 +3605,84 @@ }, "time": "2026-06-18T03:57:49+00:00" }, + { + "name": "sabberworm/php-css-parser", + "version": "v9.5.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "f284e63b6e891e0c28631e54ba06c3ed102a9ef3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f284e63b6e891e0c28631e54ba06c3ed102a9ef3", + "reference": "f284e63b6e891e0c28631e54ba06c3ed102a9ef3", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^7.2.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0 || ~8.6.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.33 || 2.2.9", + "phpstan/phpstan-phpunit": "1.4.2 || 2.0.18", + "phpstan/phpstan-strict-rules": "1.6.2 || 2.0.12", + "phpunit/phpunit": "8.5.54", + "rawr/phpunit-data-provider": "3.3.1", + "rector/rector": "1.2.10 || 2.6.2", + "rector/type-perfect": "1.0.0 || 2.1.4", + "squizlabs/php_codesniffer": "4.0.4" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.6.x-dev" + } + }, + "autoload": { + "files": [ + "src/Rule/Rule.php", + "src/RuleSet/RuleContainer.php" + ], + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v9.5.0" + }, + "time": "2026-09-20T15:02:00+00:00" + }, { "name": "symfony/clock", "version": "v7.4.8", diff --git a/config/dompdf.php b/config/dompdf.php new file mode 100644 index 0000000..677d93c --- /dev/null +++ b/config/dompdf.php @@ -0,0 +1,301 @@ + false, // Throw an Exception on warnings from dompdf + + 'public_path' => null, // Override the public path if needed + + /* + * Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show € and £. + */ + 'convert_entities' => true, + + 'options' => [ + /** + * The location of the DOMPDF font directory + * + * The location of the directory where DOMPDF will store fonts and font metrics + * Note: This directory must exist and be writable by the webserver process. + * *Please note the trailing slash.* + * + * Notes regarding fonts: + * Additional .afm font metrics can be added by executing load_font.php from command line. + * + * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must + * be embedded in the pdf file or the PDF may not display correctly. This can significantly + * increase file size unless font subsetting is enabled. Before embedding a font please + * review your rights under the font license. + * + * Any font specification in the source HTML is translated to the closest font available + * in the font directory. + * + * The pdf standard "Base 14 fonts" are: + * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, + * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, + * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic, + * Symbol, ZapfDingbats. + */ + 'font_dir' => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782) + + /** + * The location of the DOMPDF font cache directory + * + * This directory contains the cached font metrics for the fonts used by DOMPDF. + * This directory can be the same as DOMPDF_FONT_DIR + * + * Note: This directory must exist and be writable by the webserver process. + */ + 'font_cache' => storage_path('fonts'), + + /** + * The location of a temporary directory. + * + * The directory specified must be writeable by the webserver process. + * The temporary directory is required to download remote images and when + * using the PDFLib back end. + */ + 'temp_dir' => sys_get_temp_dir(), + + /** + * ==== IMPORTANT ==== + * + * dompdf's "chroot": Prevents dompdf from accessing system files or other + * files on the webserver. All local files opened by dompdf must be in a + * subdirectory of this directory. DO NOT set it to '/' since this could + * allow an attacker to use dompdf to read any files on the server. This + * should be an absolute path. + * This is only checked on command line call by dompdf.php, but not by + * direct class use like: + * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); + */ + 'chroot' => realpath(base_path()), + + /** + * Protocol whitelist + * + * Protocols and PHP wrappers allowed in URIs, and the validation rules + * that determine if a resouce may be loaded. Full support is not guaranteed + * for the protocols/wrappers specified + * by this array. + * + * @var array + */ + 'allowed_protocols' => [ + 'data://' => ['rules' => []], + 'file://' => ['rules' => []], + 'http://' => ['rules' => []], + 'https://' => ['rules' => []], + ], + + /** + * Operational artifact (log files, temporary files) path validation + */ + 'artifactPathValidation' => null, + + /** + * @var string + */ + 'log_output_file' => null, + + /** + * Whether to enable font subsetting or not. + */ + 'enable_font_subsetting' => false, + + /** + * The PDF rendering backend to use + * + * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and + * 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will + * fall back on CPDF. 'GD' renders PDFs to graphic files. + * {@link * Canvas_Factory} ultimately determines which rendering class to + * instantiate based on this setting. + * + * Both PDFLib & CPDF rendering backends provide sufficient rendering + * capabilities for dompdf, however additional features (e.g. object, + * image and font support, etc.) differ between backends. Please see + * {@link PDFLib_Adapter} for more information on the PDFLib backend + * and {@link CPDF_Adapter} and lib/class.pdf.php for more information + * on CPDF. Also see the documentation for each backend at the links + * below. + * + * The GD rendering backend is a little different than PDFLib and + * CPDF. Several features of CPDF and PDFLib are not supported or do + * not make any sense when creating image files. For example, + * multiple pages are not supported, nor are PDF 'objects'. Have a + * look at {@link GD_Adapter} for more information. GD support is + * experimental, so use it at your own risk. + * + * @link http://www.pdflib.com + * @link http://www.ros.co.nz/pdf + * @link http://www.php.net/image + */ + 'pdf_backend' => 'CPDF', + + /** + * html target media view which should be rendered into pdf. + * List of types and parsing rules for future extensions: + * http://www.w3.org/TR/REC-html40/types.html + * screen, tty, tv, projection, handheld, print, braille, aural, all + * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3. + * Note, even though the generated pdf file is intended for print output, + * the desired content might be different (e.g. screen or projection view of html file). + * Therefore allow specification of content here. + */ + 'default_media_type' => 'screen', + + /** + * The default paper size. + * + * North America standard is "letter"; other countries generally "a4" + * + * @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.) + */ + 'default_paper_size' => 'a4', + + /** + * The default paper orientation. + * + * The orientation of the page (portrait or landscape). + * + * @var string + */ + 'default_paper_orientation' => 'portrait', + + /** + * The default font family + * + * Used if no suitable fonts can be found. This must exist in the font folder. + * + * @var string + */ + 'default_font' => 'serif', + + /** + * Image DPI setting + * + * This setting determines the default DPI setting for images and fonts. The + * DPI may be overridden for inline images by explictly setting the + * image's width & height style attributes (i.e. if the image's native + * width is 600 pixels and you specify the image's width as 72 points, + * the image will have a DPI of 600 in the rendered PDF. The DPI of + * background images can not be overridden and is controlled entirely + * via this parameter. + * + * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI). + * If a size in html is given as px (or without unit as image size), + * this tells the corresponding size in pt. + * This adjusts the relative sizes to be similar to the rendering of the + * html page in a reference browser. + * + * In pdf, always 1 pt = 1/72 inch + * + * Rendering resolution of various browsers in px per inch: + * Windows Firefox and Internet Explorer: + * SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:? + * Linux Firefox: + * about:config *resolution: Default:96 + * (xorg screen dimension in mm and Desktop font dpi settings are ignored) + * + * Take care about extra font/image zoom factor of browser. + * + * In images, size in pixel attribute, img css style, are overriding + * the real image dimension in px for rendering. + * + * @var int + */ + 'dpi' => 96, + + /** + * Enable embedded PHP + * + * If this setting is set to true then DOMPDF will automatically evaluate embedded PHP contained + * within tags. + * + * ==== IMPORTANT ==== Enabling this for documents you do not trust (e.g. arbitrary remote html pages) + * is a security risk. + * Embedded scripts are run with the same level of system access available to dompdf. + * Set this option to false (recommended) if you wish to process untrusted documents. + * This setting may increase the risk of system exploit. + * Do not change this settings without understanding the consequences. + * Additional documentation is available on the dompdf wiki at: + * https://github.com/dompdf/dompdf/wiki + * + * @var bool + */ + 'enable_php' => false, + + /** + * Enable inline JavaScript + * + * If this setting is set to true then DOMPDF will automatically insert JavaScript code contained + * within tags as written into the PDF. + * NOTE: This is PDF-based JavaScript to be executed by the PDF viewer, + * not browser-based JavaScript executed by Dompdf. + * + * @var bool + */ + 'enable_javascript' => true, + + /** + * Enable remote file access + * + * If this setting is set to true, DOMPDF will access remote sites for + * images and CSS files as required. + * + * ==== IMPORTANT ==== + * This can be a security risk, in particular in combination with isPhpEnabled and + * allowing remote html code to be passed to $dompdf = new DOMPDF(); $dompdf->load_html(...); + * This allows anonymous users to download legally doubtful internet content which on + * tracing back appears to being downloaded by your server, or allows malicious php code + * in remote html pages to be executed by your server with your account privileges. + * + * This setting may increase the risk of system exploit. Do not change + * this settings without understanding the consequences. Additional + * documentation is available on the dompdf wiki at: + * https://github.com/dompdf/dompdf/wiki + * + * @var bool + */ + 'enable_remote' => false, + + /** + * List of allowed remote hosts + * + * Each value of the array must be a valid hostname. + * + * This will be used to filter which resources can be loaded in combination with + * isRemoteEnabled. If enable_remote is FALSE, then this will have no effect. + * + * Leave to NULL to allow any remote host. + * + * @var array|null + */ + 'allowed_remote_hosts' => null, + + /** + * A ratio applied to the fonts height to be more like browsers' line height + */ + 'font_height_ratio' => 1.1, + + /** + * Use the HTML5 Lib parser + * + * @deprecated This feature is now always on in dompdf 2.x + * + * @var bool + */ + 'enable_html5_parser' => true, + ], + +]; diff --git a/public/ebooks/GPrompt-Ebook-Desenvolvedores-v1.pdf b/public/ebooks/GPrompt-Ebook-Desenvolvedores-v1.pdf new file mode 100644 index 0000000..0cc7d97 Binary files /dev/null and b/public/ebooks/GPrompt-Ebook-Desenvolvedores-v1.pdf differ diff --git a/resources/views/components/app-footer.blade.php b/resources/views/components/app-footer.blade.php index fa60426..5ed7b65 100755 --- a/resources/views/components/app-footer.blade.php +++ b/resources/views/components/app-footer.blade.php @@ -7,7 +7,10 @@
@lang('footer.terms_of_service') @lang('footer.privacy_policy') - @lang('footer.cookie_preferences') + @lang('footer.cookie_preferences') + @auth + Ebook + @endauth
diff --git a/resources/views/ebook/index.blade.php b/resources/views/ebook/index.blade.php new file mode 100644 index 0000000..417db4b --- /dev/null +++ b/resources/views/ebook/index.blade.php @@ -0,0 +1,345 @@ + + + + +GPrompt - Ebook para Desenvolvedores + + + + +
+

GPrompt

+

Sistema de Geração de Prompts Inteligentes

+
+

Ebook para Desenvolvedores

+

Crie sites, landing pages e aplicativos com a potência da IA

+

+

Versão 1.0 — Outubro 2026

+
+ +
+

Sumário

+ + +
+

1. O que é o GPrompt?

+

O GPrompt é um sistema web completo para geração de prompts inteligentes destinados à criação de sites, landing pages, aplicativos e sistemas web. Ele foi projetado para desenvolvedores que desejam acelerar seu fluxo de trabalho utilizando Inteligência Artificial, mantendo total controle sobre o resultado final.

+ +
+

Para quem este ebook foi feito

+

Desenvolvedores front-end e full-stack, designers que codam, agências digitais, freelancers e qualquer profissional que crie sites, landing pages ou aplicativos web e queira usar IA para aumentar sua produtividade.

+
+ +

Diferente de ferramentas genéricas de IA, o GPrompt entende o contexto brasileiro: templates em português, conformidade com a LGPD (Lei Geral de Proteção de Dados), termos de uso e política de privacidade adequados à legislação brasileira, e geração automática de arquivos essenciais como LICENSE, README.md e RULES.md.

+ +

Principais Diferenciais

+ + +
+

2. Conceitos Fundamentais

+ +

2.1 O que é Prompt Engineering?

+

Prompt Engineering é a arte e a ciência de criar instruções precisas para Inteligências Artificiais. Um prompt bem elaborado produz resultados muito superiores a um prompt genérico. O GPrompt automatiza exatamente este processo: ele pega suas especificações e constrói o prompt ideal para cada tipo de projeto.

+ +

2.2 Como o GPrompt Funciona

+
+

Fluxo de Trabalho

+
    +
  1. Crie um Projeto: Defina o objetivo, contexto, persona, tom, restrições e formato de saída
  2. +
  3. Escolha um Template: Selecione entre 36 templates pré-configurados ou crie o seu próprio
  4. +
  5. Selecione o Provedor/Modelo de IA: OpenRouter, StepFun ou Llama.cpp local
  6. +
  7. Gere o Prompt: O sistema monta um prompt otimizado com todas as especificações
  8. +
  9. Use o Prompt: Copie o prompt gerado e utilize no VSCode, Cursor, ou qualquer ferramenta de IA
  10. +
  11. Obtenha o Projeto Completo: A IA cria todos os arquivos do projeto
  12. +
+
+ +

2.3 A Arquitetura do Sistema

+ + + + + + + + +
ComponenteFunção
Projetos de PromptOnde você define as especificações do seu projeto
TemplatesModelos pré-configurados para iniciar rapidamente
Provedores IAConfiguração dos serviços de IA (OpenRouter, StepFun, Llama.cpp)
Serviço de GeraçãoMonta o prompt otimizado e se comunica com a IA
Arquivos PadrãoGera automaticamente LICENSE, README.md, RULES.md, documentos LGPD
HistóricoMantém registro de todas as gerações realizadas
+ +
+

3. Primeiros Passos

+ +
+

Passo a Passo

+
    +
  1. Acesse o sistema e faça login com suas credenciais
  2. +
  3. No menu lateral, clique em "Projetos de Prompt"
  4. +
  5. Clique em "Novo Projeto"
  6. +
  7. Preencha os dados da empresa (nome, endereço, WhatsApp, website, redes sociais)
  8. +
  9. Defina o Objetivo do projeto
  10. +
  11. Forneça o Contexto
  12. +
  13. Defina a Persona
  14. +
  15. Escolha o Tom/Estilo
  16. +
  17. Adicione Restrições importantes
  18. +
  19. Defina o Formato de Saída
  20. +
  21. Selecione o Provedor de IA
  22. +
  23. Clique em "Salvar"
  24. +
+
+ +

3.1 Usando Templates

+

Os templates são a maneira mais rápida de começar. Ao criar um novo projeto, digite no campo "Modelo de Projeto" para buscar entre os 36 templates disponíveis.

+ + + + + + + + +
CategoriaTemplates
Landing PagesCorporativa, SaaS, Produto Digital, Evento, E-book, Curso Online, App Mobile, Agência, Restaurante, Imobiliária, Saúde, Educação, Delivery
SitesInstitucional, Portfolio Profissional, Portfolio Criativo, Blog Pessoal
SistemasE-commerce, Sistema SaaS, Dashboard Admin
FrameworksLaravel + Blade, Slim Framework, Vue.js + Vite, React + Vite, Next.js, Node.js + Express, FastAPI + Python
ArquiteturaMicrosserviços, API REST, JWT, Chatbot com IA, Automação de Workflow
+ +

Ao selecionar um template, todos os campos do formulário são preenchidos automaticamente com as configurações ideais para aquele tipo de projeto.

+ +
+

4. Templates de Projeto

+ +

4.1 Estrutura de um Template

+ + + + + + + + + + + + + + +
CampoDescrição
TitleNome do template
ObjectiveObjetivo principal do projeto
ContextContexto e informações de fundo
PersonaPapel que a IA deve assumir
ToneTom e estilo de comunicação
ConstraintsRestrições técnicas e regras
Output FormatFormato esperado do resultado
ExamplesExemplos de entrada/saída
VariablesVariáveis dinâmicas do projeto
TemperatureCriatividade da IA (0.0 a 1.0)
Max TokensLimite de tokens na resposta
Standard FilesSe inclui arquivos padrão (true/false)
+ +

4.2 Criando seus Próprios Templates

+

Desenvolvedores podem criar templates personalizados. Basta acessar "Templates" -> "Novo" e preencher os dados no formato JSON:

+
{
+"title": "Meu Template",
+"objective": "Criar um sistema...",
+"persona": "Especialista em...",
+"constraints": "Restrições...",
+"standard_files": true
+}
+ +
+

Importante

+

O campo standard_files controla se os arquivos padrão serão incluídos. Para a maioria dos projetos, mantenha como true.

+
+ +
+

5. Arquivos Padrão

+

Um dos grandes diferenciais do GPrompt é a geração automática de arquivos essenciais para qualquer projeto profissional. Estes arquivos são gerados em duas camadas:

+
    +
  1. Pelo sistema: O GPrompt gera os arquivos na seção "Arquivos Padrão do Projeto"
  2. +
  3. Pela IA: O prompt gerado instrui a criação destes mesmos arquivos com conteúdo completo
  4. +
+ +

5.1 Os 6 Arquivos Padrão

+ + + + + + + + +
ArquivoConteúdo
LICENSELicença MIT com nome da empresa e ano
README.mdDocumentação completa do projeto
RULES.mdRegras de desenvolvimento e padrões de código
cookies.htmlBanner de cookies LGPD completo (Aceitar/Recusar/Personalizar)
termos-de-uso.htmlTermos de Uso conforme legislação brasileira
privacidade.htmlPolítica de Privacidade conforme LGPD (Lei 13.709/2018)
+ +

5.2 Conformidade com a LGPD

+

A Lei Geral de Proteção de Dados (Lei 13.709/2018) exige que sites e aplicativos que coletam dados pessoais tenham:

+ +

Todos estes requisitos são atendidos automaticamente pelos arquivos padrão do GPrompt.

+ +
+

6. Requisitos de Sistema

+

Todo projeto gerado pelo GPrompt inclui automaticamente requisitos de sistema que garantem qualidade e conformidade.

+ +

6.1 Design Responsivo

+

Mobile-first é a abordagem padrão. Todo projeto gerado é responsivo em todos os tamanhos de tela: smartphones (320px), tablets (768px), desktops (1024px) e telas grandes (1440px).

+ +

6.2 Dependências com Licença MIT

+

Todas as dependências devem ter licença MIT ou permissiva para segurança jurídica em projetos comerciais:

+ + +

6.3 Campo de Senha com Toggle

+

Todo campo de senha deve incluir um botão com ícone "olho" para mostrar/esconder a senha, seguindo as melhores práticas de UX.

+ +

6.4 SEO Completo

+ + +
+

7. Provedores de IA

+

O GPrompt suporta múltiplos provedores de Inteligência Artificial:

+ +

7.1 OpenRouter

+

Gateway que unifica dezenas de modelos de IA em um único ponto de acesso. Modelos: deepseek/deepseek-v4-flash, nvidia/nemotron-3, openai/gpt, google/gemma. Configure a OPENROUTER_API_KEY no .env.

+ +

7.2 StepFun

+

Provedor com modelos de alta performance. Modelos: step-3.5-flash, step-3.7-flash. Configure a STEPFUN_API_KEY no .env.

+ +

7.3 Llama.cpp (Local)

+

Execute modelos de IA localmente, sem depender de serviços externos. Modelos: Qwen3-8B, Llama-3.2-3B. Configure LLAMACPP_BASE_URL no .env.

+ +

7.4 Escolhendo o Modelo Ideal

+ + + + + + +
Para gerarModelo recomendado
Landing Pages HTML/CSSdeepseek/deepseek-v4-flash
Documentaçãonvidia/nemotron-3-super
Sistemas complexosopenrouter/free
Projetos offlineLlama.cpp local (Qwen3-8B)
+ +
+

8. Casos de Uso Práticos

+ +

8.1 Landing Page Corporativa

+

Cenário: Uma empresa precisa de uma landing page profissional para divulgar serviços B2B.

+

Solução: Selecione o template "Landing Page Corporativa", preencha os dados da empresa, gere o prompt com deepseek/deepseek-v4-flash, e use o prompt no VSCode para receber o projeto completo com index.html, style.css, LICENSE, README.md, cookies.html e os demais arquivos padrão.

+ +

8.2 Sistema SaaS com Laravel + Vue.js

+

Cenário: Desenvolvimento de um sistema SaaS completo com backend Laravel e frontend Vue.js.

+

Solução: Selecione o template "Laravel 13 + Vue.js 3 Fullstack" e gere o prompt. O resultado conterá instruções para criar toda a estrutura do sistema.

+ +

8.3 API RESTful com Autenticação JWT

+

Cenário: Criação de uma API REST com autenticação JWT.

+

Solução: Selecione o template "API com Autenticação JWT". O prompt gerará instruções para controllers, middleware, testes, e docker-compose.

+ +

8.4 Chatbot com IA

+

Cenário: Implementação de um chatbot com integração a provedores de IA.

+

Solução: Selecione o template "Chatbot com IA". O prompt incluirá interface de chat, histórico, e integração com API de IA.

+ +
+

9. Boas Práticas

+ +

9.1 Criando Prompts Eficientes

+ + +

9.2 Dicas para Diferentes Modelos

+ + + + + + +
ModeloDica
deepseek/deepseek-v4-flashExcelente para código HTML/CSS/JS
nvidia/nemotron-3-superÓtimo para documentação e prompts longos
Llama.cpp localIdeal para projetos sensíveis
openrouter/freeRoteia para o melhor modelo gratuito
+ +

9.3 Versionamento e Manutenção

+ + +
+

10. Conclusão

+

O GPrompt representa uma nova forma de desenvolver projetos web, combinando a potência da Inteligência Artificial com a estruturação profissional que todo projeto merece.

+ +
+

O que você ganha usando o GPrompt

+ +
+ +

Comece hoje mesmo a transformar sua forma de desenvolver. Crie seu primeiro projeto no GPrompt e experimente a diferença de ter um sistema que entende suas necessidades.

+ +
+

Continue Aprendendo

+ +
+ + + + + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 2aa45dd..c8454c8 100755 --- a/routes/web.php +++ b/routes/web.php @@ -116,4 +116,12 @@ Route::post('/cookie-consent', [App\Http\Controllers\Legal\CookieConsentControll ->middleware(['web']) ->name('cookie.consent.store'); +Route::get('ebook/download', function () { + $path = public_path('ebooks/GPrompt-Ebook-Desenvolvedores-v1.pdf'); + if (!file_exists($path)) { + abort(404, 'Ebook não encontrado'); + } + return response()->file($path, ['Content-Type' => 'application/pdf']); +})->name('ebook.download'); + require __DIR__.'/auth.php';