diff options
| author | realtradam <[email protected]> | 2024-03-09 18:02:08 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-03-09 18:02:08 -0500 |
| commit | f02c76e4d922a2696f7ab69e0735be9048942d7b (patch) | |
| tree | 7adaf500fc89fe8dddd996822480afc6012d8068 | |
| parent | fdd9a2ef16b9401048f0c6b743c09ddcb52a8516 (diff) | |
| download | gameHolster-f02c76e4d922a2696f7ab69e0735be9048942d7b.tar.gz gameHolster-f02c76e4d922a2696f7ab69e0735be9048942d7b.zip | |
Configure react as the frontend
| -rw-r--r-- | app/assets/stylesheets/application.bootstrap.scss | 33 | ||||
| -rw-r--r-- | app/controllers/homepage_controller.rb | 4 | ||||
| -rw-r--r-- | app/helpers/homepage_helper.rb | 2 | ||||
| -rw-r--r-- | app/javascript/application.js | 1 | ||||
| -rw-r--r-- | app/javascript/components/App.jsx | 4 | ||||
| -rw-r--r-- | app/javascript/components/Home.jsx | 23 | ||||
| -rw-r--r-- | app/javascript/components/index.jsx | 10 | ||||
| -rw-r--r-- | app/javascript/routes/index.jsx | 11 | ||||
| -rw-r--r-- | app/views/homepage/index.html.erb | 0 | ||||
| -rw-r--r-- | config/routes.rb | 1 | ||||
| -rw-r--r-- | package.json | 5 | ||||
| -rw-r--r-- | test/controllers/homepage_controller_test.rb | 8 | ||||
| -rw-r--r-- | yarn.lock | 54 |
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 @@ -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" |
