From 74c12a2db8c3f49a3d771b9b484d5822e48fa01e Mon Sep 17 00:00:00 2001
From: Anya Tokar <61166946+anyatokar@users.noreply.github.com>
Date: Tue, 27 Oct 2020 22:24:29 -0700
Subject: [PATCH 1/8] baseline complete
---
.generators | 8 +
Gemfile | 78 +
Gemfile.lock | 298 +
Guardfile | 9 +
Rakefile | 6 +
app/assets/config/manifest.js | 2 +
app/assets/images/.keep | 0
app/assets/stylesheets/application.scss | 18 +
app/assets/stylesheets/tasks.scss | 3 +
app/channels/application_cable/channel.rb | 4 +
app/channels/application_cable/connection.rb | 4 +
app/controllers/application_controller.rb | 2 +
app/controllers/concerns/.keep | 0
app/controllers/tasks_controller.rb | 11 +
app/helpers/application_helper.rb | 2 +
app/helpers/tasks_helper.rb | 2 +
app/javascript/channels/consumer.js | 6 +
app/javascript/channels/index.js | 5 +
app/javascript/packs/application.js | 19 +
app/jobs/application_job.rb | 7 +
app/mailers/application_mailer.rb | 4 +
app/models/application_record.rb | 3 +
app/models/concerns/.keep | 0
app/views/layouts/application.html.erb | 15 +
app/views/layouts/mailer.html.erb | 13 +
app/views/layouts/mailer.text.erb | 1 +
app/views/tasks/index.html.erb | 10 +
babel.config.js | 72 +
bin/bundle | 114 +
bin/rails | 9 +
bin/rake | 9 +
bin/setup | 36 +
bin/spring | 17 +
bin/webpack | 18 +
bin/webpack-dev-server | 18 +
bin/yarn | 11 +
config.ru | 5 +
config/application.rb | 23 +
config/boot.rb | 4 +
config/cable.yml | 10 +
config/credentials.yml.enc | 1 +
config/database.yml | 85 +
config/environment.rb | 5 +
config/environments/development.rb | 62 +
config/environments/production.rb | 112 +
config/environments/test.rb | 49 +
config/initializers/action_view.rb | 1 +
.../application_controller_renderer.rb | 8 +
config/initializers/assets.rb | 14 +
config/initializers/backtrace_silencers.rb | 7 +
.../initializers/content_security_policy.rb | 30 +
config/initializers/cookies_serializer.rb | 5 +
.../initializers/filter_parameter_logging.rb | 4 +
config/initializers/inflections.rb | 16 +
config/initializers/mime_types.rb | 4 +
config/initializers/wrap_parameters.rb | 14 +
config/locales/en.yml | 33 +
config/master.key | 1 +
config/puma.rb | 38 +
config/routes.rb | 4 +
config/spring.rb | 6 +
config/storage.yml | 34 +
config/webpack/development.js | 5 +
config/webpack/environment.js | 13 +
config/webpack/production.js | 5 +
config/webpack/test.js | 5 +
config/webpacker.yml | 96 +
db/seeds.rb | 7 +
lib/assets/.keep | 0
lib/tasks/.keep | 0
log/.keep | 0
package.json | 18 +
postcss.config.js | 12 +
public/404.html | 67 +
public/422.html | 67 +
public/500.html | 66 +
public/apple-touch-icon-precomposed.png | 0
public/apple-touch-icon.png | 0
public/favicon.ico | 0
.../js/application-54de8aa2374117bd4cea.js | 19814 ++++++++++++++++
.../application-54de8aa2374117bd4cea.js.map | 1 +
public/packs-test/manifest.json | 14 +
.../js/application-95eaefdb2962c40a7536.js | 19814 ++++++++++++++++
.../application-95eaefdb2962c40a7536.js.map | 1 +
public/packs/manifest.json | 14 +
public/robots.txt | 1 +
storage/.keep | 0
test/application_system_test_case.rb | 5 +
.../application_cable/connection_test.rb | 11 +
test/fixtures/.keep | 0
test/fixtures/files/.keep | 0
test/helpers/.keep | 0
test/integration/.keep | 0
test/mailers/.keep | 0
test/models/.keep | 0
test/system/.keep | 0
test/test_helper.rb | 21 +
tmp/.keep | 0
vendor/.keep | 0
yarn.lock | 7620 ++++++
100 files changed, 49086 insertions(+)
create mode 100644 .generators
create mode 100644 Gemfile
create mode 100644 Gemfile.lock
create mode 100644 Guardfile
create mode 100644 Rakefile
create mode 100644 app/assets/config/manifest.js
create mode 100644 app/assets/images/.keep
create mode 100644 app/assets/stylesheets/application.scss
create mode 100644 app/assets/stylesheets/tasks.scss
create mode 100644 app/channels/application_cable/channel.rb
create mode 100644 app/channels/application_cable/connection.rb
create mode 100644 app/controllers/application_controller.rb
create mode 100644 app/controllers/concerns/.keep
create mode 100644 app/controllers/tasks_controller.rb
create mode 100644 app/helpers/application_helper.rb
create mode 100644 app/helpers/tasks_helper.rb
create mode 100644 app/javascript/channels/consumer.js
create mode 100644 app/javascript/channels/index.js
create mode 100644 app/javascript/packs/application.js
create mode 100644 app/jobs/application_job.rb
create mode 100644 app/mailers/application_mailer.rb
create mode 100644 app/models/application_record.rb
create mode 100644 app/models/concerns/.keep
create mode 100644 app/views/layouts/application.html.erb
create mode 100644 app/views/layouts/mailer.html.erb
create mode 100644 app/views/layouts/mailer.text.erb
create mode 100644 app/views/tasks/index.html.erb
create mode 100644 babel.config.js
create mode 100755 bin/bundle
create mode 100755 bin/rails
create mode 100755 bin/rake
create mode 100755 bin/setup
create mode 100755 bin/spring
create mode 100755 bin/webpack
create mode 100755 bin/webpack-dev-server
create mode 100755 bin/yarn
create mode 100644 config.ru
create mode 100644 config/application.rb
create mode 100644 config/boot.rb
create mode 100644 config/cable.yml
create mode 100644 config/credentials.yml.enc
create mode 100644 config/database.yml
create mode 100644 config/environment.rb
create mode 100644 config/environments/development.rb
create mode 100644 config/environments/production.rb
create mode 100644 config/environments/test.rb
create mode 100644 config/initializers/action_view.rb
create mode 100644 config/initializers/application_controller_renderer.rb
create mode 100644 config/initializers/assets.rb
create mode 100644 config/initializers/backtrace_silencers.rb
create mode 100644 config/initializers/content_security_policy.rb
create mode 100644 config/initializers/cookies_serializer.rb
create mode 100644 config/initializers/filter_parameter_logging.rb
create mode 100644 config/initializers/inflections.rb
create mode 100644 config/initializers/mime_types.rb
create mode 100644 config/initializers/wrap_parameters.rb
create mode 100644 config/locales/en.yml
create mode 100644 config/master.key
create mode 100644 config/puma.rb
create mode 100644 config/routes.rb
create mode 100644 config/spring.rb
create mode 100644 config/storage.yml
create mode 100644 config/webpack/development.js
create mode 100644 config/webpack/environment.js
create mode 100644 config/webpack/production.js
create mode 100644 config/webpack/test.js
create mode 100644 config/webpacker.yml
create mode 100644 db/seeds.rb
create mode 100644 lib/assets/.keep
create mode 100644 lib/tasks/.keep
create mode 100644 log/.keep
create mode 100644 package.json
create mode 100644 postcss.config.js
create mode 100644 public/404.html
create mode 100644 public/422.html
create mode 100644 public/500.html
create mode 100644 public/apple-touch-icon-precomposed.png
create mode 100644 public/apple-touch-icon.png
create mode 100644 public/favicon.ico
create mode 100644 public/packs-test/js/application-54de8aa2374117bd4cea.js
create mode 100644 public/packs-test/js/application-54de8aa2374117bd4cea.js.map
create mode 100644 public/packs-test/manifest.json
create mode 100644 public/packs/js/application-95eaefdb2962c40a7536.js
create mode 100644 public/packs/js/application-95eaefdb2962c40a7536.js.map
create mode 100644 public/packs/manifest.json
create mode 100644 public/robots.txt
create mode 100644 storage/.keep
create mode 100644 test/application_system_test_case.rb
create mode 100644 test/channels/application_cable/connection_test.rb
create mode 100644 test/fixtures/.keep
create mode 100644 test/fixtures/files/.keep
create mode 100644 test/helpers/.keep
create mode 100644 test/integration/.keep
create mode 100644 test/mailers/.keep
create mode 100644 test/models/.keep
create mode 100644 test/system/.keep
create mode 100644 test/test_helper.rb
create mode 100644 tmp/.keep
create mode 100644 vendor/.keep
create mode 100644 yarn.lock
diff --git a/.generators b/.generators
new file mode 100644
index 000000000..72e196d79
--- /dev/null
+++ b/.generators
@@ -0,0 +1,8 @@
+
+
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 000000000..48cdee19c
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,78 @@
+source 'https://rubygems.org'
+git_source(:github) { |repo| "https://github.com/#{repo}.git" }
+
+ruby '2.6.5'
+
+# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
+gem 'rails', '~> 6.0.3', '>= 6.0.3.4'
+# Use postgresql as the database for Active Record
+gem 'pg', '>= 0.18', '< 2.0'
+# Use Puma as the app server
+gem 'puma', '~> 4.1'
+# Use SCSS for stylesheets
+gem 'sass-rails', '>= 6'
+# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
+gem 'webpacker', '~> 4.0'
+# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
+gem 'turbolinks', '~> 5'
+# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
+gem 'jbuilder', '~> 2.7'
+# Use Redis adapter to run Action Cable in production
+# gem 'redis', '~> 4.0'
+# Use Active Model has_secure_password
+# gem 'bcrypt', '~> 3.1.7'
+
+# Use Active Storage variant
+# gem 'image_processing', '~> 1.2'
+
+# Reduces boot times through caching; required in config/boot.rb
+gem 'bootsnap', '>= 1.4.2', require: false
+
+group :development, :test do
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
+end
+
+group :development do
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
+ gem 'web-console', '>= 3.3.0'
+ gem 'listen', '~> 3.2'
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
+ gem 'spring'
+ gem 'spring-watcher-listen', '~> 2.0.0'
+end
+
+group :test do
+ # Adds support for Capybara system testing and selenium driver
+ gem 'capybara', '>= 2.15'
+ gem 'selenium-webdriver'
+ # Easy installation and use of web drivers to run system tests with browsers
+ gem 'webdrivers'
+end
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+
+gem 'jquery-rails'
+gem 'jquery-turbolinks'
+gem 'bootstrap'
+group :development, :test do
+ gem 'pry-rails'
+end
+
+group :development do
+ gem 'guard'
+ gem 'guard-minitest'
+ gem 'debase', '>= 0.2.4.1'
+ gem 'ruby-debug-ide', '>= 0.7.0'
+end
+
+group :development do
+ gem 'better_errors'
+ gem 'binding_of_caller'
+end
+
+group :test do
+ gem 'minitest-rails'
+ gem 'minitest-reporters'
+end
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 000000000..9af986a4e
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,298 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ actioncable (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ nio4r (~> 2.0)
+ websocket-driver (>= 0.6.1)
+ actionmailbox (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ activejob (= 6.0.3.4)
+ activerecord (= 6.0.3.4)
+ activestorage (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ mail (>= 2.7.1)
+ actionmailer (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ actionview (= 6.0.3.4)
+ activejob (= 6.0.3.4)
+ mail (~> 2.5, >= 2.5.4)
+ rails-dom-testing (~> 2.0)
+ actionpack (6.0.3.4)
+ actionview (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ rack (~> 2.0, >= 2.0.8)
+ rack-test (>= 0.6.3)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
+ actiontext (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ activerecord (= 6.0.3.4)
+ activestorage (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ nokogiri (>= 1.8.5)
+ actionview (6.0.3.4)
+ activesupport (= 6.0.3.4)
+ builder (~> 3.1)
+ erubi (~> 1.4)
+ rails-dom-testing (~> 2.0)
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
+ activejob (6.0.3.4)
+ activesupport (= 6.0.3.4)
+ globalid (>= 0.3.6)
+ activemodel (6.0.3.4)
+ activesupport (= 6.0.3.4)
+ activerecord (6.0.3.4)
+ activemodel (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ activestorage (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ activejob (= 6.0.3.4)
+ activerecord (= 6.0.3.4)
+ marcel (~> 0.3.1)
+ activesupport (6.0.3.4)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ zeitwerk (~> 2.2, >= 2.2.2)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ ansi (1.5.0)
+ autoprefixer-rails (10.0.1.0)
+ execjs
+ better_errors (2.8.3)
+ coderay (>= 1.0.0)
+ erubi (>= 1.0.0)
+ rack (>= 0.9.0)
+ bindex (0.8.1)
+ binding_of_caller (0.8.0)
+ debug_inspector (>= 0.0.1)
+ bootsnap (1.4.8)
+ msgpack (~> 1.0)
+ bootstrap (4.5.2)
+ autoprefixer-rails (>= 9.1.0)
+ popper_js (>= 1.14.3, < 2)
+ sassc-rails (>= 2.0.0)
+ builder (3.2.4)
+ byebug (11.1.3)
+ capybara (3.33.0)
+ addressable
+ mini_mime (>= 0.1.3)
+ nokogiri (~> 1.8)
+ rack (>= 1.6.0)
+ rack-test (>= 0.6.3)
+ regexp_parser (~> 1.5)
+ xpath (~> 3.2)
+ childprocess (3.0.0)
+ coderay (1.1.3)
+ concurrent-ruby (1.1.7)
+ crass (1.0.6)
+ debase (2.3.0)
+ debase-ruby_core_source (~> 0.10.10)
+ debase-ruby_core_source (0.10.11)
+ debug_inspector (0.0.3)
+ erubi (1.9.0)
+ execjs (2.7.0)
+ ffi (1.13.1)
+ formatador (0.2.5)
+ globalid (0.4.2)
+ activesupport (>= 4.2.0)
+ guard (2.16.2)
+ formatador (>= 0.2.4)
+ listen (>= 2.7, < 4.0)
+ lumberjack (>= 1.0.12, < 2.0)
+ nenv (~> 0.1)
+ notiffany (~> 0.0)
+ pry (>= 0.9.12)
+ shellany (~> 0.0)
+ thor (>= 0.18.1)
+ guard-compat (1.2.1)
+ guard-minitest (2.4.6)
+ guard-compat (~> 1.2)
+ minitest (>= 3.0)
+ i18n (1.8.5)
+ concurrent-ruby (~> 1.0)
+ jbuilder (2.10.1)
+ activesupport (>= 5.0.0)
+ jquery-rails (4.4.0)
+ rails-dom-testing (>= 1, < 3)
+ railties (>= 4.2.0)
+ thor (>= 0.14, < 2.0)
+ jquery-turbolinks (2.1.0)
+ railties (>= 3.1.0)
+ turbolinks
+ listen (3.2.1)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ loofah (2.7.0)
+ crass (~> 1.0.2)
+ nokogiri (>= 1.5.9)
+ lumberjack (1.2.8)
+ mail (2.7.1)
+ mini_mime (>= 0.1.1)
+ marcel (0.3.3)
+ mimemagic (~> 0.3.2)
+ method_source (1.0.0)
+ mimemagic (0.3.5)
+ mini_mime (1.0.2)
+ mini_portile2 (2.4.0)
+ minitest (5.14.2)
+ minitest-rails (6.0.1)
+ minitest (~> 5.10)
+ railties (~> 6.0.0)
+ minitest-reporters (1.4.2)
+ ansi
+ builder
+ minitest (>= 5.0)
+ ruby-progressbar
+ msgpack (1.3.3)
+ nenv (0.3.0)
+ nio4r (2.5.4)
+ nokogiri (1.10.10)
+ mini_portile2 (~> 2.4.0)
+ notiffany (0.1.3)
+ nenv (~> 0.1)
+ shellany (~> 0.0)
+ pg (1.2.3)
+ popper_js (1.16.0)
+ pry (0.13.1)
+ coderay (~> 1.1)
+ method_source (~> 1.0)
+ pry-rails (0.3.9)
+ pry (>= 0.10.4)
+ public_suffix (4.0.6)
+ puma (4.3.6)
+ nio4r (~> 2.0)
+ rack (2.2.3)
+ rack-proxy (0.6.5)
+ rack
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rails (6.0.3.4)
+ actioncable (= 6.0.3.4)
+ actionmailbox (= 6.0.3.4)
+ actionmailer (= 6.0.3.4)
+ actionpack (= 6.0.3.4)
+ actiontext (= 6.0.3.4)
+ actionview (= 6.0.3.4)
+ activejob (= 6.0.3.4)
+ activemodel (= 6.0.3.4)
+ activerecord (= 6.0.3.4)
+ activestorage (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ bundler (>= 1.3.0)
+ railties (= 6.0.3.4)
+ sprockets-rails (>= 2.0.0)
+ rails-dom-testing (2.0.3)
+ activesupport (>= 4.2.0)
+ nokogiri (>= 1.6)
+ rails-html-sanitizer (1.3.0)
+ loofah (~> 2.3)
+ railties (6.0.3.4)
+ actionpack (= 6.0.3.4)
+ activesupport (= 6.0.3.4)
+ method_source
+ rake (>= 0.8.7)
+ thor (>= 0.20.3, < 2.0)
+ rake (13.0.1)
+ rb-fsevent (0.10.4)
+ rb-inotify (0.10.1)
+ ffi (~> 1.0)
+ regexp_parser (1.8.2)
+ ruby-debug-ide (2.3.0)
+ debase (~> 2.3.0)
+ ruby-progressbar (1.10.1)
+ rubyzip (2.3.0)
+ sass-rails (6.0.0)
+ sassc-rails (~> 2.1, >= 2.1.1)
+ sassc (2.4.0)
+ ffi (~> 1.9)
+ sassc-rails (2.1.2)
+ railties (>= 4.0.0)
+ sassc (>= 2.0)
+ sprockets (> 3.0)
+ sprockets-rails
+ tilt
+ selenium-webdriver (3.142.7)
+ childprocess (>= 0.5, < 4.0)
+ rubyzip (>= 1.2.2)
+ shellany (0.0.1)
+ spring (2.1.1)
+ spring-watcher-listen (2.0.1)
+ listen (>= 2.7, < 4.0)
+ spring (>= 1.2, < 3.0)
+ sprockets (4.0.2)
+ concurrent-ruby (~> 1.0)
+ rack (> 1, < 3)
+ sprockets-rails (3.2.2)
+ actionpack (>= 4.0)
+ activesupport (>= 4.0)
+ sprockets (>= 3.0.0)
+ thor (1.0.1)
+ thread_safe (0.3.6)
+ tilt (2.0.10)
+ turbolinks (5.2.1)
+ turbolinks-source (~> 5.2)
+ turbolinks-source (5.2.0)
+ tzinfo (1.2.7)
+ thread_safe (~> 0.1)
+ web-console (4.0.4)
+ actionview (>= 6.0.0)
+ activemodel (>= 6.0.0)
+ bindex (>= 0.4.0)
+ railties (>= 6.0.0)
+ webdrivers (4.4.1)
+ nokogiri (~> 1.6)
+ rubyzip (>= 1.3.0)
+ selenium-webdriver (>= 3.0, < 4.0)
+ webpacker (4.3.0)
+ activesupport (>= 4.2)
+ rack-proxy (>= 0.6.1)
+ railties (>= 4.2)
+ websocket-driver (0.7.3)
+ websocket-extensions (>= 0.1.0)
+ websocket-extensions (0.1.5)
+ xpath (3.2.0)
+ nokogiri (~> 1.8)
+ zeitwerk (2.4.0)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ better_errors
+ binding_of_caller
+ bootsnap (>= 1.4.2)
+ bootstrap
+ byebug
+ capybara (>= 2.15)
+ debase (>= 0.2.4.1)
+ guard
+ guard-minitest
+ jbuilder (~> 2.7)
+ jquery-rails
+ jquery-turbolinks
+ listen (~> 3.2)
+ minitest-rails
+ minitest-reporters
+ pg (>= 0.18, < 2.0)
+ pry-rails
+ puma (~> 4.1)
+ rails (~> 6.0.3, >= 6.0.3.4)
+ ruby-debug-ide (>= 0.7.0)
+ sass-rails (>= 6)
+ selenium-webdriver
+ spring
+ spring-watcher-listen (~> 2.0.0)
+ turbolinks (~> 5)
+ tzinfo-data
+ web-console (>= 3.3.0)
+ webdrivers
+ webpacker (~> 4.0)
+
+RUBY VERSION
+ ruby 2.6.5p114
+
+BUNDLED WITH
+ 2.1.4
diff --git a/Guardfile b/Guardfile
new file mode 100644
index 000000000..e34f706f4
--- /dev/null
+++ b/Guardfile
@@ -0,0 +1,9 @@
+guard :minitest, autorun: false, spring: true do
+ watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" }
+ watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' }
+ watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" }
+ watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" }
+ watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" }
+ watch(%r{^test/.+_test.rb$})
+ watch(%r{^test/test_helper.rb$}) { 'test' }
+end
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 000000000..e85f91391
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,6 @@
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require_relative 'config/application'
+
+Rails.application.load_tasks
diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js
new file mode 100644
index 000000000..591819335
--- /dev/null
+++ b/app/assets/config/manifest.js
@@ -0,0 +1,2 @@
+//= link_tree ../images
+//= link_directory ../stylesheets .css
diff --git a/app/assets/images/.keep b/app/assets/images/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
new file mode 100644
index 000000000..17320fb11
--- /dev/null
+++ b/app/assets/stylesheets/application.scss
@@ -0,0 +1,18 @@
+/*
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
+ * listed below.
+ *
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
+ * vendor/assets/stylesheets directory can be referenced here using a relative path.
+ *
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
+ * files in this directory. Styles in this file should be added after the last require_* statement.
+ * It is generally better to create a new file per style scope.
+ *
+ */
+
+/* Custom bootstrap variables must be set or imported *before* bootstrap. */
+@import "bootstrap";
+
+@import "**/*";
diff --git a/app/assets/stylesheets/tasks.scss b/app/assets/stylesheets/tasks.scss
new file mode 100644
index 000000000..645de58b1
--- /dev/null
+++ b/app/assets/stylesheets/tasks.scss
@@ -0,0 +1,3 @@
+// Place all the styles related to the Tasks controller here.
+// They will automatically be included in application.css.
+// You can use Sass (SCSS) here: https://sass-lang.com/
diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb
new file mode 100644
index 000000000..d67269728
--- /dev/null
+++ b/app/channels/application_cable/channel.rb
@@ -0,0 +1,4 @@
+module ApplicationCable
+ class Channel < ActionCable::Channel::Base
+ end
+end
diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb
new file mode 100644
index 000000000..0ff5442f4
--- /dev/null
+++ b/app/channels/application_cable/connection.rb
@@ -0,0 +1,4 @@
+module ApplicationCable
+ class Connection < ActionCable::Connection::Base
+ end
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
new file mode 100644
index 000000000..09705d12a
--- /dev/null
+++ b/app/controllers/application_controller.rb
@@ -0,0 +1,2 @@
+class ApplicationController < ActionController::Base
+end
diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb
new file mode 100644
index 000000000..2481f0786
--- /dev/null
+++ b/app/controllers/tasks_controller.rb
@@ -0,0 +1,11 @@
+TASKS = [
+ { description: "repot plants", due: "Monday" },
+ { description: "eat donut", due: "Tuesday" },
+ { description: "attend yoga", due: "Wednesday" }
+]
+
+class TasksController < ApplicationController
+ def index
+ @tasks = TASKS
+ end
+end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
new file mode 100644
index 000000000..de6be7945
--- /dev/null
+++ b/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/app/helpers/tasks_helper.rb b/app/helpers/tasks_helper.rb
new file mode 100644
index 000000000..ce894d00c
--- /dev/null
+++ b/app/helpers/tasks_helper.rb
@@ -0,0 +1,2 @@
+module TasksHelper
+end
diff --git a/app/javascript/channels/consumer.js b/app/javascript/channels/consumer.js
new file mode 100644
index 000000000..0eceb59b1
--- /dev/null
+++ b/app/javascript/channels/consumer.js
@@ -0,0 +1,6 @@
+// Action Cable provides the framework to deal with WebSockets in Rails.
+// You can generate new channels where WebSocket features live using the `rails generate channel` command.
+
+import { createConsumer } from "@rails/actioncable"
+
+export default createConsumer()
diff --git a/app/javascript/channels/index.js b/app/javascript/channels/index.js
new file mode 100644
index 000000000..0cfcf7491
--- /dev/null
+++ b/app/javascript/channels/index.js
@@ -0,0 +1,5 @@
+// Load all the channels within this directory and all subdirectories.
+// Channel files must be named *_channel.js.
+
+const channels = require.context('.', true, /_channel\.js$/)
+channels.keys().forEach(channels)
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
new file mode 100644
index 000000000..529f85b08
--- /dev/null
+++ b/app/javascript/packs/application.js
@@ -0,0 +1,19 @@
+// This file is automatically compiled by Webpack, along with any other files
+// present in this directory. You're encouraged to place your actual application logic in
+// a relevant structure within app/javascript and only use these pack files to reference
+// that code so it'll be compiled.
+
+require("@rails/ujs").start()
+require("turbolinks").start()
+require("@rails/activestorage").start()
+require("channels")
+
+import "bootstrap"
+
+
+// Uncomment to copy all static images under ../images to the output folder and reference
+// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)
+// or the `imagePath` JavaScript helper below.
+//
+// const images = require.context('../images', true)
+// const imagePath = (name) => images(name, true)
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
new file mode 100644
index 000000000..d394c3d10
--- /dev/null
+++ b/app/jobs/application_job.rb
@@ -0,0 +1,7 @@
+class ApplicationJob < ActiveJob::Base
+ # Automatically retry jobs that encountered a deadlock
+ # retry_on ActiveRecord::Deadlocked
+
+ # Most jobs are safe to ignore if the underlying records are no longer available
+ # discard_on ActiveJob::DeserializationError
+end
diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb
new file mode 100644
index 000000000..286b2239d
--- /dev/null
+++ b/app/mailers/application_mailer.rb
@@ -0,0 +1,4 @@
+class ApplicationMailer < ActionMailer::Base
+ default from: 'from@example.com'
+ layout 'mailer'
+end
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
new file mode 100644
index 000000000..10a4cba84
--- /dev/null
+++ b/app/models/application_record.rb
@@ -0,0 +1,3 @@
+class ApplicationRecord < ActiveRecord::Base
+ self.abstract_class = true
+end
diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep
new file mode 100644
index 000000000..e69de29bb
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
new file mode 100644
index 000000000..7a8dbd9c4
--- /dev/null
+++ b/app/views/layouts/application.html.erb
@@ -0,0 +1,15 @@
+
+
+
+ TaskList
+ <%= csrf_meta_tags %>
+ <%= csp_meta_tag %>
+
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
+ <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
+
+
+
+ <%= yield %>
+
+
diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb
new file mode 100644
index 000000000..cbd34d2e9
--- /dev/null
+++ b/app/views/layouts/mailer.html.erb
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+ <%= yield %>
+
+
diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb
new file mode 100644
index 000000000..37f0bddbd
--- /dev/null
+++ b/app/views/layouts/mailer.text.erb
@@ -0,0 +1 @@
+<%= yield %>
diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb
new file mode 100644
index 000000000..af69b27b1
--- /dev/null
+++ b/app/views/tasks/index.html.erb
@@ -0,0 +1,10 @@
+Task List
+<% if @tasks.length > 0 %>
+
+ <% @tasks.each do |task| %>
+ - <%= task[:description] %> due <%= task[:due] %>
+ <% end %>
+
+ <% else %>
+