Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
e3a28fc
Merge pull request #4 from joshxfi/dev
joshxfi Jun 7, 2025
0c24322
Feat: Virtualization, CI Cache, & Better Skeleton
joshxfi Jun 9, 2025
166d978
Merge pull request #6 from joshxfi/dev
joshxfi Jun 10, 2025
05d6048
Merge pull request #8 from joshxfi/dev
joshxfi Jun 10, 2025
3a46992
Merge pull request #9 from joshxfi/dev
joshxfi Jun 13, 2025
0c5bdda
Merge pull request #10 from joshxfi/dev
joshxfi Jun 17, 2025
d1a1d78
Merge pull request #11 from joshxfi/dev
joshxfi Jun 18, 2025
9f915f8
Implement error boundary
joshxfi Jun 18, 2025
5836021
Merge pull request #13 from joshxfi/dev
joshxfi Jun 19, 2025
6fd7864
Fix(temp): Remove redis integration
joshxfi Jun 19, 2025
8af2f95
Merge pull request #15 from joshxfi/dev
joshxfi Jun 20, 2025
0cad13d
Merge pull request #16 from joshxfi/dev
joshxfi Jun 20, 2025
a26f576
Merge pull request #17 from joshxfi/dev
joshxfi Jun 24, 2025
b93911a
Merge pull request #18 from joshxfi/dev
joshxfi Aug 2, 2025
d2cdefa
Merge pull request #19 from joshxfi/dev
joshxfi Aug 3, 2025
723594f
Merge pull request #20 from joshxfi/dev
joshxfi Aug 25, 2025
8c31d0e
release: v0.3.0 (#21)
joshxfi Sep 28, 2025
3fb4698
release: v0.4.0
joshxfi Oct 18, 2025
1cb1d5c
release: v0.4.1
joshxfi Oct 28, 2025
47a86e6
chore(deps): install ogl for minimal webgl
hyamero Oct 29, 2025
7295696
feat: landing light rays
hyamero Oct 29, 2025
5bb91e9
chore(deps): install motion
hyamero Oct 29, 2025
f1d7cc9
feat: effects on encrypted text
hyamero Oct 29, 2025
dd50133
feat: shiny button
hyamero Oct 29, 2025
8cff3d3
chore: learn more animation
hyamero Oct 29, 2025
fce0ad7
chore: update shadcn registry
hyamero Oct 29, 2025
89dec51
chore(deps): install dotted map
hyamero Oct 29, 2025
f3beb9f
chore: update footer
hyamero Oct 29, 2025
c12490d
feat: dotted map ui
hyamero Oct 29, 2025
b0e5489
chore: install tooltip
hyamero Oct 29, 2025
b59c131
feat: dock nav
hyamero Oct 29, 2025
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
5 changes: 4 additions & 1 deletion app/about/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { GitPullRequestArrowIcon } from "lucide-react";
import type { Metadata } from "next";
import Link from "next/link";
import { logout } from "@/actions/auth";
import { DockNav } from "@/components/dock-nav";
import { Footer } from "@/components/footer";
import { Navbar } from "@/components/navbar";
import { Alert, AlertDescription } from "@/components/ui/alert";
Expand All @@ -11,9 +13,10 @@ export const metadata: Metadata = {

export default function Home() {
return (
<div className="min-h-screen flex flex-col justify-between">
<div className="min-h-screen flex flex-col justify-between pb-16">
<section>
<Navbar />
<DockNav logout={logout} />

<div className="space-y-12">
<Alert className="mt-4">
Expand Down
4 changes: 2 additions & 2 deletions app/forum/components/logout-button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ export function LogoutButton() {
className="grid place-items-center"
>
{pending ? (
<Loader2Icon className="size-5 animate-spin text-muted-foreground" />
<Loader2Icon className="size-4 animate-spin text-muted-foreground" />
) : (
<LogOutIcon className="size-5" />
<LogOutIcon className="size-4" />
)}
</button>
);
Expand Down
16 changes: 4 additions & 12 deletions app/forum/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
import {
HomeIcon,
InfoIcon,
MessageCirclePlusIcon,
SquareCodeIcon,
} from "lucide-react";
import type { Metadata } from "next";
import Link from "next/link";
import { redirect } from "next/navigation";

import { logout } from "@/actions/auth";
import { Button } from "@/components/ui/button";
import { DockNav } from "@/components/dock-nav";
import { getSession } from "@/lib/auth";
import { ForumNavbar } from "./components/forum-navbar";
import { LogoutButton } from "./components/logout-button";

export const metadata: Metadata = {
title: "Umedu — Private Forum",
Expand All @@ -37,7 +28,8 @@ export default async function ForumLayout({
<ForumNavbar forumId={session.forumId} />

{children}

<DockNav logout={logout} />
{/*
<section className="rounded-t-4xl bg-secondary w-full p-4 max-w-xl mx-auto flex items-center justify-evenly fixed bottom-0 right-0 left-0">
<Link href="/">
<HomeIcon className="size-5" />
Expand All @@ -56,7 +48,7 @@ export default async function ForumLayout({
<form action={logout}>
<LogoutButton />
</form>
</section>
</section> */}
</section>
);
}
28 changes: 28 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,32 @@
[role="button"]:not(:disabled) {
cursor: pointer;
}

.shiny-text {
display: inline-block;
background-image: linear-gradient(
120deg,
rgba(255, 255, 255, 0) 40%,
rgba(255, 255, 255, 0.8) 50%,
rgba(255, 255, 255, 0) 60%
);
background-size: 200% 100%;
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent; /* ensure text shows the background gradient */
color: transparent;
}

.animate-shine {
animation: shine var(--shine-duration, 5s) linear infinite;
}

@keyframes shine {
0% {
background-position: 100%;
}
100% {
background-position: -100%;
}
}
}
45 changes: 39 additions & 6 deletions app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,26 +1,50 @@
import { MessageSquareTextIcon } from "lucide-react";
import Link from "next/link";
import DecryptedText from "@/components/DecryptedText";
import { FlatMap } from "@/components/flat-map";
import { Footer } from "@/components/footer";
import { HighlightText } from "@/components/highlight-text";
import LightRays from "@/components/LightRays";
import { Navbar } from "@/components/navbar";
import ShinyText from "@/components/ShinyText";
import { Button } from "@/components/ui/button";

export default function Home() {
return (
<div className="min-h-screen flex flex-col justify-between">
<div className="h-screen flex flex-col justify-between">
<LightRays
raysOrigin="top-center"
raysColor="#ffffff"
raysSpeed={1}
lightSpread={0.5}
fadeDistance={1}
rayLength={5}
followMouse={true}
mouseInfluence={0.1}
noiseAmount={0.1}
distortion={0}
className="custom-rays absolute inset-0 -z-10 opacity-40"
/>
<section>
<Navbar />
<div className="flex items-center flex-col">
<h1 className="font-extrabold tracking-tighter text-8xl">
um<i>edu</i>
</h1>
<p className="text-muted-foreground font-medium text-center">
open-source, anonymous, encrypted, private <i>edu</i> forums
open-source, anonymous,
<DecryptedText
text=" encrypted"
animateOn="both"
className="cursor-crosshair"
/>
, private <i>edu</i> forums
</p>

<Button asChild className="mt-4" variant="outline">
<Link href="/login">
Access your private forum <MessageSquareTextIcon />
<ShinyText text="✨ Access your private forum" duration={3} />
<MessageSquareTextIcon className="text-muted-foreground/50" />
</Link>
</Button>

Expand Down Expand Up @@ -49,13 +73,22 @@ export default function Home() {
</HighlightText>
email. No personal information is stored, ensuring your privacy is
protected.{" "}
<Link href="/about" className="text-white">
Learn more &rarr;
<Link
href="/about"
className="text-white gap-1 group inline-flex hover:text-muted-foreground transition-all"
>
Learn more{" "}
<span className="group-hover:translate-x-1.5 m transition-transform">
{" "}
&rarr;
</span>
</Link>
</div>
</div>
</section>

<div className="w-1/2 absolute left-0 right-0 mx-auto bottom-20 -z-10">
<FlatMap />
</div>
<Footer />
</div>
);
Expand Down
20 changes: 20 additions & 0 deletions bun.lock

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

5 changes: 4 additions & 1 deletion components.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@
"cssVariables": true,
"prefix": ""
},
"iconLibrary": "lucide",
"aliases": {
"components": "@/components",
"utils": "@/lib/utils",
"ui": "@/components/ui",
"lib": "@/lib",
"hooks": "@/hooks"
},
"iconLibrary": "lucide"
"registries": {
"@magicui": "https://magicui.design/r/{name}.json"
}
}
Loading