Compare commits

...

10 Commits

10 changed files with 44 additions and 6 deletions

View File

@@ -1,6 +1,5 @@
FROM node:22-alpine AS builder
WORKDIR /app
# Install ALL deps (including devDeps like tailwindcss, typescript)
ENV NODE_ENV=development
COPY package*.json ./
RUN npm ci
@@ -12,9 +11,11 @@ FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
ENV PORT=3000
CMD ["node", "server.js"]
CMD ["node_modules/.bin/next", "start"]

View File

@@ -1,4 +1,7 @@
"use client";
export const dynamic = "force-dynamic";
import { useState } from "react";
import { useQuery } from "@tanstack/react-query";

View File

@@ -1,4 +1,7 @@
"use client";
export const dynamic = "force-dynamic";
import { useQuery, useMutation } from "@tanstack/react-query";
import { useRouter } from "next/navigation";

View File

@@ -1,4 +1,5 @@
'use client';
export const dynamic = 'force-dynamic';
import { useEffect, useState } from 'react';
import { useRouter } from 'next/navigation';

View File

@@ -1,4 +1,7 @@
"use client";
export const dynamic = "force-dynamic";
import { useState } from "react";
import { useQuery } from "@tanstack/react-query";

View File

@@ -6,6 +6,8 @@ import Providers from '@/components/providers';
// Fonts are loaded via CSS @import in globals.css (runtime CDN load).
// CSS vars are set directly in globals.css :root — no JS injection needed.
export const dynamic = 'force-dynamic';
export const metadata: Metadata = {
title: 'FiberOps Admin',
description: 'ISP Management Platform',

View File

@@ -1,6 +1,5 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'standalone',
eslint: { ignoreDuringBuilds: true },
typescript: { ignoreBuildErrors: true },
};

12
pages/_document.tsx Normal file
View File

@@ -0,0 +1,12 @@
import { Html, Head, Main, NextScript } from 'next/document';
export default function Document() {
return (
<Html lang="en">
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}

14
pages/_error.tsx Normal file
View File

@@ -0,0 +1,14 @@
// Custom error page — prevents Html import issue in Next.js pages router
export default function Error({ statusCode }: { statusCode?: number }) {
return (
<div style={{ padding: '2rem', fontFamily: 'sans-serif' }}>
<h1>{statusCode || 'Error'}</h1>
<p>{statusCode === 404 ? 'Page not found' : 'An error occurred'}</p>
</div>
);
}
Error.getInitialProps = ({ res, err }: any) => {
const statusCode = res ? res.statusCode : err ? err.statusCode : 404;
return { statusCode };
};

0
public/.gitkeep Normal file
View File