Add folder structure

This commit is contained in:
2025-07-20 11:22:20 +02:00
parent d04702fffe
commit f3c648e854
19 changed files with 158 additions and 14 deletions

View File

@ -0,0 +1,2 @@
import { handlers } from "@/auth"
export const { GET, POST } = handlers

View File

@ -0,0 +1,33 @@
import { s3 } from "@/lib/s3";
import { GetObjectCommand } from "@aws-sdk/client-s3";
export async function GET(req: Request, { params }: { params: { key: string[] } }) {
const { key } = await params;
const s3Key = key.join("/");
try {
const command = new GetObjectCommand({
Bucket: "gaertan",
Key: s3Key,
});
const response = await s3.send(command);
if (!response.Body) {
return new Response("No body", { status: 500 });
}
const contentType = response.ContentType ?? "application/octet-stream";
return new Response(response.Body as ReadableStream, {
headers: {
"Content-Type": contentType,
"Cache-Control": "public, max-age=3600",
"Content-Disposition": "inline", // use 'attachment' to force download
},
});
} catch (err) {
console.log(err)
return new Response("Image not found", { status: 404 });
}
}

View File

@ -0,0 +1,5 @@
export default function CommissionsBoardPage() {
return (
<div>CommissionsBoardPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function CommissionsTypesEditPage() {
return (
<div>CommissionsTypesEditPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function CommissionsTypesNewPage() {
return (
<div>CommissionsTypesNewPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function CommissionsTypesPage() {
return (
<div>CommissionsTypesPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioCategoriesEditPage() {
return (
<div>PortfolioCategoriesEditPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioCategoriesNewPage() {
return (
<div>PortfolioCategoriesNewPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioCategoriesPage() {
return (
<div>PortfolioCategoriesPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioImagesEditPage() {
return (
<div>PortfolioImagesEditPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioImagesNewPage() {
return (
<div>PortfolioImagesNewPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioImagesPage() {
return (
<div>PortfolioImagesPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTagsEditPage() {
return (
<div>PortfolioTagsEditPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTagsNewPage() {
return (
<div>PortfolioTagsNewPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTagsPage() {
return (
<div>PortfolioTagsPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTypesEditPage() {
return (
<div>PortfolioTypesEditPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTypesNewPage() {
return (
<div>PortfolioTypesNewPage</div>
);
}

View File

@ -0,0 +1,5 @@
export default function PortfolioTypesPage() {
return (
<div>PortfolioTypesPage</div>
);
}

View File

@ -16,32 +16,66 @@ export default function TopNav() {
<NavigationMenuItem>
<NavigationMenuTrigger>Portfolio</NavigationMenuTrigger>
<NavigationMenuContent>
<ul className="grid gap-2 p-4 w-48">
<ul className="grid w-[300px] gap-4">
<li>
<NavigationMenuLink asChild>
<Link href="/portfolio" className="block px-2 py-1 rounded hover:bg-muted">
All Portfolio Images
<Link href="/portfolio/images">
<div className="text-sm leading-none font-medium">Images</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
<li>
<NavigationMenuLink asChild>
<Link href="/portfolio/arttypes" className="block px-2 py-1 rounded hover:bg-muted">
Art Types
<Link href="/portfolio/types">
<div className="text-sm leading-none font-medium">Types</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
<li>
<NavigationMenuLink asChild>
<Link href="/portfolio/categories" className="block px-2 py-1 rounded hover:bg-muted">
Categories
<Link href="/portfolio/categories">
<div className="text-sm leading-none font-medium">Categories</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
<li>
<NavigationMenuLink asChild>
<Link href="/portfolio/tags" className="block px-2 py-1 rounded hover:bg-muted">
Tags
<Link href="/portfolio/tags">
<div className="text-sm leading-none font-medium">Tags</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
</ul>
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuTrigger>Commissions</NavigationMenuTrigger>
<NavigationMenuContent>
<ul className="grid w-[300px] gap-4">
<li>
<NavigationMenuLink asChild>
<Link href="/commissions/types">
<div className="text-sm leading-none font-medium">Types</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
<li>
<NavigationMenuLink asChild>
<Link href="/commissions/board">
<div className="text-sm leading-none font-medium">Board</div>
<p className="text-muted-foreground line-clamp-2 text-sm leading-snug">
</p>
</Link>
</NavigationMenuLink>
</li>
@ -49,11 +83,6 @@ export default function TopNav() {
</NavigationMenuContent>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>
<Link href="/items/commissions/types">CommissionTypes</Link>
</NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink asChild className={navigationMenuTriggerStyle()}>
<Link href="/items/commissions/tos">ToS</Link>