Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"WillLuke.nextjs.addTypesOnSave": true,
"WillLuke.nextjs.hasPrompted": true
}
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
# <code style="color: Yellowgreen">touch-grass.tech</code>
A social game for <code style="color: Aqua">going outside</code>, <code style="color: Greenyellow">touching grass</code>, and <code style="color: Darkorange">competing with friends</code>

## <code style="color: Cyan">Tech Stack</code>
## <code style="color: Cyan">What is it?</code>
Touch Grass is a gamified social site to share your adventures while competing with friends to grow the best garden!

It extracts location data from your posts to plant a unique flower from that region.

Add your friends and see who can grow the most plants!


## <code style="color: Blue">Tech</code>
- Next.js
- Prisma ORM
- PostgreSQL
- Prisma
- Postgre
- Vercel
96 changes: 50 additions & 46 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { Menu } from "lucide-react";
import { Sheet, SheetContent, SheetTrigger, SheetTitle } from "@/components/ui/sheet";
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
import Image from 'next/image'
import Footer from "@/components/footer";

const geistSans = Geist({
variable: "--font-geist-sans",
Expand Down Expand Up @@ -36,19 +37,19 @@ export default function RootLayout({
{/* ===== HEADER ===== */}
<header className="bg-green-50 shadow-sm w-full fixed top-0 z-30 px-2">
<div className="mx-auto flex items-center justify-between px-.5 py-2">
<Link
href="/dashboard"
className="text-lg font-semibold text-emerald-600 hover:text-emerald-700 flex items-center gap-2"
>
<Image
src="/favicon.ico"
alt="Touch Grass"
width={24}
height={24}
className="w-6 h-6 mb-1"
/>
Touch Grass
</Link>
<Link
href="/dashboard"
className="text-lg font-semibold text-emerald-600 hover:text-emerald-700 flex items-center gap-2"
>
<Image
src="/favicon.ico"
alt="Touch Grass"
width={24}
height={24}
className="w-6 h-6 mb-1"
/>
Touch Grass
</Link>

{/* --- Mobile Menu --- */}
<div className="sm:hidden">
Expand All @@ -64,24 +65,24 @@ export default function RootLayout({
</VisuallyHidden>

<nav className="flex flex-col space-y-2 mt-6">
<Link
href="/friends/leaderboard"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Leaderboard
</Link>
<Link
href="/lookup"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Search
</Link>
<Link
href="/friends"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Friends
</Link>
<Link
href="/friends/leaderboard"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Leaderboard
</Link>
<Link
href="/lookup"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Search
</Link>
<Link
href="/friends"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
>
Friends
</Link>
<Link
href="/dashboard"
className="text-gray-800 hover:text-emerald-600 px-3 py-2 rounded-md"
Expand All @@ -95,21 +96,21 @@ export default function RootLayout({

{/* --- Desktop Nav --- */}
<nav className="hidden sm:flex">
<Link href="/friends/leaderboard">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Leaderboard
</Button>
</Link>
<Link href="/lookup">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Search
</Button>
</Link>
<Link href="/friends">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Friends
</Button>
</Link>
<Link href="/friends/leaderboard">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Leaderboard
</Button>
</Link>
<Link href="/lookup">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Search
</Button>
</Link>
<Link href="/friends">
<Button variant="ghost" className="text-emerald-700 hover:text-emerald-900">
Friends
</Button>
</Link>
<Link href="/dashboard">
<Button
variant="default"
Expand All @@ -124,6 +125,9 @@ export default function RootLayout({

{/* ===== MAIN CONTENT ===== */}
<main className="flex-1 pt-12">{children}</main>

<Footer />

</body>
</html>
);
Expand Down
11 changes: 11 additions & 0 deletions components/Footer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
export default function Footer() {
return (
<footer
className="w-full h-32 bg-[url('/grass.png')] bg-repeat-x bg-bottom"
style={{
backgroundSize: "contain",
imageRendering: "pixelated",
}}
/>
);
}
15 changes: 15 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

79 changes: 0 additions & 79 deletions prisma/migrations/20251109073426_init/migration.sql

This file was deleted.

8 changes: 0 additions & 8 deletions prisma/migrations/20251109091208_init/migration.sql

This file was deleted.

8 changes: 0 additions & 8 deletions prisma/migrations/20251109091620_init/migration.sql

This file was deleted.

3 changes: 0 additions & 3 deletions prisma/migrations/migration_lock.toml

This file was deleted.