diff --git a/Procfile b/Procfile
new file mode 100644
index 0000000..da4175f
--- /dev/null
+++ b/Procfile
@@ -0,0 +1,2 @@
+web: bundle exec rails s
+release: bundle exec rails db:migrate
\ No newline at end of file
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 905bc14..b757fd5 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,3 +1,4 @@
class ApplicationController < ActionController::API
include Response
+ include BasicAuth
end
diff --git a/app/controllers/concerns/basic_auth.rb b/app/controllers/concerns/basic_auth.rb
new file mode 100644
index 0000000..0c5f472
--- /dev/null
+++ b/app/controllers/concerns/basic_auth.rb
@@ -0,0 +1,9 @@
+module BasicAuth
+ extend ActiveSupport::Concern
+
+ included do
+ include ActionController::HttpAuthentication::Basic::ControllerMethods
+ http_basic_authenticate_with name: ENV['BASIC_AUTH_USERNAME'],
+ password: ENV['BASIC_AUTH_PASSWORD']
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb
new file mode 100644
index 0000000..a71771e
--- /dev/null
+++ b/app/controllers/static_controller.rb
@@ -0,0 +1,17 @@
+class StaticController < ActionController::API
+ include ActionView::Layouts
+ include BasicAuth
+
+ def frontend_index_html
+ if params[:path].present?
+ send_file params[:path]
+ else
+ render file: 'protected_public/index.html'
+ end
+ end
+
+ def frontend_static
+ full_path = "protected_public/#{params[:path]}.#{params[:format]}"
+ send_file full_path
+ end
+end
diff --git a/client/public/index.html b/client/public/index.html
index b209ea0..908617c 100644
--- a/client/public/index.html
+++ b/client/public/index.html
@@ -20,7 +20,7 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
-
+
diff --git a/config/routes.rb b/config/routes.rb
index 89da8c0..3ea271d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,7 +6,8 @@ Rails.application.routes.draw do
get 'cash'
end
end
-
end
- # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
+
+ get '*path', to: 'static#frontend_static'
+ root to: 'static#frontend_index_html'
end
diff --git a/package.json b/package.json
index e49a089..b052abd 100644
--- a/package.json
+++ b/package.json
@@ -1,4 +1,13 @@
{
+ "engines": {
+ "node": "10.15.3",
+ "yarn": "1.15.2"
+ },
+ "scripts": {
+ "build": "yarn --cwd client install && yarn --cwd client build",
+ "deploy": "cp -a client/build/. protected_public/",
+ "heroku-postbuild": "yarn build && yarn deploy"
+ },
"dependencies": {
"react-router-dom": "^5.0.1"
}
diff --git a/protected_public/.gitkeep b/protected_public/.gitkeep
new file mode 100644
index 0000000..e69de29