Your addon's Blade templates live in Resources/views/ and are referenced through the module alias as a view namespace — view('youralias::index') in controllers, @include('youralias::partials.header') in templates. Pages typically extend the core Metronic layout with @extends('layouts.master2') and use the theme's UI patterns: kt-portlet cards, badge-styled data tables (with DataTables init pushed to the scripts stack), dismissible alerts, Bootstrap modals, and jQuery AJAX calls that include the CSRF token and use KTApp.blockPage / toastr for feedback. View composers in your service provider can share data across all addon views, and publishes() lets users override your views — published copies under resources/views/modules/youralias/ take precedence.
Static assets follow the public directory pattern: everything the browser loads goes in the addon's public/ directory, which the installer exposes via a symlink at public/Addons/YourAddonName/ (a junction on Windows, no admin rights needed). A file at public/css/addon.css is therefore served at /Addons/YourAddonName/css/addon.css, and you reference it that way in @section('styles')/@section('scripts'). Inside CSS, prefer relative url(../images/...) paths so assets survive renames.
Source files that need compilation (SASS, ES6) belong in Resources/assets/, compiled by Laravel Mix (webpack.mix.js) into the addon's own public/ directory with npm run dev, watch, or production. Plain hand-written CSS/JS skips the build step and goes straight into public/.