added one ai project.

This commit is contained in:
Joshua Ashton
2024-12-19 15:19:15 -07:00
parent 42abb0492b
commit dd727d204e
7 changed files with 115 additions and 47 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

+16 -5
View File
@@ -4,11 +4,22 @@ import ProjectCard from './components/ProjectCard';
import Footer from './components/Footer'; import Footer from './components/Footer';
import FeaturedContent from './components/FeaturedContent'; import FeaturedContent from './components/FeaturedContent';
export default function Home() { export default function Home( {projects} ) {
const projectCards = [ const projectCards = projects.map((project) => {
<ProjectCard img="./assets/img/dnd.png" name="D&D" description="Dungeons and Dragons character builder app, developed in Java." url="https://github.com/quaxlyqueen/dnd"/>, // Create a new ProjectCard object for each project in the 'projects' array
<ProjectCard img="./assets/img/graph.png" name="Graph Visualizer" description="Interactive representation of a graph data structure, developed in Java." url="https://github.com/quaxlyqueen/2420-graph-visualizer"/>, return (
]; <ProjectCard
key={project.id} // Add a unique key for each ProjectCard
frontend={project.frontend}
backend={project.backend}
id={project.id}
name={project.name}
description={project.description}
url={project.url}
img={project.img}
/>
);
});
return ( return (
<> <>
<Navigation /> <Navigation />
+19 -38
View File
@@ -4,49 +4,30 @@ import ProjectCard from './components/ProjectCard';
/* /*
* The Projects page. * The Projects page.
*
* @param String[] projects "An array of attributes, frontend, backend, id, name, description, url, img, and imgCaption"
*/ */
export default function Projects() { export default function Projects( {projects} ) {
/* const projectCards = projects.map((project) => {
* An array of project data to feed to the ProjectDisplay component. // Create a new ProjectCard object for each project in the 'projects' array
{ return (
frontend: "", <ProjectCard
backend: "", key={project.id} // Add a unique key for each ProjectCard
id: "", frontend={project.frontend}
name: "", backend={project.backend}
description: "", id={project.id}
url: "", name={project.name}
img: "" description={project.description}
}, url={project.url}
*/ img={project.img}
const data = [ />
{ );
frontend: "java", });
backend: "",
id: "dnd",
name: "D&D",
description: "Dungeons and Dragons character builder app, developed in Java.",
url: "https://github.com/quaxlyqueen/dnd",
img: "/assets/img/dnd.png"
},
{
frontend: "java",
backend: "",
id: "graph",
name: "Graph Visualizer",
description: "Interactive representation of a graph data structure, developed in Java.",
url: "https://github.com/quaxlyqueen/2420-graph-visualizer",
img: "/assets/img/graph.png"
},
];
let i = 0;
return ( return (
<> <>
<Navigation /> <Navigation />
<div className="project-grid"> <div className="project-grid">
{data.map(item => ( {projectCards}
<ProjectCard frontend={item.frontend} backend={item.backend} id={item.id} name={item.name} description={item.description} url={item.url} img={item.img} />
))}
</div> </div>
<Footer /> <Footer />
</> </>
+1 -1
View File
@@ -8,7 +8,7 @@
export default function FeaturedContent( {content} ) { export default function FeaturedContent( {content} ) {
return ( return (
<> <>
<div className="row"> <div className="row flex-row">
<div className="col"> <div className="col">
{content[0]} {content[0]}
</div> </div>
+2 -1
View File
@@ -9,9 +9,10 @@
* @param String url "The URL for the repository of the project." * @param String url "The URL for the repository of the project."
* @param String img "Path to an image." * @param String img "Path to an image."
* @param String imgCaption "Accessibile caption for the image." * @param String imgCaption "Accessibile caption for the image."
*
* TODO: Add project keys.
*/ */
export default function ProjectCard( {frontend, backend, id, name, description, url, img, imgCaption} ) { export default function ProjectCard( {frontend, backend, id, name, description, url, img, imgCaption} ) {
console.log(img);
return ( return (
<> <>
<div className={`card ${frontend} ${backend}`}> <div className={`card ${frontend} ${backend}`}>
+48 -2
View File
@@ -14,11 +14,57 @@ import Resume from "./Resume";
const root = document.getElementById("root"); const root = document.getElementById("root");
/*
* TEMPLATE:
{
frontend: "",
backend: "",
id: "",
name: "",
description: "",
url: "",
img: "",
imgCaption: ""
},
*/
const projects = [
{
frontend: "java",
backend: "",
id: "graph",
name: "Graph",
description: "Interactive representation of a graph data structure, developed in Java.",
url: "https://github.com/quaxlyqueen/2420-graph-visualizer",
img: "/assets/img/graph.png",
imgCaption: "A screenshot of my graph data structure visualizer application."
},
{
frontend: "flutter",
backend: "go",
id: "one-ai",
name: "OneAI",
description: "An end-to-end deployment wrapper for Meta's Ollama.",
url: "https://github.com/quaxlyqueen/one-ai",
img: "/assets/img/one-ai.png",
imgCaption: "A screenshot of a conversation with a self-hosted artificial intelligence."
},
{
frontend: "java",
backend: "",
id: "dnd",
name: "D&D",
description: "A Dungeons and Dragons character builder app, developed in Java.",
url: "https://github.com/quaxlyqueen/dnd",
img: "/assets/img/dnd.png",
imgCaption: "A screenshot of my Dungeons and Dragons character builder application."
},
];
ReactDOM.createRoot(root).render( ReactDOM.createRoot(root).render(
<BrowserRouter> <BrowserRouter>
<Routes> <Routes>
<Route path="/" element={<Home />} /> <Route path="/" element={<Home projects={projects} />} />
<Route path="/projects" element={<Projects />} /> <Route path="/projects" element={<Projects projects={projects} />} />
<Route path="/contact" element={<Contact />} /> <Route path="/contact" element={<Contact />} />
<Route path="/about" element={<About />} /> <Route path="/about" element={<About />} />
<Route path="/blog" element={<Blog />} /> <Route path="/blog" element={<Blog />} />
+29
View File
@@ -306,6 +306,16 @@ input[type="radio"]:hover + label {
font-size: 2vw; font-size: 2vw;
} }
.flex-row {
display: flex; /* Enable flexbox layout */
height: 100%; /* Set the height of the container */
}
.flex-row > .col {
display: flex;
flex-direction: column; /* Ensure content flows vertically */
height: 100%; /* Make each column fill the container's height */
}
/*Buttons*/ /*Buttons*/
.btn { .btn {
@@ -409,6 +419,25 @@ input[type="radio"]:hover + label {
.social-links li a { .social-links li a {
font-size: 2vw; font-size: 2vw;
} }
h1 {
font-size: 8vw;
}
h2 {
font-size: 6vw;
}
h3, .navbar-brand {
font-size: 5vw;
}
h4 {
font-size: 3vw;
}
p, .nav-link, .nav-link > .nav-item {
font-size: 2vw;
}
} }
@media (max-width: 991px) { @media (max-width: 991px) {