Skip to content

Commit 355bc49

Browse files
Add files via upload
0 parents  commit 355bc49

40 files changed

+17340
-0
lines changed

package-lock.json

+15,281
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"name": "template9",
3+
"description": "A personal static website/portfolio template hosted with GitHub Pages, built to showcase my recent projects.",
4+
"homepage": "https://program-warehouse.github.io/Template_1/",
5+
"version": "2.0.0",
6+
"private": true,
7+
"author": {
8+
"name": "Program Warehouse",
9+
"email": "programwarehouse@gmail.com",
10+
"url": "https://github.com/program-warehouse"
11+
},
12+
"dependencies": {
13+
"axios": "^0.19.2",
14+
"bootstrap": "^4.5.2",
15+
"gh-pages": "^2.2.0",
16+
"jquery": "^3.5.1",
17+
"node-sass": "^4.14.1",
18+
"prop-types": "^15.7.2",
19+
"react": "^16.14.0",
20+
"react-bootstrap": "^1.4.0",
21+
"react-dom": "^16.14.0",
22+
"react-loading-skeleton": "^2.1.1",
23+
"react-router": "^5.2.0",
24+
"react-router-dom": "^5.2.0",
25+
"react-scripts": "^3.4.4",
26+
"react-typist": "^2.0.5",
27+
"typescript": "^3.9.7"
28+
},
29+
"scripts": {
30+
"predeploy": "npm run build",
31+
"deploy": "gh-pages -d build",
32+
"start": "react-scripts start",
33+
"build": "react-scripts build",
34+
"test": "react-scripts test",
35+
"eject": "react-scripts eject",
36+
"custom-deploy": "node pages.js"
37+
},
38+
"eslintConfig": {
39+
"extends": "react-app"
40+
},
41+
"browserslist": {
42+
"production": [
43+
">0.2%",
44+
"not dead",
45+
"not op_mini all"
46+
],
47+
"development": [
48+
"last 1 chrome version",
49+
"last 1 firefox version",
50+
"last 1 safari version"
51+
]
52+
}
53+
}

pages.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const ghpages = require("gh-pages");
2+
const pathname = `${__dirname}/build`;
3+
const repoURL = "https://github.com/Program-Warehouse/Template_1.git";
4+
5+
ghpages.publish(
6+
pathname,
7+
{
8+
branch: "master",
9+
repo: repoURL,
10+
},
11+
(err) => {
12+
if (err) console.log("ERROR: ", err);
13+
else console.log("PUBLISHED");
14+
}
15+
);

public/favicon.ico

3.78 KB
Binary file not shown.

public/index.html

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8" />
5+
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1" />
7+
<link
8+
href="https://use.fontawesome.com/releases/v5.4.1/css/all.css"
9+
rel="stylesheet"
10+
/>
11+
12+
<meta name="theme-color" content="#000000" />
13+
<meta
14+
name="description"
15+
content="My name is Program Warehouse. I’m a Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut "
16+
/>
17+
<link rel="apple-touch-icon" href="logo192.png" />
18+
<!--
19+
manifest.json provides metadata used when your web app is installed on a
20+
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
21+
-->
22+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
23+
<meta property="twitter:image" content="%PUBLIC_URL%/social-image.png" />
24+
<meta property="og:image" content="%PUBLIC_URL%/social-image.png" />
25+
<!--
26+
Notice the use of %PUBLIC_URL% in the tags above.
27+
It will be replaced with the URL of the `public` folder during the build.
28+
Only files inside the `public` folder can be referenced from the HTML.
29+
30+
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
31+
work correctly both with client-side routing and a non-root public URL.
32+
Learn how to configure a non-root public URL by running `npm run build`.
33+
-->
34+
<title>Template 1</title>
35+
</head>
36+
<body>
37+
<noscript>You need to enable JavaScript to run this app.</noscript>
38+
<div id="root"></div>
39+
<!--
40+
This HTML file is a template.
41+
If you open it directly in the browser, you will see an empty page.
42+
43+
You can add webfonts, meta tags, or analytics to this file.
44+
The build step will place the bundled scripts into the <body> tag.
45+
46+
To begin the development, run `npm start` or `yarn start`.
47+
To create a production bundle, use `npm run build` or `yarn build`.
48+
-->
49+
</body>
50+
</html>

public/logo192.png

5.22 KB
Loading

public/logo512.png

9.44 KB
Loading

public/manifest.json

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"short_name": "React App",
3+
"name": "Create React App Sample",
4+
"icons": [
5+
{
6+
"src": "favicon.ico",
7+
"sizes": "64x64 32x32 24x24 16x16",
8+
"type": "image/x-icon"
9+
},
10+
{
11+
"src": "logo192.png",
12+
"type": "image/png",
13+
"sizes": "192x192"
14+
},
15+
{
16+
"src": "logo512.png",
17+
"type": "image/png",
18+
"sizes": "512x512"
19+
}
20+
],
21+
"start_url": ".",
22+
"display": "standalone",
23+
"theme_color": "#000000",
24+
"background_color": "#ffffff"
25+
}

public/robots.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# https://www.robotstxt.org/robotstxt.html
2+
User-agent: *

src/App.js

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import React from "react";
2+
import { BrowserRouter, Route } from "react-router-dom";
3+
import {
4+
navBar,
5+
mainBody,
6+
about,
7+
repos,
8+
leadership,
9+
skills,
10+
getInTouch,
11+
} from "./editable-stuff/config.js";
12+
import MainBody from "./components/home/MainBody";
13+
import AboutMe from "./components/home/AboutMe";
14+
import Project from "./components/home/Project";
15+
import Footer from "./components/Footer";
16+
import Navbar from "./components/Navbar";
17+
import Skills from "./components/home/Skills";
18+
// import { Blog } from "./components/blog/Blog";
19+
// import BlogPost from "./components/blog/BlogPost";
20+
import GetInTouch from "./components/home/GetInTouch.jsx";
21+
import Leadership from "./components/home/Leadership.jsx";
22+
23+
const Home = React.forwardRef((props, ref) => {
24+
return (
25+
<>
26+
<MainBody
27+
gradient={mainBody.gradientColors}
28+
title={`${mainBody.firstName} ${mainBody.middleName} ${mainBody.lastName}`}
29+
message={mainBody.message}
30+
icons={mainBody.icons}
31+
ref={ref}
32+
/>
33+
{about.show && (
34+
<AboutMe
35+
heading={about.heading}
36+
message={about.message}
37+
link={about.imageLink}
38+
imgSize={about.imageSize}
39+
resume={about.resume}
40+
/>
41+
)}
42+
{repos.show && (
43+
<Project
44+
heading={repos.heading}
45+
username={repos.gitHubUsername}
46+
length={repos.reposLength}
47+
specfic={repos.specificRepos}
48+
/>
49+
)}
50+
{leadership.show && (
51+
<Leadership
52+
heading={leadership.heading}
53+
message={leadership.message}
54+
img={leadership.images}
55+
imageSize={leadership.imageSize}
56+
/>
57+
)}
58+
{skills.show && (
59+
<Skills
60+
heading={skills.heading}
61+
hardSkills={skills.hardSkills}
62+
softSkills={skills.softSkills}
63+
/>
64+
)}
65+
</>
66+
);
67+
});
68+
69+
const App = () => {
70+
const titleRef = React.useRef();
71+
72+
return (
73+
<BrowserRouter basename={process.env.PUBLIC_URL + "/"}>
74+
{navBar.show && <Navbar ref={titleRef} />}
75+
<Route path="/" exact component={() => <Home ref={titleRef} />} />
76+
{/* {false && <Route path="/blog" exact component={Blog} />}
77+
{false && <Route path="/blog/:id" component={BlogPost} />} */}
78+
<Footer>
79+
{getInTouch.show && (
80+
<GetInTouch
81+
heading={getInTouch.heading}
82+
message={getInTouch.message}
83+
email={getInTouch.email}
84+
/>
85+
)}
86+
</Footer>
87+
</BrowserRouter>
88+
);
89+
};
90+
91+
export default App;

src/App.test.js

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from "react";
2+
import ReactDOM from "react-dom";
3+
import App from "./App";
4+
5+
it("renders without crashing", () => {
6+
const div = document.createElement("div");
7+
ReactDOM.render(<App />, div);
8+
ReactDOM.unmountComponentAtNode(div);
9+
});

src/components/Footer.jsx

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import React from "react";
2+
import Container from "react-bootstrap/Container";
3+
4+
const Footer = (props) => {
5+
const bgStyle = { backgroundColor: "#f5f5f5" };
6+
7+
return (
8+
<footer style={bgStyle} className="mt-auto py-5 text-center ">
9+
<Container>
10+
{props.children}
11+
<i className="fas fa-code" /> with <i className="fas fa-heart" /> by{" "}
12+
<a
13+
className="badge badge-dark"
14+
rel="noopener"
15+
href="https://github.com/program-warehouse"
16+
aria-label="My GitHub"
17+
>
18+
Program Warehouse
19+
</a>{" "}
20+
using <i className="fab fa-react" />
21+
</Container>
22+
</footer>
23+
);
24+
};
25+
26+
export default Footer;

src/components/Navbar.jsx

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import React, { useState } from "react";
2+
import { Link } from "react-router-dom";
3+
import { useScrollPosition } from "../hooks/useScrollPosition";
4+
import useResizeObserver from "../hooks/useResizeObserver";
5+
import Navbar from "react-bootstrap/Navbar";
6+
import Nav from "react-bootstrap/Nav";
7+
import { mainBody, repos, about, skills } from "../editable-stuff/config.js";
8+
9+
const Navigation = React.forwardRef((props, ref) => {
10+
// const { showBlog, FirstName } = config;
11+
const [isTop, setIsTop] = useState(true);
12+
const [scrollPosition, setScrollPosition] = useState(0);
13+
const navbarMenuRef = React.useRef();
14+
const navbarDimensions = useResizeObserver(navbarMenuRef);
15+
const navBottom = navbarDimensions ? navbarDimensions.bottom : 0;
16+
useScrollPosition(
17+
({ prevPos, currPos }) => {
18+
if (!navbarDimensions) return;
19+
currPos.y + ref.current.offsetTop - navbarDimensions.bottom > 5
20+
? setIsTop(true)
21+
: setIsTop(false);
22+
setScrollPosition(currPos.y);
23+
},
24+
[navBottom]
25+
);
26+
27+
React.useEffect(() => {
28+
if (!navbarDimensions) return;
29+
navBottom - scrollPosition >= ref.current.offsetTop
30+
? setIsTop(false)
31+
: setIsTop(true);
32+
}, [navBottom, navbarDimensions, ref, scrollPosition]);
33+
34+
return (
35+
<Navbar
36+
ref={navbarMenuRef}
37+
className={` fixed-top ${
38+
!isTop ? "navbar-white" : "navbar-transparent"
39+
}`}
40+
expand="lg"
41+
>
42+
<Navbar.Brand className="brand" href={process.env.PUBLIC_URL + "/#home"}>
43+
{`<${mainBody.firstName} />`}
44+
</Navbar.Brand>
45+
<Navbar.Toggle aria-controls="basic-navbar-nav" className="toggler" />
46+
<Navbar.Collapse id="basic-navbar-nav">
47+
<Nav className="mr-auto">
48+
{/* {
49+
<Nav.Link className="nav-link lead">
50+
<Link to={process.env.PUBLIC_URL + "/blog"}>Blog</Link>
51+
</Nav.Link>
52+
} */}
53+
{repos.show && (
54+
<Nav.Link
55+
className="nav-link lead"
56+
href={process.env.PUBLIC_URL + "/#projects"}
57+
>
58+
Projects
59+
</Nav.Link>
60+
)}
61+
<Nav.Link
62+
className="nav-link lead"
63+
href={about.resume}
64+
target="_blank"
65+
rel="noreferrer noopener"
66+
>
67+
Resume
68+
</Nav.Link>
69+
{about.show && (
70+
<Nav.Link
71+
className="nav-link lead"
72+
href={process.env.PUBLIC_URL + "/#aboutme"}
73+
>
74+
About
75+
</Nav.Link>
76+
)}
77+
{skills.show && (
78+
<Nav.Link
79+
className="nav-link lead"
80+
href={process.env.PUBLIC_URL + "/#skills"}
81+
>
82+
Skills
83+
</Nav.Link>
84+
)}
85+
</Nav>
86+
</Navbar.Collapse>
87+
</Navbar>
88+
);
89+
});
90+
91+
export default Navigation;

0 commit comments

Comments
 (0)