Skip to content

Commit 858ba65

Browse files
committed
added apps page
1 parent 6d2d0c9 commit 858ba65

File tree

4 files changed

+70
-2
lines changed

4 files changed

+70
-2
lines changed

src/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Projects } from "@/components/sections/Projects";
66
import { HashRouter, Route, Routes, useLocation } from "react-router";
77
import ProjectDetails from "./components/pages/project-details";
88
import { useEffect } from "react";
9+
import Apps from "./components/pages/apps";
910

1011
function Root() {
1112
const { state } = useLocation();
@@ -36,6 +37,7 @@ function App() {
3637
<Routes>
3738
<Route path="/" element={<Root />} />
3839
<Route path="/projects/:id" element={<ProjectDetails />} />
40+
<Route path="/apps" element={<Apps />} />
3941
</Routes>
4042
</div>
4143
</main>

src/assets/dash-icon.png

869 KB
Loading

src/components/pages/apps.tsx

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { useNavigate } from "react-router";
2+
3+
const apps = [
4+
{
5+
title: "Rep",
6+
description:
7+
"Workout tracker built to work offline and sync with your friends.",
8+
image: "/src/assets/rep-icon.png",
9+
},
10+
{
11+
title: "Dash",
12+
description:
13+
"Running tracker built to work offline and sync with your friends.",
14+
image: "/src/assets/dash-icon.png",
15+
},
16+
];
17+
18+
const Apps = () => {
19+
const navigate = useNavigate();
20+
21+
return (
22+
<div className="min-h-screen py-20">
23+
<div className="flex flex-col px-6">
24+
<h1 className="text-4xl md:text-5xl font-bold mb-4 tracking-tight">
25+
Apps
26+
</h1>
27+
<p className="text-base text-muted-foreground mb-8">
28+
Here are some of the apps I've worked on.
29+
</p>
30+
</div>
31+
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
32+
{apps.map((app) => (
33+
<div
34+
key={app.title}
35+
className="flex flex-row cursor-pointer hover:bg-accent dark:hover:bg-input/20 p-6 gap-6 rounded-xl"
36+
onClick={() => navigate(`/apps/${app.title}`)}
37+
>
38+
<div className="flex flex-col gap-1 items-center justify-center">
39+
<div className="relative rounded-lg overflow-hidden bg-muted w-16 h-16">
40+
<img
41+
src={app.image}
42+
alt={app.title}
43+
className="object-cover w-full h-full object-center"
44+
/>
45+
</div>
46+
<p className="text-xs text-muted-foreground">{app.title}</p>
47+
</div>
48+
<div className="flex flex-col gap-2">
49+
<h1 className="text-xl">{app.title}</h1>
50+
<p className="line-clamp-3 text-sm text-muted-foreground">
51+
{app.description}
52+
</p>
53+
</div>
54+
</div>
55+
))}
56+
</div>
57+
</div>
58+
);
59+
};
60+
61+
export default Apps;

src/components/sections/Projects.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Button } from "@/components/ui/button";
22
import { Badge } from "@/components/ui/badge";
33

44
import { motion } from "framer-motion";
5-
import { Code, MoveRight } from "lucide-react";
5+
import { ArrowRight, Code, MoveRight } from "lucide-react";
66
import { useNavigate } from "react-router";
77
import { useProjects } from "@/hooks/useProjects";
88

@@ -105,13 +105,18 @@ export function Projects() {
105105
whileInView={{ opacity: 1 }}
106106
transition={{ duration: 0.5, delay: 0.2 }}
107107
viewport={{ once: true }}
108+
className="flex flex-row justify-between px-6 mb-12"
108109
>
109-
<div className="flex flex-col gap-2 px-6 mb-12">
110+
<div className="flex flex-col gap-2">
110111
<h2 className="text-3xl font-bold">Other Projects</h2>
111112
<p className="text-muted-foreground text-lg">
112113
Additional projects I've worked on
113114
</p>
114115
</div>
116+
<Button variant="link" onClick={() => navigate("/apps")}>
117+
View All Apps
118+
<ArrowRight />
119+
</Button>
115120
</motion.div>
116121

117122
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">

0 commit comments

Comments
 (0)