The page you were looking for doesn’t exist. You may have mistyped the address or the page may have moved. If you’re the application owner check the logs for more information.
114 |├── log └── .keep ├── storage └── .keep ├── tmp ├── .keep ├── pids │ └── .keep └── storage │ └── .keep ├── vendor └── .keep ├── lib ├── assets │ └── .keep └── tasks │ ├── .keep │ ├── routes.rake │ └── annotate_rb.rake ├── .ruby-version ├── app ├── models │ ├── concerns │ │ └── .keep │ ├── application_record.rb │ └── click.rb ├── controllers │ ├── concerns │ │ └── .keep │ ├── application_controller.rb │ ├── vue_controller.rb │ ├── statics_controller.rb │ └── clicks_controller.rb ├── views │ ├── layouts │ │ ├── mailer.text.erb │ │ ├── mailer.html.erb │ │ └── application.html.erb │ ├── vue │ │ └── index.html.erb │ └── statics │ │ └── manifest.webmanifest.erb ├── channels │ ├── application_cable │ │ ├── channel.rb │ │ └── connection.rb │ └── clicks_channel.rb ├── mailers │ └── application_mailer.rb ├── javascript │ ├── src │ │ ├── stores │ │ │ ├── flash.ts │ │ │ └── click.ts │ │ ├── components │ │ │ ├── PageTitle.vue │ │ │ ├── LoadingAnimation.vue │ │ │ ├── GitVersion.vue │ │ │ ├── AppBackground.vue │ │ │ ├── AppHeader.vue │ │ │ ├── ClickList.vue │ │ │ ├── ClickButton.vue │ │ │ ├── AppFlash.vue │ │ │ └── AppFooter.vue │ │ ├── plugins │ │ │ └── plausible.js │ │ ├── pages │ │ │ ├── NotFound.vue │ │ │ └── HomePage.vue │ │ ├── shims-vue.d.ts │ │ ├── utils │ │ │ └── metaContent.ts │ │ ├── use │ │ │ ├── online-offline.ts │ │ │ └── fetch.ts │ │ ├── router.ts │ │ └── App.vue │ ├── channels │ │ ├── index.js │ │ └── consumer.ts │ ├── images │ │ └── logo.svg │ └── entrypoints │ │ ├── application.css │ │ └── application.ts ├── jobs │ └── application_job.rb ├── middleware │ └── cloudfront_denier.rb └── helpers │ └── application_helper.rb ├── .rspec ├── .env.test ├── bin ├── dev ├── rake ├── brakeman ├── rails ├── ci ├── bundler-audit ├── rubocop ├── yarn ├── vite ├── rspec ├── setup ├── open └── bundle ├── Procfile.dev ├── docs ├── GTmetrix.png ├── network.png ├── lighthouse.png ├── web-page-test.png ├── check-your-website.png ├── security-headers.png └── mozilla-observatory.png ├── public ├── favicon.ico ├── favicon-16x16.png ├── favicon-32x32.png ├── mstile-70x70.png ├── apple-touch-icon.png ├── mstile-144x144.png ├── mstile-150x150.png ├── mstile-310x150.png ├── mstile-310x310.png ├── maskable_icon_x384.png ├── robots.txt ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── sw.js ├── safari-pinned-tab.svg ├── 404.html ├── 400.html ├── 406-unsupported-browser.html ├── 500.html └── 422.html ├── Brewfile ├── .prettierignore ├── .yarnrc.yml ├── config ├── rorvswild.yml ├── environment.rb ├── initializers │ ├── mime_types.rb │ ├── sidekiq.rb │ ├── application_controller_renderer.rb │ ├── cookies_serializer.rb │ ├── session_store.rb │ ├── rorvswild.rb │ ├── permissions_policy.rb │ ├── wrap_parameters.rb │ ├── filter_parameter_logging.rb │ ├── backtrace_silencers.rb │ ├── connection_pool_kwargs.rb │ ├── inflections.rb │ ├── rack.rb │ └── content_security_policy.rb ├── cable.yml ├── bundler-audit.yml ├── boot.rb ├── vite.json ├── locales │ └── en.yml ├── ci.rb ├── storage.yml ├── puma.rb ├── application.rb ├── environments │ ├── test.rb │ ├── development.rb │ └── production.rb ├── database.yml └── routes.rb ├── cable └── config.ru ├── spec ├── requests │ ├── statics_spec.rb │ ├── deflater_spec.rb │ └── clicks_spec.rb ├── channels │ └── clicks_channel_spec.rb ├── javascript │ └── src │ │ ├── components │ │ ├── __snapshots__ │ │ │ └── GitVersion.test.ts.snap │ │ └── GitVersion.test.ts │ │ ├── pages │ │ ├── NotFound.test.ts │ │ ├── About.test.ts │ │ ├── __snapshots__ │ │ │ └── NotFound.test.ts.snap │ │ └── Home.test.ts │ │ ├── utils │ │ └── metaContent.test.ts │ │ ├── App.test.ts │ │ ├── stores │ │ └── click.test.ts │ │ └── __snapshots__ │ │ └── App.test.ts.snap ├── support │ └── capybara.rb ├── models │ └── click_spec.rb ├── system │ └── basic_spec.rb ├── middleware │ └── cloudfront_denier_spec.rb ├── rails_helper.rb └── spec_helper.rb ├── Rakefile ├── .prettierrc.json ├── .vscode ├── extensions.json ├── settings.json └── tasks.json ├── .env.development ├── db ├── migrate │ └── 20210522144348_create_clicks.rb ├── seeds.rb └── schema.rb ├── .gitattributes ├── config.ru ├── .env.example ├── .yarnclean ├── Dockerfile ├── .dockerignore ├── .github ├── workflows │ ├── automerge.yml │ ├── security-checks.yml │ ├── dedupe.yml │ └── ci.yml └── dependabot.yml ├── jest.config.mjs ├── docker └── startup.sh ├── vite.config.mts ├── LICENSE ├── .gitignore ├── eslint.config.mjs ├── .annotaterb.yml ├── docker-compose.yml ├── Guardfile ├── package.json ├── .rubocop.yml ├── Gemfile └── tsconfig.json /log/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storage/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/assets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/tasks/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/pids/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/storage/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.4.8 2 | -------------------------------------------------------------------------------- /app/models/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --require rails_helper 2 | -------------------------------------------------------------------------------- /app/controllers/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | APP_HOST=templatus-vue.test 2 | -------------------------------------------------------------------------------- /app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <%= yield %> 2 | -------------------------------------------------------------------------------- /app/views/vue/index.html.erb: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /bin/dev: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | overmind start -f Procfile.dev 4 | -------------------------------------------------------------------------------- /Procfile.dev: -------------------------------------------------------------------------------- 1 | vite: bin/vite dev 2 | browser: bin/open && while true; do sleep 60; done 3 | -------------------------------------------------------------------------------- /docs/GTmetrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/GTmetrix.png -------------------------------------------------------------------------------- /docs/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/network.png -------------------------------------------------------------------------------- /docs/lighthouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/lighthouse.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /Brewfile: -------------------------------------------------------------------------------- 1 | brew 'puma/puma/puma-dev' 2 | brew 'postgresql@17' 3 | brew 'redis' 4 | brew 'overmind' 5 | -------------------------------------------------------------------------------- /docs/web-page-test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/web-page-test.png -------------------------------------------------------------------------------- /app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | end 3 | -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/mstile-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/mstile-70x70.png -------------------------------------------------------------------------------- /docs/check-your-website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/check-your-website.png -------------------------------------------------------------------------------- /docs/security-headers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/security-headers.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/mstile-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/mstile-144x144.png -------------------------------------------------------------------------------- /public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/mstile-150x150.png -------------------------------------------------------------------------------- /public/mstile-310x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/mstile-310x150.png -------------------------------------------------------------------------------- /public/mstile-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/mstile-310x310.png -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | db/schema.rb 2 | tsconfig.json 3 | coverage/* 4 | public/* 5 | tmp/* 6 | .yarn/* 7 | .ruby-lsp/* 8 | -------------------------------------------------------------------------------- /app/controllers/vue_controller.rb: -------------------------------------------------------------------------------- 1 | class VueController < ApplicationController 2 | def index 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/models/application_record.rb: -------------------------------------------------------------------------------- 1 | class ApplicationRecord < ActiveRecord::Base 2 | primary_abstract_class 3 | end 4 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /docs/mozilla-observatory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/docs/mozilla-observatory.png -------------------------------------------------------------------------------- /public/maskable_icon_x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/maskable_icon_x384.png -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | enableScripts: false 2 | 3 | nodeLinker: node-modules 4 | 5 | yarnPath: .yarn/releases/yarn-4.12.0.cjs 6 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | -------------------------------------------------------------------------------- /config/rorvswild.yml: -------------------------------------------------------------------------------- 1 | development: 2 | editor_url: <%= ENV.fetch("RORVSWILD_EDITOR_URL", "vscode://file${path}:${line}") %> 3 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/templatus/templatus-vue/HEAD/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /lib/tasks/routes.rake: -------------------------------------------------------------------------------- 1 | task routes: :environment do 2 | # :nocov: 3 | puts `bundle exec rails routes` 4 | # :nocov: 5 | end 6 | -------------------------------------------------------------------------------- /app/channels/application_cable/channel.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Channel < ActionCable::Channel::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /bin/brakeman: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'rubygems' 3 | require 'bundler/setup' 4 | 5 | load Gem.bin_path('brakeman', 'brakeman') 6 | -------------------------------------------------------------------------------- /app/channels/application_cable/connection.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Connection < ActionCable::Connection::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/mailers/application_mailer.rb: -------------------------------------------------------------------------------- 1 | class ApplicationMailer < ActionMailer::Base 2 | default from: 'from@example.com' 3 | layout 'mailer' 4 | end 5 | -------------------------------------------------------------------------------- /cable/config.ru: -------------------------------------------------------------------------------- 1 | # Standalone Action Cable 2 | require_relative '../config/environment' 3 | Rails.application.eager_load! 4 | 5 | run ActionCable.server 6 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../config/application', __dir__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require_relative 'application' 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | -------------------------------------------------------------------------------- /spec/requests/statics_spec.rb: -------------------------------------------------------------------------------- 1 | describe 'Statics' do 2 | it 'serves a webmanifest file' do 3 | get webmanifest_path 4 | 5 | expect(response).to have_http_status(:success) 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /bin/ci: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'active_support/continuous_integration' 4 | 5 | CI = ActiveSupport::ContinuousIntegration 6 | require_relative '../config/ci.rb' 7 | -------------------------------------------------------------------------------- /app/controllers/statics_controller.rb: -------------------------------------------------------------------------------- 1 | class StaticsController < ApplicationController 2 | def manifest 3 | expires_in 1.day 4 | 5 | respond_to { |format| format.webmanifest { render } } 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /app/javascript/src/stores/flash.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia'; 2 | 3 | export const useFlashStore = defineStore('flash', { 4 | state: () => ({ 5 | notice: '', 6 | alert: '', 7 | }), 8 | }); 9 | -------------------------------------------------------------------------------- /config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | Mime::Type.register 'application/manifest+json', :webmanifest 5 | -------------------------------------------------------------------------------- /app/channels/clicks_channel.rb: -------------------------------------------------------------------------------- 1 | class ClicksChannel < ApplicationCable::Channel 2 | def subscribed 3 | stream_from 'clicks_channel' 4 | end 5 | 6 | def unsubscribed 7 | stop_all_streams 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/javascript/src/components/PageTitle.vue: -------------------------------------------------------------------------------- 1 | 2 |v0.0.1-123-7654321Page not found
10 |Page not found
7 |{{ commitVersion }}
31 |
32 | 27 | 28 | {{ click.ip }} 29 | 30 | 31 | 32 | {{ 33 | new Date(click.created_at).toLocaleString('en', { 34 | year: 'numeric', 35 | month: 'long', 36 | day: 'numeric', 37 | hour: 'numeric', 38 | minute: 'numeric', 39 | hour12: false, 40 | }) 41 | }} 42 | 43 |
44 | 45 |
46 | {{ click.user_agent }}
47 |
48 | 31 | Templatus is an opinionated template for web applications with 32 | Ruby on Rails and Vue.js 3 33 |
34 |78 | {{ text() }} 79 |
80 |The page you were looking for doesn’t exist. You may have mistyped the address or the page may have moved. If you’re the application owner check the logs for more information.
114 |The server cannot process the request due to a client error. Please check the request and try again. If you’re the application owner check the logs for more information.
114 |Your browser is not supported.
Please upgrade your browser to continue.
We’re sorry, but something went wrong.
If you’re the application owner check the logs for more information.
The change you wanted was rejected. Maybe you tried to change something you didn’t have access to. If you’re the application owner check the logs for more information.
114 |