summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-03-09 18:02:08 -0500
committerrealtradam <[email protected]>2024-03-09 18:02:08 -0500
commitf02c76e4d922a2696f7ab69e0735be9048942d7b (patch)
tree7adaf500fc89fe8dddd996822480afc6012d8068
parentfdd9a2ef16b9401048f0c6b743c09ddcb52a8516 (diff)
downloadgameHolster-f02c76e4d922a2696f7ab69e0735be9048942d7b.tar.gz
gameHolster-f02c76e4d922a2696f7ab69e0735be9048942d7b.zip
Configure react as the frontend
-rw-r--r--app/assets/stylesheets/application.bootstrap.scss33
-rw-r--r--app/controllers/homepage_controller.rb4
-rw-r--r--app/helpers/homepage_helper.rb2
-rw-r--r--app/javascript/application.js1
-rw-r--r--app/javascript/components/App.jsx4
-rw-r--r--app/javascript/components/Home.jsx23
-rw-r--r--app/javascript/components/index.jsx10
-rw-r--r--app/javascript/routes/index.jsx11
-rw-r--r--app/views/homepage/index.html.erb0
-rw-r--r--config/routes.rb1
-rw-r--r--package.json5
-rw-r--r--test/controllers/homepage_controller_test.rb8
-rw-r--r--yarn.lock54
13 files changed, 155 insertions, 1 deletions
diff --git a/app/assets/stylesheets/application.bootstrap.scss b/app/assets/stylesheets/application.bootstrap.scss
index b61b612..5f82ae5 100644
--- a/app/assets/stylesheets/application.bootstrap.scss
+++ b/app/assets/stylesheets/application.bootstrap.scss
@@ -1,2 +1,35 @@
@import 'bootstrap/scss/bootstrap';
@import 'bootstrap-icons/font/bootstrap-icons';
+
+.bg_primary-color {
+ background-color: #FFFFFF;
+}
+.primary-color {
+ background-color: #FFFFFF;
+}
+.bg_secondary-color {
+ background-color: #293241;
+}
+.secondary-color {
+ color: #293241;
+}
+.custom-button.btn {
+ background-color: #293241;
+ color: #FFF;
+ border: none;
+}
+.hero {
+ width: 100vw;
+ height: 50vh;
+}
+.hero img {
+ object-fit: cover;
+ object-position: top;
+ height: 100%;
+ width: 100%;
+}
+.overlay {
+ height: 100%;
+ width: 100%;
+ opacity: 0.4;
+}
diff --git a/app/controllers/homepage_controller.rb b/app/controllers/homepage_controller.rb
new file mode 100644
index 0000000..e09cc6e
--- /dev/null
+++ b/app/controllers/homepage_controller.rb
@@ -0,0 +1,4 @@
+class HomepageController < ApplicationController
+ def index
+ end
+end
diff --git a/app/helpers/homepage_helper.rb b/app/helpers/homepage_helper.rb
new file mode 100644
index 0000000..c5bbfe5
--- /dev/null
+++ b/app/helpers/homepage_helper.rb
@@ -0,0 +1,2 @@
+module HomepageHelper
+end
diff --git a/app/javascript/application.js b/app/javascript/application.js
index 3016c21..85b9adf 100644
--- a/app/javascript/application.js
+++ b/app/javascript/application.js
@@ -2,3 +2,4 @@
import "@hotwired/turbo-rails"
import "./controllers"
import * as bootstrap from "bootstrap"
+import "./components"
diff --git a/app/javascript/components/App.jsx b/app/javascript/components/App.jsx
new file mode 100644
index 0000000..6d7a0c7
--- /dev/null
+++ b/app/javascript/components/App.jsx
@@ -0,0 +1,4 @@
+import React from "react";
+import Routes from "../routes";
+
+export default props => <>{Routes}</>;
diff --git a/app/javascript/components/Home.jsx b/app/javascript/components/Home.jsx
new file mode 100644
index 0000000..b6c21e2
--- /dev/null
+++ b/app/javascript/components/Home.jsx
@@ -0,0 +1,23 @@
+import React from "react";
+import { Link } from "react-router-dom";
+
+export default () => (
+ <div className="vw-100 vh-100 primary-color d-flex align-items-center justify-content-center">
+ <div className="jumbotron jumbotron-fluid bg-transparent">
+ <div className="container secondary-color">
+ <h1 className="display-4">Games!</h1>
+ <p className="lead">
+ All the games I have worked on that run on the web!
+ </p>
+ <hr className="my-4" />
+ <Link
+ to="/games"
+ className="btn btn-lg custom-button"
+ role="button"
+ >
+ View Games
+ </Link>
+ </div>
+ </div>
+ </div>
+);
diff --git a/app/javascript/components/index.jsx b/app/javascript/components/index.jsx
new file mode 100644
index 0000000..0044916
--- /dev/null
+++ b/app/javascript/components/index.jsx
@@ -0,0 +1,10 @@
+import React from "react";
+import { createRoot } from "react-dom/client";
+import App from "./App";
+
+document.addEventListener("turbo:load", () => {
+ const root = createRoot(
+ document.body.appendChild(document.createElement("div"))
+ );
+ root.render(<App />);
+});
diff --git a/app/javascript/routes/index.jsx b/app/javascript/routes/index.jsx
new file mode 100644
index 0000000..e231cc5
--- /dev/null
+++ b/app/javascript/routes/index.jsx
@@ -0,0 +1,11 @@
+import React from "react";
+import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
+import Home from "../components/Home";
+
+export default (
+ <Router>
+ <Routes>
+ <Route path="/" element = {<Home />} />
+ </Routes>
+ </Router>
+);
diff --git a/app/views/homepage/index.html.erb b/app/views/homepage/index.html.erb
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/app/views/homepage/index.html.erb
diff --git a/config/routes.rb b/config/routes.rb
index a125ef0..06dda8f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,5 @@
Rails.application.routes.draw do
+ root 'homepage#index'
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
diff --git a/package.json b/package.json
index 49c8234..c629107 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,9 @@
"nodemon": "^3.1.0",
"postcss": "^8.4.35",
"postcss-cli": "^11.0.0",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.22.3",
"sass": "^1.71.1"
},
"scripts": {
@@ -24,4 +27,4 @@
"browserslist": [
"defaults"
]
-} \ No newline at end of file
+}
diff --git a/test/controllers/homepage_controller_test.rb b/test/controllers/homepage_controller_test.rb
new file mode 100644
index 0000000..46b437e
--- /dev/null
+++ b/test/controllers/homepage_controller_test.rb
@@ -0,0 +1,8 @@
+require "test_helper"
+
+class HomepageControllerTest < ActionDispatch::IntegrationTest
+ test "should get index" do
+ get homepage_index_url
+ assert_response :success
+ end
+end
diff --git a/yarn.lock b/yarn.lock
index 707ff24..de23a42 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -166,6 +166,11 @@
resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.1.3.tgz#4db480347775aeecd4dde2405659eef74a458881"
integrity sha512-ojNvnoZtPN0pYvVFtlO7dyEN9Oml1B6IDM+whGKVak69MMYW99lC2NOWXWeE3bmwEydbP/nn6ERcpfjHVjYQjA==
+"@remix-run/[email protected]":
+ version "1.15.3"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c"
+ integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==
+
"@sindresorhus/merge-streams@^2.1.0":
version "2.3.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958"
@@ -482,6 +487,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -496,6 +506,13 @@ lilconfig@^3.0.0:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3"
integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==
+loose-envify@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
@@ -654,6 +671,36 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+react-dom@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.0"
+
+react-router-dom@^6.22.3:
+ version "6.22.3"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691"
+ integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==
+ dependencies:
+ "@remix-run/router" "1.15.3"
+ react-router "6.22.3"
+
+ version "6.22.3"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e"
+ integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==
+ dependencies:
+ "@remix-run/router" "1.15.3"
+
+react@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
read-cache@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
@@ -694,6 +741,13 @@ sass@^1.71.1:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
+scheduler@^0.23.0:
+ version "0.23.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
+ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+ dependencies:
+ loose-envify "^1.1.0"
+
semver@^7.5.3:
version "7.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"