diff options
| author | mo khan <mo@mokhan.ca> | 2025-01-12 19:49:28 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-01-12 19:49:28 -0700 |
| commit | 98aa588670539dd7ee5720973f5c16f03af245da (patch) | |
| tree | 8f37b8055eca8595cd1bf6ee71859d1e5676b5c7 /projects/3/example/app | |
| parent | 1c6426eed6d9d53c7ec535fa7f5c84e9759985df (diff) | |
initial commit
Diffstat (limited to 'projects/3/example/app')
14 files changed, 119 insertions, 0 deletions
diff --git a/projects/3/example/app/assets/images/.keep b/projects/3/example/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/projects/3/example/app/assets/images/.keep diff --git a/projects/3/example/app/assets/stylesheets/application.css b/projects/3/example/app/assets/stylesheets/application.css new file mode 100644 index 0000000..fe93333 --- /dev/null +++ b/projects/3/example/app/assets/stylesheets/application.css @@ -0,0 +1,10 @@ +/* + * This is a manifest file that'll be compiled into application.css. + * + * With Propshaft, assets are served efficiently without preprocessing steps. You can still include + * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard + * cascading order, meaning styles declared later in the document or manifest will override earlier ones, + * depending on specificity. + * + * Consider organizing styles into separate files for maintainability. + */ diff --git a/projects/3/example/app/controllers/application_controller.rb b/projects/3/example/app/controllers/application_controller.rb new file mode 100644 index 0000000..0d95db2 --- /dev/null +++ b/projects/3/example/app/controllers/application_controller.rb @@ -0,0 +1,4 @@ +class ApplicationController < ActionController::Base + # Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has. + allow_browser versions: :modern +end diff --git a/projects/3/example/app/controllers/concerns/.keep b/projects/3/example/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/projects/3/example/app/controllers/concerns/.keep diff --git a/projects/3/example/app/helpers/application_helper.rb b/projects/3/example/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/projects/3/example/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/projects/3/example/app/jobs/application_job.rb b/projects/3/example/app/jobs/application_job.rb new file mode 100644 index 0000000..d394c3d --- /dev/null +++ b/projects/3/example/app/jobs/application_job.rb @@ -0,0 +1,7 @@ +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/projects/3/example/app/mailers/application_mailer.rb b/projects/3/example/app/mailers/application_mailer.rb new file mode 100644 index 0000000..3c34c81 --- /dev/null +++ b/projects/3/example/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: "from@example.com" + layout "mailer" +end diff --git a/projects/3/example/app/models/application_record.rb b/projects/3/example/app/models/application_record.rb new file mode 100644 index 0000000..b63caeb --- /dev/null +++ b/projects/3/example/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + primary_abstract_class +end diff --git a/projects/3/example/app/models/concerns/.keep b/projects/3/example/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/projects/3/example/app/models/concerns/.keep diff --git a/projects/3/example/app/views/layouts/application.html.erb b/projects/3/example/app/views/layouts/application.html.erb new file mode 100644 index 0000000..56d9cf8 --- /dev/null +++ b/projects/3/example/app/views/layouts/application.html.erb @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + <head> + <title><%= content_for(:title) || "Example" %></title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <meta name="apple-mobile-web-app-capable" content="yes"> + <meta name="mobile-web-app-capable" content="yes"> + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= yield :head %> + + <%# Enable PWA manifest for installable apps (make sure to enable in config/routes.rb too!) %> + <%#= tag.link rel: "manifest", href: pwa_manifest_path(format: :json) %> + + <link rel="icon" href="/icon.png" type="image/png"> + <link rel="icon" href="/icon.svg" type="image/svg+xml"> + <link rel="apple-touch-icon" href="/icon.png"> + + <%# Includes all stylesheet files in app/assets/stylesheets %> + <%= stylesheet_link_tag :app, "data-turbo-track": "reload" %> + </head> + + <body> + <%= yield %> + </body> +</html> diff --git a/projects/3/example/app/views/layouts/mailer.html.erb b/projects/3/example/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000..3aac900 --- /dev/null +++ b/projects/3/example/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <style> + /* Email styles need to be inline */ + </style> + </head> + + <body> + <%= yield %> + </body> +</html> diff --git a/projects/3/example/app/views/layouts/mailer.text.erb b/projects/3/example/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000..37f0bdd --- /dev/null +++ b/projects/3/example/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/projects/3/example/app/views/pwa/manifest.json.erb b/projects/3/example/app/views/pwa/manifest.json.erb new file mode 100644 index 0000000..25405df --- /dev/null +++ b/projects/3/example/app/views/pwa/manifest.json.erb @@ -0,0 +1,22 @@ +{ + "name": "Example", + "icons": [ + { + "src": "/icon.png", + "type": "image/png", + "sizes": "512x512" + }, + { + "src": "/icon.png", + "type": "image/png", + "sizes": "512x512", + "purpose": "maskable" + } + ], + "start_url": "/", + "display": "standalone", + "scope": "/", + "description": "Example.", + "theme_color": "red", + "background_color": "red" +} diff --git a/projects/3/example/app/views/pwa/service-worker.js b/projects/3/example/app/views/pwa/service-worker.js new file mode 100644 index 0000000..b3a13fb --- /dev/null +++ b/projects/3/example/app/views/pwa/service-worker.js @@ -0,0 +1,26 @@ +// Add a service worker for processing Web Push notifications: +// +// self.addEventListener("push", async (event) => { +// const { title, options } = await event.data.json() +// event.waitUntil(self.registration.showNotification(title, options)) +// }) +// +// self.addEventListener("notificationclick", function(event) { +// event.notification.close() +// event.waitUntil( +// clients.matchAll({ type: "window" }).then((clientList) => { +// for (let i = 0; i < clientList.length; i++) { +// let client = clientList[i] +// let clientPath = (new URL(client.url)).pathname +// +// if (clientPath == event.notification.data.path && "focus" in client) { +// return client.focus() +// } +// } +// +// if (clients.openWindow) { +// return clients.openWindow(event.notification.data.path) +// } +// }) +// ) +// }) |
