init push - laying out the project
This commit is contained in:
		
							
								
								
									
										47
									
								
								portal/config/application.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								portal/config/application.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| require_relative 'boot' | ||||
|  | ||||
| require 'rails' | ||||
| # Pick the frameworks you want: | ||||
| require 'active_model/railtie' | ||||
| require 'active_job/railtie' | ||||
| require 'active_record/railtie' | ||||
| require 'active_storage/engine' | ||||
| require 'action_controller/railtie' | ||||
| require 'action_mailer/railtie' | ||||
| require 'action_mailbox/engine' | ||||
| require 'action_text/engine' | ||||
| require 'action_view/railtie' | ||||
| require 'action_cable/engine' | ||||
| require 'sprockets/railtie' | ||||
| # require "rails/test_unit/railtie" | ||||
|  | ||||
| # Require the gems listed in Gemfile, including any gems | ||||
| # you've limited to :test, :development, or :production. | ||||
| Bundler.require(*Rails.groups) | ||||
|  | ||||
| module Helpbuild | ||||
|   class Application < Rails::Application | ||||
|     # Initialize configuration defaults for originally generated Rails version. | ||||
|     config.load_defaults 6.0 | ||||
|  | ||||
|     # Settings in config/environments/* take precedence over those specified here. | ||||
|     # Application configuration can go into files in config/initializers | ||||
|     # -- all .rb files in that directory are automatically loaded after loading | ||||
|     # the framework and any gems in your application. | ||||
|  | ||||
|     # Don't generate system test files. | ||||
|     config.active_job.queue_adapter = :sidekiq | ||||
|     config.generators.system_tests = nil | ||||
|  | ||||
|     config.generators do |g| | ||||
|       g.test_framework :rspec, | ||||
|                        fixtures:         false, | ||||
|                        model_specs:       false, | ||||
|                        view_specs:       false, | ||||
|                        helper_specs:     false, | ||||
|                        routing_specs:    false, | ||||
|                        request_specs:    false, | ||||
|                        controller_specs: false | ||||
|     end | ||||
|   end | ||||
| end | ||||
							
								
								
									
										40
									
								
								portal/config/appsignal.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								portal/config/appsignal.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| default: &defaults | ||||
|   # Your push api key, it is possible to set this dynamically using ERB: | ||||
|   # push_api_key: "<%= ENV['APPSIGNAL_PUSH_API_KEY'] %>" | ||||
|   push_api_key: "686d968b-13e6-499d-857e-2ace934cd877" | ||||
|  | ||||
|   # Your app's name | ||||
|   name: "Betbeast" | ||||
|  | ||||
|   # Actions that should not be monitored by AppSignal | ||||
|   # ignore_actions: | ||||
|   #   - ApplicationController#isup | ||||
|  | ||||
|   # Errors that should not be recorded by AppSignal | ||||
|   # For more information see our docs: | ||||
|   # https://docs.appsignal.com/ruby/configuration/ignore-errors.html | ||||
|   # ignore_errors: | ||||
|   #   - Exception | ||||
|   #   - NoMemoryError | ||||
|   #   - ScriptError | ||||
|   #   - LoadError | ||||
|   #   - NotImplementedError | ||||
|   #   - SyntaxError | ||||
|   #   - SecurityError | ||||
|   #   - SignalException | ||||
|   #   - Interrupt | ||||
|   #   - SystemExit | ||||
|   #   - SystemStackError | ||||
|  | ||||
|   # See http://docs.appsignal.com/ruby/configuration/options.html for | ||||
|   # all configuration options. | ||||
|  | ||||
| # Configuration per environment, leave out an environment or set active | ||||
| # to false to not push metrics for that environment. | ||||
| development: | ||||
|   <<: *defaults | ||||
|   active: true | ||||
|  | ||||
| production: | ||||
|   <<: *defaults | ||||
|   active: true | ||||
							
								
								
									
										4
									
								
								portal/config/boot.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								portal/config/boot.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) | ||||
|  | ||||
| require 'bundler/setup' # Set up gems listed in the Gemfile. | ||||
| require 'bootsnap/setup' # Speed up boot time by caching expensive operations. | ||||
							
								
								
									
										12
									
								
								portal/config/cable.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								portal/config/cable.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| development: | ||||
|   adapter: redis | ||||
|   url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/3" } %> | ||||
|   channel_prefix: production | ||||
|  | ||||
| test: | ||||
|   adapter: test | ||||
|  | ||||
| production: | ||||
|   adapter: redis | ||||
|   url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/3" } %> | ||||
|   channel_prefix: production | ||||
							
								
								
									
										1
									
								
								portal/config/credentials.yml.enc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								portal/config/credentials.yml.enc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| lOp7WBmjwL+m4zIeEUwBDbFO2PGni8zfWg6tjyGWf0WWMbbUXTkWeGVzVgMhFDE5PIr1Ur11siGNSSS8wKBq/WaaFzbON2a0UQ3fNOkJMpThgVsiGdz+41x1sjwKOCt2fCNPY2r9EmA/rNvnrYGPjzqRhbeKC3HvBIJXlMzMpSEmvc/9WJfA2dn6PYmtyLb4faqufcVFxG5zPzWkAl8DAqAdqWf9iMnHv0Y1ITrm5tna+Rhl7F6LbbdMnahPTXP/Cd1m6Fy48trffDc24KRPBNvKN9ReZKlR7B8pjStylOzhDiLH2krrfMZxFwdMk4e4XWH6+AHoV8XNbKhAkraCvkY8W5w1wsPrG2KqAkRKVXLlmURnWTuLSog1g7F9+nHdEkf0AjdZvXpdPeW4Zz1qgzdrWqXRw/rL0fVA--IsBPWwq11wmHD2Ue--YO1Sh9Ga3+H5IN+kMmjTHg== | ||||
							
								
								
									
										19
									
								
								portal/config/database.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								portal/config/database.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| defaults: &defaults | ||||
|   encoding: unicode | ||||
|   adapter: postgresql | ||||
|   pool: <%= ENV['DATABASE_POOL'] %> | ||||
|   host: <%= ENV['DB_HOST'] %> | ||||
|   database: <%= ENV['DB_NAME'] %> | ||||
|   username: <%= ENV['DATABASE_USER'] %> | ||||
|   password: <%= ENV['DATABASE_PASSWORD'] %> | ||||
|   port: <%= ENV['DB_PORT'] %> | ||||
|  | ||||
| development: | ||||
|   <<: *defaults | ||||
|  | ||||
| test: | ||||
|   <<: *defaults | ||||
|  | ||||
| production: | ||||
|   <<: *defaults | ||||
|  | ||||
							
								
								
									
										5
									
								
								portal/config/environment.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								portal/config/environment.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # Load the Rails application. | ||||
| require_relative 'application' | ||||
|  | ||||
| # Initialize the Rails application. | ||||
| Rails.application.initialize! | ||||
							
								
								
									
										73
									
								
								portal/config/environments/development.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								portal/config/environments/development.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| Rails.application.configure do | ||||
|   # Settings specified here will take precedence over those in config/application.rb. | ||||
|  | ||||
|   # In the development environment your application's code is reloaded on | ||||
|   # every request. This slows down response time but is perfect for development | ||||
|   # since you don't have to restart the web server when you make code changes. | ||||
|   config.cache_classes = false | ||||
|  | ||||
|   # Do not eager load code on boot. | ||||
|   config.eager_load = false | ||||
|  | ||||
|   # Show full error reports. | ||||
|   config.consider_all_requests_local = true | ||||
|  | ||||
|   # Enable/disable caching. By default caching is disabled. | ||||
|   # Run rails dev:cache to toggle caching. | ||||
|   if Rails.root.join('tmp', 'caching-dev.txt').exist? | ||||
|     config.action_controller.perform_caching = true | ||||
|     config.action_controller.enable_fragment_cache_logging = true | ||||
|  | ||||
|     config.cache_store = :memory_store | ||||
|     config.public_file_server.headers = { | ||||
|       'Cache-Control' => "public, max-age=#{2.days.to_i}" | ||||
|     } | ||||
|   else | ||||
|     config.action_controller.perform_caching = false | ||||
|  | ||||
|     config.cache_store = :null_store | ||||
|   end | ||||
|  | ||||
|   # Store uploaded files on the local file system (see config/storage.yml for options). | ||||
|   config.active_storage.service = :contabo | ||||
|  | ||||
|   # Don't care if the mailer can't send. | ||||
|   config.action_mailer.raise_delivery_errors = false | ||||
|  | ||||
|   config.action_mailer.perform_caching = false | ||||
|  | ||||
|   # Print deprecation notices to the Rails logger. | ||||
|   config.active_support.deprecation = :log | ||||
|  | ||||
|   # Raise an error on page load if there are pending migrations. | ||||
|   config.active_record.migration_error = :page_load | ||||
|  | ||||
|   # Highlight code that triggered database queries in logs. | ||||
|   config.active_record.verbose_query_logs = true | ||||
|  | ||||
|   # Debug mode disables concatenation and preprocessing of assets. | ||||
|   # This option may cause significant delays in view rendering with a large | ||||
|   # number of complex assets. | ||||
|   config.assets.debug = true | ||||
|  | ||||
|   # Suppress logger output for asset requests. | ||||
|   config.assets.quiet = true | ||||
|  | ||||
|   # Raises error for missing translations. | ||||
|   # config.action_view.raise_on_missing_translations = true | ||||
|  | ||||
|   # Use an evented file watcher to asynchronously detect changes in source code, | ||||
|   # routes, locales, etc. This feature depends on the listen gem. | ||||
|   # | ||||
|   config.action_mailer.raise_delivery_errors = false | ||||
|   config.action_mailer.delivery_method = :smtp | ||||
|   config.action_mailer.asset_host = ENV['APP_ASSETS_HOST'] | ||||
|   config.action_mailer.default_url_options = { host: ENV['APP_HOST'],from: 'info@helpbuild.co'} | ||||
|   config.action_mailer.smtp_settings = { | ||||
|       address: ENV['APP_SMTP_HOST'], | ||||
|       port: ENV['APP_SMTP_PORT'] | ||||
|   } | ||||
|  | ||||
|   config.action_mailer.default_options = { from: 'info@helpbuild.co' } | ||||
|   config.file_watcher = ActiveSupport::EventedFileUpdateChecker | ||||
| end | ||||
							
								
								
									
										126
									
								
								portal/config/environments/production.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								portal/config/environments/production.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| Rails.application.configure do | ||||
|   # Settings specified here will take precedence over those in config/application.rb. | ||||
|  | ||||
|   # Code is not reloaded between requests. | ||||
|   config.cache_classes = true | ||||
|  | ||||
|   # Eager load code on boot. This eager loads most of Rails and | ||||
|   # your application in memory, allowing both threaded web servers | ||||
|   # and those relying on copy on write to perform better. | ||||
|   # Rake tasks automatically ignore this option for performance. | ||||
|   config.eager_load = true | ||||
|  | ||||
|   # Full error reports are disabled and caching is turned on. | ||||
|   config.consider_all_requests_local       = false | ||||
|   config.action_controller.perform_caching = true | ||||
|  | ||||
|   # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] | ||||
|   # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). | ||||
|   # config.require_master_key = true | ||||
|  | ||||
|   # Disable serving static files from the `/public` folder by default since | ||||
|   # Apache or NGINX already handles this. | ||||
|   config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? | ||||
|  | ||||
|   # Compress CSS using a preprocessor. | ||||
|   # config.assets.css_compressor = :sass | ||||
|  | ||||
|   # Do not fallback to assets pipeline if a precompiled asset is missed. | ||||
|   config.assets.compile = false | ||||
|  | ||||
|   # Enable serving of images, stylesheets, and JavaScripts from an asset server. | ||||
|   # config.action_controller.asset_host = 'http://assets.example.com' | ||||
|  | ||||
|   # Specifies the header that your server uses for sending files. | ||||
|   # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache | ||||
|   # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX | ||||
|  | ||||
|   # Store uploaded files on the local file system (see config/storage.yml for options). | ||||
|   config.active_storage.service = :contabo | ||||
|  | ||||
|   # Mount Action Cable outside main process or domain. | ||||
|   # config.action_cable.mount_path = nil | ||||
|   # config.action_cable.url = 'wss://example.com/cable' | ||||
|   # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] | ||||
|  | ||||
|   # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. | ||||
|   # config.force_ssl = true | ||||
|  | ||||
|   # Use the lowest log level to ensure availability of diagnostic information | ||||
|   # when problems arise. | ||||
|   config.log_level = :debug | ||||
|  | ||||
|   # Prepend all log lines with the following tags. | ||||
|   config.log_tags = [:request_id] | ||||
|  | ||||
|   # Use a different cache store in production. | ||||
|   # config.cache_store = :mem_cache_store | ||||
|  | ||||
|   # Use a real queuing backend for Active Job (and separate queues per environment). | ||||
|   # config.active_job.queue_adapter     = :resque | ||||
|   # config.active_job.queue_name_prefix = "helpbuild_production" | ||||
|  | ||||
|   config.action_mailer.perform_caching = false | ||||
|  | ||||
|   # Ignore bad email addresses and do not raise email delivery errors. | ||||
|   # Set this to true and configure the email server for immediate delivery to raise delivery errors. | ||||
|   # config.action_mailer.raise_delivery_errors = false | ||||
|  | ||||
|   # Enable locale fallbacks for I18n (makes lookups for any locale fall back to | ||||
|   # the I18n.default_locale when a translation cannot be found). | ||||
|   config.i18n.fallbacks = true | ||||
|  | ||||
|   # Send deprecation notices to registered listeners. | ||||
|   config.active_support.deprecation = :notify | ||||
|  | ||||
|   # Use default logging formatter so that PID and timestamp are not suppressed. | ||||
|   config.log_formatter = ::Logger::Formatter.new | ||||
|  | ||||
|   # Use a different logger for distributed setups. | ||||
|   # require 'syslog/logger' | ||||
|   # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') | ||||
|  | ||||
|   if ENV['RAILS_LOG_TO_STDOUT'].present? | ||||
|     logger           = ActiveSupport::Logger.new(STDOUT) | ||||
|     logger.formatter = config.log_formatter | ||||
|     config.logger    = ActiveSupport::TaggedLogging.new(logger) | ||||
|   end | ||||
|  | ||||
|   # Do not dump schema after migrations. | ||||
|   config.active_record.dump_schema_after_migration = false | ||||
|   config.action_mailer.delivery_method = :smtp | ||||
|  | ||||
|   Rails.application.routes.default_url_options = { host: ENV['APP_HOST'] } | ||||
|   config.action_mailer.default_url_options = { host: ENV['APP_HOST'] } | ||||
|   config.action_mailer.asset_host = ENV['APP_ASSETS_HOST'] | ||||
|   config.action_mailer.smtp_settings = { | ||||
|       address: ENV['APP_SMTP_HOST'], | ||||
|       port: ENV['APP_SMTP_PORT'], | ||||
|       user_name: ENV['APP_SMTP_UID'], | ||||
|       password: ENV['APP_SMTP_PWD'], | ||||
|       authentication: 'plain', | ||||
|       enable_starttls_auto: true | ||||
|   } | ||||
|   config.action_mailer.default_options = { from: 'info@helpbuild.co' } | ||||
|  | ||||
|   # Inserts middleware to perform automatic connection switching. | ||||
|   # The `database_selector` hash is used to pass options to the DatabaseSelector | ||||
|   # middleware. The `delay` is used to determine how long to wait after a write | ||||
|   # to send a subsequent read to the primary. | ||||
|   # | ||||
|   # The `database_resolver` class is used by the middleware to determine which | ||||
|   # database is appropriate to use based on the time delay. | ||||
|   # | ||||
|   # The `database_resolver_context` class is used by the middleware to set | ||||
|   # timestamps for the last write to the primary. The resolver uses the context | ||||
|   # class timestamps to determine how long to wait before reading from the | ||||
|   # replica. | ||||
|   # | ||||
|   # By default Rails will store a last write timestamp in the session. The | ||||
|   # DatabaseSelector middleware is designed as such you can define your own | ||||
|   # strategy for connection switching and pass that into the middleware through | ||||
|   # these configuration options. | ||||
|   # config.active_record.database_selector = { delay: 2.seconds } | ||||
|   # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver | ||||
|   # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session | ||||
| end | ||||
							
								
								
									
										58
									
								
								portal/config/environments/test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								portal/config/environments/test.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | ||||
| # The test environment is used exclusively to run your application's | ||||
| # test suite. You never need to work with it otherwise. Remember that | ||||
| # your test database is "scratch space" for the test suite and is wiped | ||||
| # and recreated between test runs. Don't rely on the data there! | ||||
|  | ||||
| Rails.application.configure do | ||||
|   # Settings specified here will take precedence over those in config/application.rb. | ||||
|  | ||||
|   config.cache_classes = false | ||||
|   config.action_view.cache_template_loading = true | ||||
|  | ||||
|   # Do not eager load code on boot. This avoids loading your whole application | ||||
|   # just for the purpose of running a single test. If you are using a tool that | ||||
|   # preloads Rails for running tests, you may have to set it to true. | ||||
|   config.eager_load = false | ||||
|  | ||||
|   # Configure public file server for tests with Cache-Control for performance. | ||||
|   config.public_file_server.enabled = true | ||||
|   config.public_file_server.headers = { | ||||
|     'Cache-Control' => "public, max-age=#{1.hour.to_i}" | ||||
|   } | ||||
|  | ||||
|   # Show full error reports and disable caching. | ||||
|   config.consider_all_requests_local       = true | ||||
|   config.action_controller.perform_caching = false | ||||
|   config.cache_store = :null_store | ||||
|  | ||||
|   # Raise exceptions instead of rendering exception templates. | ||||
|   config.action_dispatch.show_exceptions = false | ||||
|  | ||||
|   # Disable request forgery protection in test environment. | ||||
|   config.action_controller.allow_forgery_protection = false | ||||
|  | ||||
|   # Store uploaded files on the local file system in a temporary directory. | ||||
|   config.active_storage.service = :test | ||||
|  | ||||
|   config.action_mailer.perform_caching = false | ||||
|  | ||||
|   # Tell Action Mailer not to deliver emails to the real world. | ||||
|   # The :test delivery method accumulates sent emails in the | ||||
|   # ActionMailer::Base.deliveries array. | ||||
|   config.action_mailer.raise_delivery_errors = false | ||||
|   # config.action_mailer.delivery_method = :smtp | ||||
|   config.action_mailer.delivery_method = :test | ||||
|   config.action_mailer.asset_host = ENV['APP_ASSETS_HOST'] | ||||
|   config.action_mailer.default_url_options = { host: ENV['APP_HOST'] } | ||||
|   config.action_mailer.smtp_settings = { | ||||
|     address: ENV['APP_SMTP_HOST'], | ||||
|     port: ENV['APP_SMTP_PORT'] | ||||
|   } | ||||
|  | ||||
|   # Print deprecation notices to the stderr. | ||||
|   config.active_support.deprecation = :stderr | ||||
|  | ||||
|   # Raises error for missing translations. | ||||
|   # config.action_view.raise_on_missing_translations = true | ||||
|   config.action_mailer.default_url_options = { :host => "test.helpbuild.co",:from => 'test@helpbuild.co' } | ||||
| end | ||||
| @@ -0,0 +1,8 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # ActiveSupport::Reloader.to_prepare do | ||||
| #   ApplicationController.renderer.defaults.merge!( | ||||
| #     http_host: 'example.org', | ||||
| #     https: false | ||||
| #   ) | ||||
| # end | ||||
							
								
								
									
										14
									
								
								portal/config/initializers/assets.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								portal/config/initializers/assets.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Version of your assets, change this if you want to expire all your assets. | ||||
| Rails.application.config.assets.version = '1.0' | ||||
|  | ||||
| # Add additional assets to the asset load path. | ||||
| # Rails.application.config.assets.paths << Emoji.images_path | ||||
| # Add Yarn node_modules folder to the asset load path. | ||||
| Rails.application.config.assets.paths << Rails.root.join('node_modules') | ||||
|  | ||||
| # Precompile additional assets. | ||||
| # application.js, application.css, and all non-JS/CSS in the app/assets | ||||
| # folder are already added. | ||||
| # Rails.application.config.assets.precompile += %w( admin.js admin.css ) | ||||
							
								
								
									
										7
									
								
								portal/config/initializers/backtrace_silencers.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								portal/config/initializers/backtrace_silencers.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. | ||||
| # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } | ||||
|  | ||||
| # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. | ||||
| # Rails.backtrace_cleaner.remove_silencers! | ||||
							
								
								
									
										30
									
								
								portal/config/initializers/content_security_policy.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								portal/config/initializers/content_security_policy.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Define an application-wide content security policy | ||||
| # For further information see the following documentation | ||||
| # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy | ||||
|  | ||||
| # Rails.application.config.content_security_policy do |policy| | ||||
| #   policy.default_src :self, :https | ||||
| #   policy.font_src    :self, :https, :data | ||||
| #   policy.img_src     :self, :https, :data | ||||
| #   policy.object_src  :none | ||||
| #   policy.script_src  :self, :https | ||||
| #   policy.style_src   :self, :https | ||||
| #   # If you are using webpack-dev-server then specify webpack-dev-server host | ||||
| #   policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? | ||||
|  | ||||
| #   # Specify URI for violation reports | ||||
| #   # policy.report_uri "/csp-violation-report-endpoint" | ||||
| # end | ||||
|  | ||||
| # If you are using UJS then enable automatic nonce generation | ||||
| # Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } | ||||
|  | ||||
| # Set the nonce only to specific directives | ||||
| # Rails.application.config.content_security_policy_nonce_directives = %w(script-src) | ||||
|  | ||||
| # Report CSP violations to a specified URI | ||||
| # For further information see the following documentation: | ||||
| # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only | ||||
| # Rails.application.config.content_security_policy_report_only = true | ||||
							
								
								
									
										5
									
								
								portal/config/initializers/cookies_serializer.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								portal/config/initializers/cookies_serializer.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Specify a serializer for the signed and encrypted cookie jars. | ||||
| # Valid options are :json, :marshal, and :hybrid. | ||||
| Rails.application.config.action_dispatch.cookies_serializer = :json | ||||
							
								
								
									
										301
									
								
								portal/config/initializers/devise.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										301
									
								
								portal/config/initializers/devise.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,301 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| # Use this hook to configure devise mailer, warden hooks and so forth. | ||||
| # Many of these configuration options can be set straight in your model. | ||||
| Devise.setup do |config| | ||||
|   # The secret key used by Devise. Devise uses this key to generate | ||||
|   # random tokens. Changing this key will render invalid all existing | ||||
|   # confirmation, reset password and unlock tokens in the database. | ||||
|   # Devise will use the `secret_key_base` as its `secret_key` | ||||
|   # by default. You can change it below and use your own secret key. | ||||
|   # config.secret_key = '482cc5db7453fd2deb6c5ebc9941ae3320cf0aae6297bd9bfbbebd1dd287f622a168eb452d0020a4c3899b60ea8c2e0f9f94fbaad2ee7f19ea9121fe67634e7d' | ||||
|  | ||||
|   # ==> Controller configuration | ||||
|   # Configure the parent class to the devise controllers. | ||||
|   # config.parent_controller = 'DeviseController' | ||||
|  | ||||
|   # ==> Mailer Configuration | ||||
|   # Configure the e-mail address which will be shown in Devise::Mailer, | ||||
|   # note that it will be overwritten if you use your own mailer class | ||||
|   # with default "from" parameter. | ||||
|   config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com' | ||||
|   config.omniauth :keycloakopenid, ENV['KEYCLOAK_CLIENT_ID'], ENV['KEYCLOAK_CLIENT_SECRET'], | ||||
|                   client_options: { site: ENV['KEYCLOAK_CLIENT_SERVER'], realm: ENV['KEYCLOAK_CLIENT_REALM'] }, strategy_class: OmniAuth::Strategies::KeycloakOpenId | ||||
|  | ||||
|   # Configure the class responsible to send e-mails. | ||||
|   # config.mailer = 'Devise::Mailer' | ||||
|  | ||||
|   # Configure the parent class responsible to send e-mails. | ||||
|   # config.parent_mailer = 'ActionMailer::Base' | ||||
|  | ||||
|   # ==> ORM configuration | ||||
|   # Load and configure the ORM. Supports :active_record (default) and | ||||
|   # :mongoid (bson_ext recommended) by default. Other ORMs may be | ||||
|   # available as additional gems. | ||||
|   require 'devise/orm/active_record' | ||||
|  | ||||
|   # ==> Configuration for any authentication mechanism | ||||
|   # Configure which keys are used when authenticating a user. The default is | ||||
|   # just :email. You can configure it to use [:username, :subdomain], so for | ||||
|   # authenticating a user, both parameters are required. Remember that those | ||||
|   # parameters are used only when authenticating and not when retrieving from | ||||
|   # session. If you need permissions, you should implement that in a before filter. | ||||
|   # You can also supply a hash where the value is a boolean determining whether | ||||
|   # or not authentication should be aborted when the value is not present. | ||||
|   # config.authentication_keys = [:email] | ||||
|  | ||||
|   # Configure parameters from the request object used for authentication. Each entry | ||||
|   # given should be a request method and it will automatically be passed to the | ||||
|   # find_for_authentication method and considered in your model lookup. For instance, | ||||
|   # if you set :request_keys to [:subdomain], :subdomain will be used on authentication. | ||||
|   # The same considerations mentioned for authentication_keys also apply to request_keys. | ||||
|   # config.request_keys = [] | ||||
|  | ||||
|   # Configure which authentication keys should be case-insensitive. | ||||
|   # These keys will be downcased upon creating or modifying a user and when used | ||||
|   # to authenticate or find a user. Default is :email. | ||||
|   config.case_insensitive_keys = [:email] | ||||
|  | ||||
|   # Configure which authentication keys should have whitespace stripped. | ||||
|   # These keys will have whitespace before and after removed upon creating or | ||||
|   # modifying a user and when used to authenticate or find a user. Default is :email. | ||||
|   config.strip_whitespace_keys = [:email] | ||||
|  | ||||
|   # Tell if authentication through request.params is enabled. True by default. | ||||
|   # It can be set to an array that will enable params authentication only for the | ||||
|   # given strategies, for example, `config.params_authenticatable = [:database]` will | ||||
|   # enable it only for database (email + password) authentication. | ||||
|   # config.params_authenticatable = true | ||||
|  | ||||
|   # Tell if authentication through HTTP Auth is enabled. False by default. | ||||
|   # It can be set to an array that will enable http authentication only for the | ||||
|   # given strategies, for example, `config.http_authenticatable = [:database]` will | ||||
|   # enable it only for database authentication. The supported strategies are: | ||||
|   # :database      = Support basic authentication with authentication key + password | ||||
|   # config.http_authenticatable = false | ||||
|  | ||||
|   # If 401 status code should be returned for AJAX requests. True by default. | ||||
|   # config.http_authenticatable_on_xhr = true | ||||
|  | ||||
|   # The realm used in Http Basic Authentication. 'Application' by default. | ||||
|   # config.http_authentication_realm = 'Application' | ||||
|  | ||||
|   # It will change confirmation, password recovery and other workflows | ||||
|   # to behave the same regardless if the e-mail provided was right or wrong. | ||||
|   # Does not affect registerable. | ||||
|   # config.paranoid = true | ||||
|  | ||||
|   # By default Devise will store the user in session. You can skip storage for | ||||
|   # particular strategies by setting this option. | ||||
|   # Notice that if you are skipping storage for all authentication paths, you | ||||
|   # may want to disable generating routes to Devise's sessions controller by | ||||
|   # passing skip: :sessions to `devise_for` in your config/routes.rb | ||||
|   config.skip_session_storage = [:http_auth] | ||||
|  | ||||
|   # By default, Devise cleans up the CSRF token on authentication to | ||||
|   # avoid CSRF token fixation attacks. This means that, when using AJAX | ||||
|   # requests for sign in and sign up, you need to get a new CSRF token | ||||
|   # from the server. You can disable this option at your own risk. | ||||
|   config.clean_up_csrf_token_on_authentication = false | ||||
|  | ||||
|   # When false, Devise will not attempt to reload routes on eager load. | ||||
|   # This can reduce the time taken to boot the app but if your application | ||||
|   # requires the Devise mappings to be loaded during boot time the application | ||||
|   # won't boot properly. | ||||
|   # config.reload_routes = true | ||||
|  | ||||
|   # ==> Configuration for :database_authenticatable | ||||
|   # For bcrypt, this is the cost for hashing the password and defaults to 11. If | ||||
|   # using other algorithms, it sets how many times you want the password to be hashed. | ||||
|   # | ||||
|   # Limiting the stretches to just one in testing will increase the performance of | ||||
|   # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use | ||||
|   # a value less than 10 in other environments. Note that, for bcrypt (the default | ||||
|   # algorithm), the cost increases exponentially with the number of stretches (e.g. | ||||
|   # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation). | ||||
|   config.stretches = Rails.env.test? ? 1 : 11 | ||||
|  | ||||
|   # Set up a pepper to generate the hashed password. | ||||
|   # config.pepper = '15abab5ffdbb130f442e1cd70e19c0fd1ab9baaea4732119fe366f5c2efa8fb30e6a584c832b2627bb4bca7e97b0687a597663c62778489c67a297a5eac9a3e8' | ||||
|  | ||||
|   # Send a notification to the original email when the user's email is changed. | ||||
|   # config.send_email_changed_notification = false | ||||
|  | ||||
|   # Send a notification email when the user's password is changed. | ||||
|   # config.send_password_change_notification = false | ||||
|  | ||||
|   # ==> Configuration for :confirmable | ||||
|   # A period that the user is allowed to access the website even without | ||||
|   # confirming their account. For instance, if set to 2.days, the user will be | ||||
|   # able to access the website for two days without confirming their account, | ||||
|   # access will be blocked just in the third day. | ||||
|   # You can also set it to nil, which will allow the user to access the website | ||||
|   # without confirming their account. | ||||
|   # Default is 0.days, meaning the user cannot access the website without | ||||
|   # confirming their account. | ||||
|   # config.allow_unconfirmed_access_for = 2.days | ||||
|  | ||||
|   # A period that the user is allowed to confirm their account before their | ||||
|   # token becomes invalid. For example, if set to 3.days, the user can confirm | ||||
|   # their account within 3 days after the mail was sent, but on the fourth day | ||||
|   # their account can't be confirmed with the token any more. | ||||
|   # Default is nil, meaning there is no restriction on how long a user can take | ||||
|   # before confirming their account. | ||||
|   # config.confirm_within = 3.days | ||||
|  | ||||
|   # If true, requires any email changes to be confirmed (exactly the same way as | ||||
|   # initial account confirmation) to be applied. Requires additional unconfirmed_email | ||||
|   # db field (see migrations). Until confirmed, new email is stored in | ||||
|   # unconfirmed_email column, and copied to email column on successful confirmation. | ||||
|   config.reconfirmable = true | ||||
|  | ||||
|   # Defines which key will be used when confirming an account | ||||
|   # config.confirmation_keys = [:email] | ||||
|  | ||||
|   # ==> Configuration for :rememberable | ||||
|   # The time the user will be remembered without asking for credentials again. | ||||
|   # config.remember_for = 2.weeks | ||||
|  | ||||
|   # Invalidates all the remember me tokens when the user signs out. | ||||
|   config.expire_all_remember_me_on_sign_out = true | ||||
|  | ||||
|   # If true, extends the user's remember period when remembered via cookie. | ||||
|   # config.extend_remember_period = false | ||||
|  | ||||
|   # Options to be passed to the created cookie. For instance, you can set | ||||
|   # secure: true in order to force SSL only cookies. | ||||
|   # config.rememberable_options = {} | ||||
|  | ||||
|   # ==> Configuration for :validatable | ||||
|   # Range for password length. | ||||
|   config.password_length = 6..128 | ||||
|  | ||||
|   # Email regex used to validate email formats. It simply asserts that | ||||
|   # one (and only one) @ exists in the given string. This is mainly | ||||
|   # to give user feedback and not to assert the e-mail validity. | ||||
|   config.email_regexp = /\A[^@\s]+@[^@\s]+\z/ | ||||
|  | ||||
|   # ==> Configuration for :timeoutable | ||||
|   # The time you want to timeout the user session without activity. After this | ||||
|   # time the user will be asked for credentials again. Default is 30 minutes. | ||||
|   # config.timeout_in = 30.minutes | ||||
|  | ||||
|   # ==> Configuration for :lockable | ||||
|   # Defines which strategy will be used to lock an account. | ||||
|   # :failed_attempts = Locks an account after a number of failed attempts to sign in. | ||||
|   # :none            = No lock strategy. You should handle locking by yourself. | ||||
|   # config.lock_strategy = :failed_attempts | ||||
|  | ||||
|   # Defines which key will be used when locking and unlocking an account | ||||
|   # config.unlock_keys = [:email] | ||||
|  | ||||
|   # Defines which strategy will be used to unlock an account. | ||||
|   # :email = Sends an unlock link to the user email | ||||
|   # :time  = Re-enables login after a certain amount of time (see :unlock_in below) | ||||
|   # :both  = Enables both strategies | ||||
|   # :none  = No unlock strategy. You should handle unlocking by yourself. | ||||
|   # config.unlock_strategy = :both | ||||
|  | ||||
|   # Number of authentication tries before locking an account if lock_strategy | ||||
|   # is failed attempts. | ||||
|   # config.maximum_attempts = 20 | ||||
|  | ||||
|   # Time interval to unlock the account if :time is enabled as unlock_strategy. | ||||
|   # config.unlock_in = 1.hour | ||||
|  | ||||
|   # Warn on the last attempt before the account is locked. | ||||
|   # config.last_attempt_warning = true | ||||
|  | ||||
|   # ==> Configuration for :recoverable | ||||
|   # | ||||
|   # Defines which key will be used when recovering the password for an account | ||||
|   # config.reset_password_keys = [:email] | ||||
|  | ||||
|   # Time interval you can reset your password with a reset password key. | ||||
|   # Don't put a too small interval or your users won't have the time to | ||||
|   # change their passwords. | ||||
|   config.reset_password_within = 6.hours | ||||
|  | ||||
|   # When set to false, does not sign a user in automatically after their password is | ||||
|   # reset. Defaults to true, so a user is signed in automatically after a reset. | ||||
|   # config.sign_in_after_reset_password = true | ||||
|  | ||||
|   # ==> Configuration for :encryptable | ||||
|   # Allow you to use another hashing or encryption algorithm besides bcrypt (default). | ||||
|   # You can use :sha1, :sha512 or algorithms from others authentication tools as | ||||
|   # :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20 | ||||
|   # for default behavior) and :restful_authentication_sha1 (then you should set | ||||
|   # stretches to 10, and copy REST_AUTH_SITE_KEY to pepper). | ||||
|   # | ||||
|   # Require the `devise-encryptable` gem when using anything other than bcrypt | ||||
|   # config.encryptor = :sha512 | ||||
|  | ||||
|   # ==> Scopes configuration | ||||
|   # Turn scoped views on. Before rendering "sessions/new", it will first check for | ||||
|   # "users/sessions/new". It's turned off by default because it's slower if you | ||||
|   # are using only default views. | ||||
|   # config.scoped_views = false | ||||
|  | ||||
|   # Configure the default scope given to Warden. By default it's the first | ||||
|   # devise role declared in your routes (usually :user). | ||||
|   # config.default_scope = :user | ||||
|  | ||||
|   # Set this configuration to false if you want /users/sign_out to sign out | ||||
|   # only the current scope. By default, Devise signs out all scopes. | ||||
|   # config.sign_out_all_scopes = true | ||||
|  | ||||
|   # ==> Navigation configuration | ||||
|   # Lists the formats that should be treated as navigational. Formats like | ||||
|   # :html, should redirect to the sign in page when the user does not have | ||||
|   # access, but formats like :xml or :json, should return 401. | ||||
|   # | ||||
|   # If you have any extra navigational formats, like :iphone or :mobile, you | ||||
|   # should add them to the navigational formats lists. | ||||
|   # | ||||
|   # The "*/*" below is required to match Internet Explorer requests. | ||||
|   # config.navigational_formats = ['*/*', :html] | ||||
|  | ||||
|   # The default HTTP method used to sign out a resource. Default is :delete. | ||||
|   config.sign_out_via = :delete | ||||
|  | ||||
|   # ==> OmniAuth | ||||
|   # Add a new OmniAuth provider. Check the wiki for more information on setting | ||||
|   # up on your models and hooks. | ||||
|   # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' | ||||
|  | ||||
|   # ==> Warden configuration | ||||
|   # If you want to use other strategies, that are not supported by Devise, or | ||||
|   # change the failure app, you can configure them inside the config.warden block. | ||||
|   # | ||||
|   # config.warden do |manager| | ||||
|   #   manager.intercept_401 = false | ||||
|   #   manager.default_strategies(scope: :user).unshift :some_external_strategy | ||||
|   # end | ||||
|  | ||||
|   # ==> Mountable engine configurations | ||||
|   # When using Devise inside an engine, let's call it `MyEngine`, and this engine | ||||
|   # is mountable, there are some extra configurations to be taken into account. | ||||
|   # The following options are available, assuming the engine is mounted as: | ||||
|   # | ||||
|   #     mount MyEngine, at: '/my_engine' | ||||
|   # | ||||
|   # The router that invoked `devise_for`, in the example above, would be: | ||||
|   # config.router_name = :my_engine | ||||
|   # | ||||
|   # When using OmniAuth, Devise cannot automatically set OmniAuth path, | ||||
|   # so you need to do it manually. For the users scope, it would be: | ||||
|   # config.omniauth_path_prefix = '/my_engine/users/auth' | ||||
|  | ||||
|   # ==> Turbolinks configuration | ||||
|   # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly: | ||||
|   # | ||||
|   # ActiveSupport.on_load(:devise_failure_app) do | ||||
|   #   include Turbolinks::Controller | ||||
|   # end | ||||
|  | ||||
|   # ==> Configuration for :registerable | ||||
|  | ||||
|   # When set to false, does not sign a user in automatically after their password is | ||||
|   # changed. Defaults to true, so a user is signed in automatically after changing a password. | ||||
|   # config.sign_in_after_change_password = true | ||||
| end | ||||
							
								
								
									
										4
									
								
								portal/config/initializers/filter_parameter_logging.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								portal/config/initializers/filter_parameter_logging.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Configure sensitive parameters which will be filtered from the log file. | ||||
| Rails.application.config.filter_parameters += [:password] | ||||
							
								
								
									
										4
									
								
								portal/config/initializers/generators.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								portal/config/initializers/generators.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| # config/initializers/generators.rb | ||||
| Rails.application.config.generators do |g| | ||||
|   g.orm :active_record, primary_key_type: :uuid | ||||
| end | ||||
							
								
								
									
										16
									
								
								portal/config/initializers/inflections.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								portal/config/initializers/inflections.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Add new inflection rules using the following format. Inflections | ||||
| # are locale specific, and you may define rules for as many different | ||||
| # locales as you wish. All of these examples are active by default: | ||||
| # ActiveSupport::Inflector.inflections(:en) do |inflect| | ||||
| #   inflect.plural /^(ox)$/i, '\1en' | ||||
| #   inflect.singular /^(ox)en/i, '\1' | ||||
| #   inflect.irregular 'person', 'people' | ||||
| #   inflect.uncountable %w( fish sheep ) | ||||
| # end | ||||
|  | ||||
| # These inflection rules are supported but not enabled by default: | ||||
| # ActiveSupport::Inflector.inflections(:en) do |inflect| | ||||
| #   inflect.acronym 'RESTful' | ||||
| # end | ||||
							
								
								
									
										16
									
								
								portal/config/initializers/keycloak.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								portal/config/initializers/keycloak.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| # Set proxy to connect in keycloak server | ||||
| Keycloak.proxy = '' | ||||
| # If true, then all request exception will explode in application (this is the default value) | ||||
| Keycloak.generate_request_exception = true | ||||
| # controller that manage the user session | ||||
| Keycloak.keycloak_controller = 'session' | ||||
| # realm name (only if the installation file is not present) | ||||
| Keycloak.realm = ENV['KEYCLOAK_CLIENT_REALM'] | ||||
| # realm url (only if the installation file is not present) | ||||
| Keycloak.auth_server_url = ENV['KEYCLOAK_CLIENT_SERVER_AUTH'] | ||||
| # The introspect of the token will be executed every time the Keycloak::Client.has_role? method is invoked, if this setting is set to true. | ||||
| Keycloak.validate_token_when_call_has_role = false | ||||
| # secret (only if the installation file is not present) | ||||
| Keycloak.secret = ENV['KEYCLOAK_CLIENT_SECRET'] | ||||
| # resource (client_id, only if the installation file is not present) | ||||
| Keycloak.resource = ENV['KEYCLOAK_CLIENT_ID'] | ||||
							
								
								
									
										4
									
								
								portal/config/initializers/mime_types.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								portal/config/initializers/mime_types.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # Add new mime types for use in respond_to blocks: | ||||
| # Mime::Type.register "text/richtext", :rtf | ||||
							
								
								
									
										182
									
								
								portal/config/initializers/pagy.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								portal/config/initializers/pagy.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,182 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| # Pagy initializer file (4.7.1) | ||||
| # Customize only what you really need and notice that Pagy works also without any of the following lines. | ||||
| # Should you just cherry pick part of this file, please maintain the require-order of the extras | ||||
|  | ||||
|  | ||||
| # Pagy Variables | ||||
| # See https://ddnexus.github.io/pagy/api/pagy#variables | ||||
| # All the Pagy::VARS are set for all the Pagy instances but can be overridden | ||||
| # per instance by just passing them to Pagy.new or the #pagy controller method | ||||
|  | ||||
|  | ||||
| # Instance variables | ||||
| # See https://ddnexus.github.io/pagy/api/pagy#instance-variables | ||||
| # Pagy::VARS[:page]   = 1                                  # default | ||||
| # Pagy::VARS[:items]  = 20                                 # default | ||||
| # Pagy::VARS[:outset] = 0                                  # default | ||||
|  | ||||
|  | ||||
| # Other Variables | ||||
| # See https://ddnexus.github.io/pagy/api/pagy#other-variables | ||||
| # Pagy::VARS[:size]       = [1,4,4,1]                       # default | ||||
| # Pagy::VARS[:page_param] = :page                           # default | ||||
| # Pagy::VARS[:params]     = {}                              # default | ||||
| # Pagy::VARS[:fragment]   = '#fragment'                     # example | ||||
| Pagy::VARS[:link_extra] = 'data-remote="true"'            # example | ||||
| # Pagy::VARS[:i18n_key]   = 'pagy.item_name'                # default | ||||
| # Pagy::VARS[:cycle]      = true                            # example | ||||
|  | ||||
|  | ||||
| # Extras | ||||
| # See https://ddnexus.github.io/pagy/extras | ||||
|  | ||||
|  | ||||
| # Backend Extras | ||||
|  | ||||
| # Array extra: Paginate arrays efficiently, avoiding expensive array-wrapping and without overriding | ||||
| # See https://ddnexus.github.io/pagy/extras/array | ||||
| # require 'pagy/extras/array' | ||||
|  | ||||
| # Countless extra: Paginate without any count, saving one query per rendering | ||||
| # See https://ddnexus.github.io/pagy/extras/countless | ||||
| # require 'pagy/extras/countless' | ||||
|  | ||||
| # Elasticsearch Rails extra: Paginate `ElasticsearchRails::Results` objects | ||||
| # See https://ddnexus.github.io/pagy/extras/elasticsearch_rails | ||||
| # default :pagy_search method: change only if you use | ||||
| # also the searchkick extra that defines the same | ||||
| # VARS[:elasticsearch_rails_search_method] = :pagy_search | ||||
| # require 'pagy/extras/elasticsearch_rails' | ||||
|  | ||||
| # Searchkick extra: Paginate `Searchkick::Results` objects | ||||
| # See https://ddnexus.github.io/pagy/extras/searchkick | ||||
| # default :pagy_search method: change only if you use | ||||
| # also the elasticsearch_rails extra that defines the same | ||||
| # VARS[:searchkick_search_method] = :pagy_search | ||||
| # require 'pagy/extras/searchkick' | ||||
|  | ||||
| # Frontend Extras | ||||
|  | ||||
| # Bootstrap extra: Add nav, nav_js and combo_nav_js helpers and templates for Bootstrap pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/bootstrap | ||||
| # require 'pagy/extras/bootstrap' | ||||
|  | ||||
| # Bulma extra: Add nav, nav_js and combo_nav_js helpers and templates for Bulma pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/bulma | ||||
| # require 'pagy/extras/bulma' | ||||
|  | ||||
| # Foundation extra: Add nav, nav_js and combo_nav_js helpers and templates for Foundation pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/foundation | ||||
| # require 'pagy/extras/foundation' | ||||
|  | ||||
| # Materialize extra: Add nav, nav_js and combo_nav_js helpers for Materialize pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/materialize | ||||
| # require 'pagy/extras/materialize' | ||||
|  | ||||
| # Navs extra: Add nav_js and combo_nav_js javascript helpers | ||||
| # Notice: the other frontend extras add their own framework-styled versions, | ||||
| # so require this extra only if you need the unstyled version | ||||
| # See https://ddnexus.github.io/pagy/extras/navs | ||||
| # require 'pagy/extras/navs' | ||||
|  | ||||
| # Semantic extra: Add nav, nav_js and combo_nav_js helpers for Semantic UI pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/semantic | ||||
| # require 'pagy/extras/semantic' | ||||
|  | ||||
| # UIkit extra: Add nav helper and templates for UIkit pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/uikit | ||||
| # require 'pagy/extras/uikit' | ||||
|  | ||||
| # Multi size var used by the *_nav_js helpers | ||||
| # See https://ddnexus.github.io/pagy/extras/navs#steps | ||||
| # Pagy::VARS[:steps] = { 0 => [2,3,3,2], 540 => [3,5,5,3], 720 => [5,7,7,5] }   # example | ||||
|  | ||||
|  | ||||
| # Feature Extras | ||||
|  | ||||
| # Headers extra: http response headers (and other helpers) useful for API pagination | ||||
| # See http://ddnexus.github.io/pagy/extras/headers | ||||
| # require 'pagy/extras/headers' | ||||
| # Pagy::VARS[:headers] = { page: 'Current-Page', items: 'Page-Items', count: 'Total-Count', pages: 'Total-Pages' }     # default | ||||
|  | ||||
| # Support extra: Extra support for features like: incremental, infinite, auto-scroll pagination | ||||
| # See https://ddnexus.github.io/pagy/extras/support | ||||
| # require 'pagy/extras/support' | ||||
|  | ||||
| # Items extra: Allow the client to request a custom number of items per page with an optional selector UI | ||||
| # See https://ddnexus.github.io/pagy/extras/items | ||||
| # require 'pagy/extras/items' | ||||
| # Pagy::VARS[:items_param] = :items    # default | ||||
| # Pagy::VARS[:max_items]   = 100       # default | ||||
| # set to false if you want to make :enable_items_extra an opt-in variable | ||||
| # Pagy::VARS[:enable_items_extra] = false    # default true | ||||
|  | ||||
| # Overflow extra: Allow for easy handling of overflowing pages | ||||
| # See https://ddnexus.github.io/pagy/extras/overflow | ||||
| # require 'pagy/extras/overflow' | ||||
| # Pagy::VARS[:overflow] = :empty_page    # default  (other options: :last_page and :exception) | ||||
|  | ||||
| # Metadata extra: Provides the pagination metadata to Javascript frameworks like Vue.js, react.js, etc. | ||||
| # See https://ddnexus.github.io/pagy/extras/metadata | ||||
| # you must require the shared internal extra (BEFORE the metadata extra) ONLY if you need also the :sequels | ||||
| # require 'pagy/extras/shared' | ||||
| # require 'pagy/extras/metadata' | ||||
| # For performance reason, you should explicitly set ONLY the metadata you use in the frontend | ||||
| # Pagy::VARS[:metadata] = [:scaffold_url, :count, :page, :prev, :next, :last]    # example | ||||
|  | ||||
| # Trim extra: Remove the page=1 param from links | ||||
| # See https://ddnexus.github.io/pagy/extras/trim | ||||
| # require 'pagy/extras/trim' | ||||
| # after requiring it will trim by default | ||||
| # set to false if you want to make :enable_trim_extra an opt-in variable | ||||
| # Pagy::VARS[:enable_trim_extra] = false # default true | ||||
|  | ||||
|  | ||||
| # Rails | ||||
|  | ||||
| # Rails: extras assets path required by the helpers that use javascript | ||||
| # (pagy*_nav_js, pagy*_combo_nav_js, and pagy_items_selector_js) | ||||
| # See https://ddnexus.github.io/pagy/extras#javascript | ||||
| # Rails.application.config.assets.paths << Pagy.root.join('javascripts') | ||||
|  | ||||
|  | ||||
| # I18n | ||||
|  | ||||
| # Pagy internal I18n: ~18x faster using ~10x less memory than the i18n gem | ||||
| # See https://ddnexus.github.io/pagy/api/frontend#i18n | ||||
| # Notice: No need to configure anything in this section if your app uses only "en" | ||||
| # or if you use the i18n extra below | ||||
| # | ||||
| # Examples: | ||||
| # load the "de" built-in locale: | ||||
| # Pagy::I18n.load(locale: 'de') | ||||
| # | ||||
| # load the "de" locale defined in the custom file at :filepath: | ||||
| # Pagy::I18n.load(locale: 'de', filepath: 'path/to/pagy-de.yml') | ||||
| # | ||||
| # load the "de", "en" and "es" built-in locales: | ||||
| # (the first passed :locale will be used also as the default_locale) | ||||
| # Pagy::I18n.load({locale: 'de'}, | ||||
| #                 {locale: 'en'}, | ||||
| #                 {locale: 'es'}) | ||||
| # | ||||
| # load the "en" built-in locale, a custom "es" locale, | ||||
| # and a totally custom locale complete with a custom :pluralize proc: | ||||
| # (the first passed :locale will be used also as the default_locale) | ||||
| # Pagy::I18n.load({locale: 'en'}, | ||||
| #                 {locale: 'es', filepath: 'path/to/pagy-es.yml'}, | ||||
| #                 {locale: 'xyz',  # not built-in | ||||
| #                  filepath: 'path/to/pagy-xyz.yml', | ||||
| #                  pluralize: lambda{|count| ... } ) | ||||
|  | ||||
|  | ||||
| # I18n extra: uses the standard i18n gem which is ~18x slower using ~10x more memory | ||||
| # than the default pagy internal i18n (see above) | ||||
| # See https://ddnexus.github.io/pagy/extras/i18n | ||||
| # require 'pagy/extras/i18n' | ||||
| require 'pagy/extras/metadata' | ||||
|  | ||||
| # Default i18n key | ||||
| # Pagy::VARS[:i18n_key] = 'pagy.item_name'   # default | ||||
							
								
								
									
										9
									
								
								portal/config/initializers/sidekiq.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								portal/config/initializers/sidekiq.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| Redis.exists_returns_integer =  true | ||||
| if  ENV['RUN_SIDEKIQ_CRON']=='yes' | ||||
|   schedule_file = 'config/schedule.yml' | ||||
|   Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file) if File.exist?(schedule_file) | ||||
|  | ||||
|   Sidekiq.configure_server do | config| | ||||
|     config[:cron_poll_interval] = 1 | ||||
|   end | ||||
| end | ||||
							
								
								
									
										6
									
								
								portal/config/initializers/stripe.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								portal/config/initializers/stripe.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| Rails.configuration.stripe = { | ||||
|     :publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'], | ||||
|     :secret_key      => ENV['STRIPE_SECRET_KEY'] | ||||
| } | ||||
|  | ||||
| Stripe.api_key = Rails.configuration.stripe[:secret_key] | ||||
							
								
								
									
										14
									
								
								portal/config/initializers/wrap_parameters.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								portal/config/initializers/wrap_parameters.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| # Be sure to restart your server when you modify this file. | ||||
|  | ||||
| # This file contains settings for ActionController::ParamsWrapper which | ||||
| # is enabled by default. | ||||
|  | ||||
| # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. | ||||
| ActiveSupport.on_load(:action_controller) do | ||||
|   wrap_parameters format: [:json] | ||||
| end | ||||
|  | ||||
| # To enable root element in JSON for ActiveRecord objects. | ||||
| # ActiveSupport.on_load(:active_record) do | ||||
| #   self.include_root_in_json = true | ||||
| # end | ||||
							
								
								
									
										66
									
								
								portal/config/locales/devise.en.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								portal/config/locales/devise.en.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| # Additional translations at https://github.com/plataformatec/devise/wiki/I18n | ||||
|  | ||||
| en: | ||||
|   devise: | ||||
|     confirmations: | ||||
|       confirmed: "Your email address has been successfully confirmed." | ||||
|       send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes." | ||||
|       send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes." | ||||
|     failure: | ||||
|       already_authenticated: "You are already signed in." | ||||
|       inactive: "Your account is not activated yet." | ||||
|       invalid: "Invalid %{authentication_keys} or password." | ||||
|       locked: "Your account is locked." | ||||
|       last_attempt: "You have one more attempt before your account is locked." | ||||
|       not_found_in_database: "Invalid %{authentication_keys} or password." | ||||
|       timeout: "Your session expired. Please sign in again to continue." | ||||
|       unauthenticated: "You need to sign in or sign up before continuing." | ||||
|       unconfirmed: "You have to confirm your email address before continuing." | ||||
|       account_exists: "The email you provided exists in our records.Please sign in." | ||||
|     mailer: | ||||
|       confirmation_instructions: | ||||
|         subject: "Confirmation instructions" | ||||
|       reset_password_instructions: | ||||
|         subject: "Reset password instructions" | ||||
|       unlock_instructions: | ||||
|         subject: "Unlock instructions" | ||||
|       email_changed: | ||||
|         subject: "Email Changed" | ||||
|       password_change: | ||||
|         subject: "Password Changed" | ||||
|     omniauth_callbacks: | ||||
|       failure: "Could not authenticate you from %{kind} because \"%{reason}\"." | ||||
|       success: "Successfully authenticated from %{kind} account." | ||||
|     passwords: | ||||
|       no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." | ||||
|       send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes." | ||||
|       send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." | ||||
|       updated: "Your password has been changed successfully. You are now signed in." | ||||
|       updated_not_active: "Your password has been changed successfully." | ||||
|     registrations: | ||||
|       destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon." | ||||
|       signed_up: "Welcome! You have signed up successfully." | ||||
|       signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." | ||||
|       signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." | ||||
|       signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account." | ||||
|       update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirmation link to confirm your new email address." | ||||
|       updated: "Your account has been updated successfully." | ||||
|       updated_but_not_signed_in: "Your account has been updated successfully, but since your password was changed, you need to sign in again" | ||||
|     sessions: | ||||
|       signed_in: "Signed in successfully." | ||||
|       signed_out: "Signed out successfully." | ||||
|       already_signed_out: "Signed out successfully." | ||||
|     unlocks: | ||||
|       send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes." | ||||
|       send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes." | ||||
|       unlocked: "Your account has been unlocked successfully. Please sign in to continue." | ||||
|   errors: | ||||
|     messages: | ||||
|       already_confirmed: "was already confirmed, please try signing in" | ||||
|       confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" | ||||
|       expired: "has expired, please request a new one" | ||||
|       not_found: "not found" | ||||
|       not_locked: "was not locked" | ||||
|       not_saved: | ||||
|         one: "1 error prohibited this %{resource} from being saved:" | ||||
|         other: "%{count} errors prohibited this %{resource} from being saved:" | ||||
							
								
								
									
										124
									
								
								portal/config/locales/doorkeeper.en.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								portal/config/locales/doorkeeper.en.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| en: | ||||
|   activerecord: | ||||
|     attributes: | ||||
|       doorkeeper/application: | ||||
|         name: 'Name' | ||||
|         redirect_uri: 'Redirect URI' | ||||
|     errors: | ||||
|       models: | ||||
|         doorkeeper/application: | ||||
|           attributes: | ||||
|             redirect_uri: | ||||
|               fragment_present: 'cannot contain a fragment.' | ||||
|               invalid_uri: 'must be a valid URI.' | ||||
|               relative_uri: 'must be an absolute URI.' | ||||
|               secured_uri: 'must be an HTTPS/SSL URI.' | ||||
|  | ||||
|   doorkeeper: | ||||
|     applications: | ||||
|       confirmations: | ||||
|         destroy: 'Are you sure?' | ||||
|       buttons: | ||||
|         edit: 'Edit' | ||||
|         destroy: 'Destroy' | ||||
|         submit: 'Submit' | ||||
|         cancel: 'Cancel' | ||||
|         authorize: 'Authorize' | ||||
|       form: | ||||
|         error: 'Whoops! Check your form for possible errors' | ||||
|       help: | ||||
|         redirect_uri: 'Use one line per URI' | ||||
|         native_redirect_uri: 'Use %{native_redirect_uri} for local tests' | ||||
|         scopes: 'Separate scopes with spaces. Leave blank to use the default scopes.' | ||||
|       edit: | ||||
|         title: 'Edit application' | ||||
|       index: | ||||
|         title: 'Your applications' | ||||
|         new: 'New Application' | ||||
|         name: 'Name' | ||||
|         callback_url: 'Callback URL' | ||||
|       new: | ||||
|         title: 'New Application' | ||||
|       show: | ||||
|         title: 'Application: %{name}' | ||||
|         application_id: 'Application Id' | ||||
|         secret: 'Secret' | ||||
|         scopes: 'Scopes' | ||||
|         callback_urls: 'Callback urls' | ||||
|         actions: 'Actions' | ||||
|  | ||||
|     authorizations: | ||||
|       buttons: | ||||
|         authorize: 'Authorize' | ||||
|         deny: 'Deny' | ||||
|       error: | ||||
|         title: 'An error has occurred' | ||||
|       new: | ||||
|         title: 'Authorization required' | ||||
|         prompt: 'Authorize %{client_name} to use your account?' | ||||
|         able_to: 'This application will be able to' | ||||
|       show: | ||||
|         title: 'Authorization code' | ||||
|  | ||||
|     authorized_applications: | ||||
|       confirmations: | ||||
|         revoke: 'Are you sure?' | ||||
|       buttons: | ||||
|         revoke: 'Revoke' | ||||
|       index: | ||||
|         title: 'Your authorized applications' | ||||
|         application: 'Application' | ||||
|         created_at: 'Created At' | ||||
|         date_format: '%Y-%m-%d %H:%M:%S' | ||||
|  | ||||
|     errors: | ||||
|       messages: | ||||
|         # Common error messages | ||||
|         invalid_request: 'The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.' | ||||
|         invalid_redirect_uri: 'The redirect uri included is not valid.' | ||||
|         unauthorized_client: 'The client is not authorized to perform this request using this method.' | ||||
|         access_denied: 'The resource owner or authorization server denied the request.' | ||||
|         invalid_scope: 'The requested scope is invalid, unknown, or malformed.' | ||||
|         server_error: 'The authorization server encountered an unexpected condition which prevented it from fulfilling the request.' | ||||
|         temporarily_unavailable: 'The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.' | ||||
|  | ||||
|         # Configuration error messages | ||||
|         credential_flow_not_configured: 'Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.' | ||||
|         resource_owner_authenticator_not_configured: 'Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured.' | ||||
|  | ||||
|         # Access grant errors | ||||
|         unsupported_response_type: 'The authorization server does not support this response type.' | ||||
|  | ||||
|         # Access token errors | ||||
|         invalid_client: 'Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.' | ||||
|         invalid_grant: 'The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.' | ||||
|         unsupported_grant_type: 'The authorization grant type is not supported by the authorization server.' | ||||
|  | ||||
|         # Password Access token errors | ||||
|         invalid_resource_owner: 'The provided resource owner credentials are not valid, or resource owner cannot be found' | ||||
|  | ||||
|         invalid_token: | ||||
|           revoked: "The access token was revoked" | ||||
|           expired: "The access token expired" | ||||
|           unknown: "The access token is invalid" | ||||
|  | ||||
|     flash: | ||||
|       applications: | ||||
|         create: | ||||
|           notice: 'Application created.' | ||||
|         destroy: | ||||
|           notice: 'Application deleted.' | ||||
|         update: | ||||
|           notice: 'Application updated.' | ||||
|       authorized_applications: | ||||
|         destroy: | ||||
|           notice: 'Application revoked.' | ||||
|  | ||||
|     layouts: | ||||
|       admin: | ||||
|         nav: | ||||
|           oauth2_provider: 'OAuth2 Provider' | ||||
|           applications: 'Applications' | ||||
|           home: 'Home' | ||||
|       application: | ||||
|         title: 'OAuth authorization required' | ||||
							
								
								
									
										192
									
								
								portal/config/locales/en.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										192
									
								
								portal/config/locales/en.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,192 @@ | ||||
| --- | ||||
| en: | ||||
|   sidebar: | ||||
|     links: | ||||
|       dashboard: Dashboard | ||||
|       add_new_project: Add New Project | ||||
|       wallet: Wallet | ||||
|       project_dashboard: Dashboard | ||||
|       asks: Asks | ||||
|       activities: Activities | ||||
|       announcements: Announcements | ||||
|       helpers: Helpers | ||||
|       settings: Settings | ||||
|   placeholder: | ||||
|     select_project: Select Project... | ||||
|   app_name: helpbuild | ||||
|   continue:  Continue | ||||
|   app_description: The platform that helps you segment, activate and engage your network to help your passion succeed. | ||||
|   app_signin_get_started: Signin to get started | ||||
|   common_signin: Signin | ||||
|   common_signup: Signup | ||||
|   common_email: Email | ||||
|   common_overview: Overview | ||||
|   common_project_title: Project title | ||||
|   common_project_type: Project type | ||||
|   common_project_description: Project description | ||||
|   common_project_categories: Project categories | ||||
|   common_project_reason: I need help with this BECAUSE.... | ||||
|   project_create_help: What I need help with | ||||
|   i_can_help_with: I can help with | ||||
|   please_select_help: Please select what you can help with | ||||
|   common_yes: Yes | ||||
|   common_no: No | ||||
|   common_fullname: Fullname | ||||
|   common_password: Password | ||||
|   common_please_select: Please select | ||||
|   validation_required: Required | ||||
|   validations_full_name_format: Invalid format e.g John Doe | ||||
|   validation_email: Invalid email address | ||||
|   validations_ask_amount_limit: Ask rewards are between 1 and 3 tokens. | ||||
|   signin_helpbuild_btn: Sign In to Helpbuild | ||||
|   join_helpbuild_btn: Join Helpbuild | ||||
|   notification_alert: Alert | ||||
|   notification_invalid_username: Those credentials are incorrect | ||||
|   create_project_title: Create New Project | ||||
|   projects_are_empty: You don’t have any projects. Create one to get started | ||||
|   project_create_label: Describe your project | ||||
|   about_project: About Project | ||||
|   share_project: Invite Helpers | ||||
|   copy_url: Copy URL | ||||
|   overview_heading_latest_asks: Latest Asks | ||||
|   btn_create_an_ask: Create an Ask | ||||
|   btn_signin_to_help: Sign In / Sign Up To Help | ||||
|   btn_help_on_this: Help build this project | ||||
|   btn_create_ask: Create and publish this ask | ||||
|   btn_confirm_helper: Confirm | ||||
|   btn_reject_helper: Decline | ||||
|   ask_placeholder_title: Ask title | ||||
|   ask_placeholder_description: Ask description | ||||
|   ask_placeholder_amount: Ask token(s) (per helper) | ||||
|   announcement_placeholder_description: Announcement description | ||||
|   announcement_placeholder_title: Announcement title | ||||
|   announcement_reminder: You have not announced anything for a while. Let your helpers know the latest status and news for your project. | ||||
|   ask_placeholder_date_of_expiry: Date of expiry | ||||
|   common_placeholder_need: Select need | ||||
|   common_placeholder_capacity: Select capacity | ||||
|   single_helpers: Single Helpers | ||||
|   multiple_helpers: Multiple Helpers | ||||
|   ask_placeholder_need: Need | ||||
|   no_expiry: No expiry | ||||
|   helps_and_capacities_heading: Needs help with ... | ||||
|   btn_create_an_announcement: Create an Announcement | ||||
|   overview_heading_latest_announcements: Latest Announcements | ||||
|   overview_heading_project_helpers: Project Helpers | ||||
|   where_you_can_help: What can you help with? | ||||
|   all_helps_required: All the help needed | ||||
|   you_are_helping: You are helping | ||||
|   btn_general: General | ||||
|   btn_accept: Accept | ||||
|   btn_ask_question: Ask Question | ||||
|   btn_check_questions: Check Questions | ||||
|   send_for_review: Send for review | ||||
|   start_working: Start Working | ||||
|   ask_doing: Doing | ||||
|   ask_todo: Accepted | ||||
|   ask_review: Review Request | ||||
|   ask_done: Approved | ||||
|   sent_to_review: Sent to review | ||||
|   btn_view_details_messages: Details/Messages | ||||
|   ask_info: Info | ||||
|   ask_messages: Messages | ||||
|   ask_helpers: Helpers | ||||
|   ask_accept: I accept the work as completed and authorise the release of any reward. | ||||
|   ask_unaccept: I do not accept the work is completed and I do not authorise the release of any reward. | ||||
|   message_placeholder: Enter your message | ||||
|   btn_send: Send | ||||
|   project_request_msg: <h3>Hello %{user},</h3><p>We have recieved your request to help in <b>%{project}</b>.</p><p>Status for your request is <b>%{status}</b></p> | ||||
|   project_request_pending: We have let the Project builder know you have stepped up to help <b>%{project}</b> and they will respond shortly. You may come here to see the status. | ||||
|   project_request_declined: Project owner has declined the request due to some reasons. | ||||
|   no_helpers_present: Currently you have no helpers in your project. Please share the URL with your network to get started. | ||||
|   btn_confirm: Confirm | ||||
|   btn_decline: Decline | ||||
|   welcome_email_subject: 'Please complete the signup' | ||||
|   welcome_email_body_1: Hi %{user}, | ||||
|   welcome_email_body_2: Welcome to Helpbuild. You are only one step away to enjoy full benefits of helpbuild. | ||||
|   welcome_email_body_3: Please click the button / link below to confirm your email. | ||||
|   welcome_email_confirm_btn: Confirm Email | ||||
|   confirm_account_msg: You haven't confirmed your email. Please check your email and click on the confirmation link to enjoy full benefits of Helpbuild. <br />Haven't recieved confirmation email? | ||||
|   welcome_email_resent_confirm_btn: Resend Email | ||||
|   alert_email_sent_heading: Email Sent | ||||
|   alert_email_sent_msg: Please check your inbox and confirm your account. | ||||
|   helper_join_request_body_1: <b>%{helper}</b> has requested to join this project and help make it successful. | ||||
|   helper_join_request_body_need_reasons: "They are offering to help with %{needs}.<br/>They provided this qualifying statement: <br/><br/> <b>%{qualifying_statement}</b>" | ||||
|   helper_join_request_body_2: You can respond from here by clicking on one of the links below. | ||||
|   project_join_request: '%{project} | Join Request' | ||||
|   ask_request_to_helpers: '%{project} | New Ask' | ||||
|   ask_request_body_1: New Ask has been added. Please have a look at the details below and click accept if you can help in it. | ||||
|   ask_status_to_builder_subject: '%{project}| %{ask} | Status Update | %{status}' | ||||
|   ask_request_todo_body: Your ask <b>%{ask}</b>,has been chosen by <b>%{helper}</b>. We will let you know when they start it. | ||||
|   ask_request_doing_body: <b>%{helper}</b> has started working on ask <b>%{ask}</b>. | ||||
|   ask_request_ringfence_amount_body: '%{reward} will be reserved in the project wallet for this ask. It will be released if it is not completed and paid to the helper if it is.' | ||||
|   ask_request_ringfence_no_amount_body: As there is no reward associated with this ask, no amount has been ringfenced from the project wallet for this ask. | ||||
|   ask_request_review_body: <b>%{helper}</b> has completed the ask <b>%{ask}</b> and sent for your review. | ||||
|   ask_request_accepted_body: <b>%{builder}</b> has accepted the work you have done on the ask <b>%{ask}</b>. Thank you for helping them build! | ||||
|   ask_request_unaccepted_body: <b>%{builder}</b> has NOT ACCEPTED your work for ask <b>%{ask}</b>. If you have some issues, kindly discuss it with <b>%{builder}</b>. | ||||
|   ask_request_accepted_amount_body: '%{reward} has been credited to your wallet.' | ||||
|   ask_request_accepted_no_amount_body: As there is no reward associated with this ask, nothing has been credited to your wallet for this ask. | ||||
|  | ||||
|   announcement_notification: '%{project}| New Announcement' | ||||
|   monthly_announcement_check: '%{project}| Announce Status, Info' | ||||
|   email_announcement_body_1: New Announcement from <b>%{owner}</b> | ||||
|   no_helpers_in_this_category: No helpers are currently present in this category. | ||||
|   btn_invite_users: Send Invitation | ||||
|   email_comma_enter_msg: Please press enter or add comma "," to add email in the list | ||||
|   email_sent: Email(s) Sent | ||||
|   email_sent_msg: We have sent the project info with link to join | ||||
|   project_invitation_subject: '%{builder_name} invites you to help build %{project}' | ||||
|   invite_via_email: Invite via emails | ||||
|   number_of_tokens: '%{number} tokens' | ||||
|   purchase_tokens: Purchase tokens | ||||
|   token_usage: How would you like to use your tokens? | ||||
|   token_purchase_disabled: Token purchase disabled. You need to earn atleast 5 tokens through helping to access this feature. | ||||
|   project_create_disabled: You don't have sufficient balance to create a project. You need atleast 10 tokens to create a project. | ||||
|   project_helper_rent_help_description: Monthly helping reward (0.5 Tokens) | ||||
|   project_rent_description: Monthly project rent (5 Tokens) | ||||
|   project_access_disabled: Project access denied. Monthly rent of the project is not paid that is why we have disabled the access to the project. | ||||
|   project_join_request_response: About your request to help on '%{project}'. | ||||
|   project_join_response_body: Your request to help on <b>%{project}</b> has been <b>%{status}</b>. | ||||
|   token_purchase_confirmation_subject: Token purchase confirmation | ||||
|   token_purchase_confirmation_body: This is to confirm your purchase of <b>%{tokens}</b> tokens at a cost of £%{amount}. Your new token balance is %{balance} tokens. | ||||
|   signin_with_linkedin: Sign in with LinkedIn | ||||
|   signup_with_linkedin: Sign up with LinkedIn | ||||
|   help: | ||||
|     get_started: | ||||
|       label: Watch our 'Helpbuild Intro' video to get up to speed. | ||||
|       text: Get up to speed quickly with what the ecosystem is about. | ||||
|     tokens_and_rent: | ||||
|       label: Learn more about tokens and rent | ||||
|       text: Learn more about tokens and rent | ||||
|     why_network_help: | ||||
|       label: Why this is important? | ||||
|       text: Why this is important? | ||||
|     what_needs: | ||||
|       label: Not sure what I need | ||||
|       text: Not sure what I need | ||||
|     how_rent_calculated: | ||||
|       label: How rent is calculated? | ||||
|       text: How rent is calculated? | ||||
|     about_token_rewards: | ||||
|       label: About token rewards | ||||
|       text: About token rewards | ||||
|     about_token_allocation: | ||||
|       label: What's this? | ||||
|       text: How tokens are allocated | ||||
|     about_tokens_and_wallet: | ||||
|       label: About tokens & wallet | ||||
|       text: About tokens & wallet | ||||
|     about_coins_and_wallet: | ||||
|       label: About coins and coin wallet | ||||
|       text: About coins and coin wallet | ||||
|   project: | ||||
|     helpers: | ||||
|       request: | ||||
|         requested: Your request to help this project has been sent to the project builders. Your view of this project is restricted until they confirm your request. | ||||
|         declined: Your request to help this project has been declined by the project builders. You won't be able to re-request at this time. | ||||
|   placeholders: | ||||
|     acceptance_conditions: What do you need to see to accept this ask as done? | ||||
|   asks: | ||||
|     error_messages: | ||||
|       expired: Ask Expired | ||||
|       exceeded: Limit Reached. Can't accept more requests | ||||
|       unaffordable: Insufficient balance | ||||
							
								
								
									
										38
									
								
								portal/config/puma.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								portal/config/puma.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| # Puma can serve each request in a thread from an internal thread pool. | ||||
| # The `threads` method setting takes two numbers: a minimum and maximum. | ||||
| # Any libraries that use thread pools should be configured to match | ||||
| # the maximum value specified for Puma. Default is set to 5 threads for minimum | ||||
| # and maximum; this matches the default thread size of Active Record. | ||||
| # | ||||
| max_threads_count = ENV.fetch('RAILS_MAX_THREADS') { 5 } | ||||
| min_threads_count = ENV.fetch('RAILS_MIN_THREADS') { max_threads_count } | ||||
| threads min_threads_count, max_threads_count | ||||
|  | ||||
| # Specifies the `port` that Puma will listen on to receive requests; default is 3000. | ||||
| # | ||||
| port        ENV.fetch('PORT') { 3000 } | ||||
|  | ||||
| # Specifies the `environment` that Puma will run in. | ||||
| # | ||||
| environment ENV.fetch('RAILS_ENV') { 'development' } | ||||
|  | ||||
| # Specifies the `pidfile` that Puma will use. | ||||
| pidfile ENV.fetch('PIDFILE') { 'tmp/pids/server.pid' } | ||||
|  | ||||
| # Specifies the number of `workers` to boot in clustered mode. | ||||
| # Workers are forked web server processes. If using threads and workers together | ||||
| # the concurrency of the application would be max `threads` * `workers`. | ||||
| # Workers do not work on JRuby or Windows (both of which do not support | ||||
| # processes). | ||||
| # | ||||
| # workers ENV.fetch("WEB_CONCURRENCY") { 2 } | ||||
|  | ||||
| # Use the `preload_app!` method when specifying a `workers` number. | ||||
| # This directive tells Puma to first boot the application and load code | ||||
| # before forking the application. This takes advantage of Copy On Write | ||||
| # process behavior so workers use less memory. | ||||
| # | ||||
| # preload_app! | ||||
|  | ||||
| # Allow puma to be restarted by `rails restart` command. | ||||
| plugin :tmp_restart | ||||
							
								
								
									
										43
									
								
								portal/config/routes.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								portal/config/routes.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| Rails.application.routes.draw do | ||||
|   require 'sidekiq/web' | ||||
|   require 'sidekiq/cron/web' | ||||
|  | ||||
|   authenticate :user do | ||||
|     mount Sidekiq::Web => '/admin/sidekiq', as: 'sidekiq' | ||||
|   end | ||||
|  | ||||
|   root 'pages#index' | ||||
|  | ||||
|   Devise.setup do |_config| | ||||
|     devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }, | ||||
|                skip: %i(sessions registrations passwords) do | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   devise_scope :user do | ||||
|     get 'sign_out', to: 'devise/sessions#destroy' | ||||
|   end | ||||
|  | ||||
|   namespace :api, constraints: { format: 'json' } do | ||||
|     namespace :v1 do | ||||
|       resources :app do | ||||
|         collection do | ||||
|           get :configuration | ||||
|           get :summary | ||||
|         end | ||||
|       end | ||||
|       resources :users, only: [:create] do | ||||
|         collection do | ||||
|           get :auth | ||||
|         end | ||||
|       end | ||||
|       resource :exchange_account, only: [:update] | ||||
|       resources :bets, only: [:index, :show] | ||||
|       post 'bets/add_placed_bet', to: 'bets#add_placed_bet' | ||||
|       post 'tips', to: 'bets#tips' | ||||
|     end | ||||
|   end | ||||
|   get '*other', to: 'pages#index', constraints: lambda { |req| | ||||
|     req.path.exclude? 'rails/active_storage' | ||||
|   } | ||||
| end | ||||
							
								
								
									
										24
									
								
								portal/config/schedule.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								portal/config/schedule.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| pull_upcoming_events: | ||||
|   cron: "0 * * * *" | ||||
|   class: "PullUpcomingEventsJob" | ||||
|   queue: low | ||||
| pull_event_markets: | ||||
|   cron: "*/3 * * * *" | ||||
|   class: "PullEventMarketsJob" | ||||
|   queue: medium | ||||
| pull_market_ods: | ||||
|   cron: "*/3 * * * * *" | ||||
|   class: "PullLatestOddsPricesJob" | ||||
|   queue: high | ||||
| pull_tips: | ||||
|   cron: "*/5 * * * * *" | ||||
|   class: "PullTipsJob" | ||||
|   queue: high | ||||
| clear_old_pulls: | ||||
|   cron: "0 * * * *" | ||||
|   class: "ClearOldPullsJob" | ||||
|   queue: medium | ||||
| reconcile_accounts: | ||||
|   cron: "* * * * *" | ||||
|   class: "AccountSyncAndReconciliationJob" | ||||
|   queue: high | ||||
							
								
								
									
										17
									
								
								portal/config/sidekiq.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								portal/config/sidekiq.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| development: &defaults | ||||
|   :concurrency: 1 | ||||
| staging: | ||||
|   <<: *defaults | ||||
| production: | ||||
|   <<: *defaults | ||||
|   :concurrency: 20 | ||||
| :queues: | ||||
|   - ["high", 6] | ||||
|   - ["medium", 4] | ||||
|   - ["low", 2] | ||||
|   - ["default", 3] | ||||
|   - ["mailers", 3] | ||||
|   - ["active_storage_purge", 3] | ||||
|   - ["active_storage_analysis", 3] | ||||
|   - ["action_mailbox_routing", 3] | ||||
|  | ||||
							
								
								
									
										6
									
								
								portal/config/spring.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								portal/config/spring.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| Spring.watch( | ||||
|   '.ruby-version', | ||||
|   '.rbenv-vars', | ||||
|   'tmp/restart.txt', | ||||
|   'tmp/caching-dev.txt' | ||||
| ) | ||||
							
								
								
									
										16
									
								
								portal/config/storage.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								portal/config/storage.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| test: | ||||
|   service: Disk | ||||
|   root: <%= Rails.root.join("tmp/storage") %> | ||||
|  | ||||
| local: | ||||
|   service: Disk | ||||
|   root: <%= Rails.root.join("storage") %> | ||||
|  | ||||
| contabo: | ||||
|   service: S3 | ||||
|   access_key_id: "b2c117aaeee94b52bef9a9ba17ecacbb" | ||||
|   secret_access_key: "63e5135c96d9e3f1d15661a765914c20" | ||||
|   force_path_style: true | ||||
|   region: eu2 | ||||
|   endpoint: "https://eu2.contabostorage.com/<%= Rails.env %>" | ||||
|   bucket: "/" | ||||
							
								
								
									
										5
									
								
								portal/config/webpack/development.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								portal/config/webpack/development.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| process.env.NODE_ENV = process.env.NODE_ENV || 'development' | ||||
|  | ||||
| const environment = require('./environment') | ||||
|  | ||||
| module.exports = environment.toWebpackConfig() | ||||
							
								
								
									
										19
									
								
								portal/config/webpack/environment.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								portal/config/webpack/environment.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| const { environment } = require('@rails/webpacker'); | ||||
| const webpack = require('webpack'); | ||||
|  | ||||
| const jquery = new webpack.ProvidePlugin({ | ||||
|   $: 'jquery', | ||||
|   jQuery: 'jquery', | ||||
|   'window.jQuery': 'jquery', | ||||
| }); | ||||
|  | ||||
| const yamlLoader = { | ||||
|   test: /\.ya?ml$/, | ||||
|   type: 'json', // Required by Webpack v4 | ||||
|   use: 'yaml-loader', | ||||
| }; | ||||
|  | ||||
| environment.plugins.prepend('jquery', jquery); | ||||
| environment.loaders.prepend('yaml', yamlLoader); | ||||
|  | ||||
| module.exports = environment; | ||||
							
								
								
									
										5
									
								
								portal/config/webpack/production.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								portal/config/webpack/production.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| process.env.NODE_ENV = process.env.NODE_ENV || 'production' | ||||
|  | ||||
| const environment = require('./environment') | ||||
|  | ||||
| module.exports = environment.toWebpackConfig() | ||||
							
								
								
									
										5
									
								
								portal/config/webpack/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								portal/config/webpack/test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| process.env.NODE_ENV = process.env.NODE_ENV || 'development' | ||||
|  | ||||
| const environment = require('./environment') | ||||
|  | ||||
| module.exports = environment.toWebpackConfig() | ||||
							
								
								
									
										97
									
								
								portal/config/webpacker.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								portal/config/webpacker.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | ||||
| # Note: You must restart bin/webpack-dev-server for changes to take effect | ||||
|  | ||||
| default: &default | ||||
|   source_path: client | ||||
|   source_entry_path: packs | ||||
|   public_root_path: public | ||||
|   public_output_path: packs | ||||
|   cache_path: tmp/cache/webpacker | ||||
|   check_yarn_integrity: false | ||||
|   webpack_compile_output: false | ||||
|  | ||||
|   # Additional paths webpack should lookup modules | ||||
|   # ['app/assets', 'engine/foo/app/assets'] | ||||
|   resolved_paths: [] | ||||
|  | ||||
|   # Reload manifest.json on all requests so we reload latest compiled packs | ||||
|   cache_manifest: false | ||||
|  | ||||
|   # Extract and emit a css file | ||||
|   extract_css: false | ||||
|  | ||||
|   static_assets_extensions: | ||||
|     - .jpg | ||||
|     - .jpeg | ||||
|     - .png | ||||
|     - .gif | ||||
|     - .tiff | ||||
|     - .ico | ||||
|     - .svg | ||||
|     - .eot | ||||
|     - .otf | ||||
|     - .ttf | ||||
|     - .woff | ||||
|     - .woff2 | ||||
|  | ||||
|   extensions: | ||||
|     - .jsx | ||||
|     - .mjs | ||||
|     - .js | ||||
|     - .sass | ||||
|     - .scss | ||||
|     - .css | ||||
|     - .module.sass | ||||
|     - .module.scss | ||||
|     - .module.css | ||||
|     - .png | ||||
|     - .svg | ||||
|     - .gifmani | ||||
|     - .jpeg | ||||
|     - .jpg | ||||
|  | ||||
| development: | ||||
|   <<: *default | ||||
|   compile: true | ||||
|  | ||||
|   # Verifies that correct packages and vemanirsions are installed by inspecting package.json, yarn.lock, and node_modules | ||||
|   check_yarn_integrity: false | ||||
|  | ||||
|   # Reference: https://webpack.js.org/configuration/dev-server/ | ||||
|   dev_server: | ||||
|     https: false | ||||
|     host: localhost | ||||
|     port: 3039 | ||||
|     public: localhost:3039 | ||||
|     hmr: false | ||||
|     # Inline should be set to true if using HMR | ||||
|     inline: true | ||||
|     overlay: true | ||||
|     compress: true | ||||
|     disable_host_check: true | ||||
|     use_local_ip: false | ||||
|     quiet: false | ||||
|     pretty: false | ||||
|     headers: | ||||
|       'Access-Control-Allow-Origin': '*' | ||||
|     watch_options: | ||||
|       ignored: '**/node_modules/**' | ||||
|  | ||||
|  | ||||
| test: | ||||
|   <<: *default | ||||
|   compile: true | ||||
|  | ||||
|   # Compile test packs to a separate directory | ||||
|   public_output_path: packs-test | ||||
|  | ||||
| production: | ||||
|   <<: *default | ||||
|  | ||||
|   # Production depends on precompilation of packs prior to booting for performance. | ||||
|   compile: false | ||||
|  | ||||
|   # Extract and emit a css file | ||||
|   extract_css: true | ||||
|  | ||||
|   # Cache manifest.json for performance | ||||
|   cache_manifest: true | ||||
		Reference in New Issue
	
	Block a user