Some checks failed
Deploy to VPS / deploy (push) Has been cancelled
- Implemented GET and POST endpoints for managing tags in `src/app/api/admin/tags/route.ts`. - Created PUT and DELETE endpoints for timeline events in `src/app/api/admin/timeline/[id]/route.ts`. - Added GET and POST endpoints for timeline management in `src/app/api/admin/timeline/route.ts`. - Developed file upload functionality with validation in `src/app/api/admin/upload/route.ts`. - Introduced PUT and DELETE endpoints for managing uses items in `src/app/api/admin/uses/[id]/route.ts`. - Added GET and POST endpoints for uses management in `src/app/api/admin/uses/route.ts`. feat: enhance admin UI components for better user experience - Created `AdminSidebar` component for navigation in `src/components/admin/AdminSidebar.tsx`. - Developed `ImageUpload` component for handling image uploads in `src/components/admin/ImageUpload.tsx`. - Implemented `RichTextEditor` component for rich text editing in `src/components/admin/RichTextEditor.tsx`. - Added `TagsInput` component for managing tags in `src/components/admin/TagsInput.tsx`. - Created `TiptapRenderer` component for rendering HTML content in `src/components/writing/TiptapRenderer.tsx`. feat: establish database interaction layer with Prisma - Added database connection and session management in `src/lib/db.ts` and `src/lib/auth.ts`. - Implemented CRUD operations for posts, products, projects, settings, timeline events, and uses items in respective files under `src/lib/db/`. - Introduced utility functions for formatting dates and slug generation in `src/lib/types.ts`.
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import type { NextConfig } from "next";
|
|
import createNextIntlPlugin from "next-intl/plugin";
|
|
|
|
const withNextIntl = createNextIntlPlugin("./src/lib/i18n/request.ts");
|
|
|
|
const nextConfig: NextConfig = {
|
|
output: "standalone",
|
|
images: {
|
|
remotePatterns: [
|
|
{ protocol: "https", hostname: "biztaghavi.com" },
|
|
],
|
|
localPatterns: [{ pathname: "/uploads/**" }],
|
|
formats: ["image/avif", "image/webp"],
|
|
deviceSizes: [640, 750, 828, 1080, 1200, 1920],
|
|
minimumCacheTTL: 60 * 60 * 24 * 30,
|
|
},
|
|
experimental: {
|
|
optimizePackageImports: ["lucide-react", "framer-motion"],
|
|
},
|
|
compress: true,
|
|
poweredByHeader: false,
|
|
headers: async () => [
|
|
{
|
|
source: "/(.*)",
|
|
headers: [
|
|
{ key: "X-DNS-Prefetch-Control", value: "on" },
|
|
{ key: "X-Content-Type-Options", value: "nosniff" },
|
|
{ key: "X-Frame-Options", value: "SAMEORIGIN" },
|
|
{ key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },
|
|
],
|
|
},
|
|
{
|
|
source: "/_next/static/(.*)",
|
|
headers: [{ key: "Cache-Control", value: "public, max-age=31536000, immutable" }],
|
|
},
|
|
],
|
|
};
|
|
|
|
export default withNextIntl(nextConfig);
|