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
48 changes: 48 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
FROM node:20-alpine AS base

# 1. Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat

WORKDIR /app

# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN \
if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i; \
else echo "Lockfile not found." && exit 1; \
fi

# 2. Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
COPY next.config.mjs next.config.mjs
COPY .env.development .env
RUN export NODE_OPTIONS=--max_old_space_size=3072 && yarn build

# 3. Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app

ENV NODE_ENV=development

COPY --from=builder /app/public ./public

# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
EXPOSE 3005

ENV PORT 3005
# set hostname to localhost
ENV HOSTNAME "0.0.0.0"

# server.js is created by next build from the standalone output
# https://nextjs.org/docs/pages/api-reference/next-config-js/output
CMD ["node", "server.js"]
42 changes: 0 additions & 42 deletions app/api/resend/route.ts

This file was deleted.

18 changes: 17 additions & 1 deletion app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,22 @@
@apply border-border;
}
body {
@apply bg-background text-foreground;
@apply bg-background text-foreground bg-no-repeat bg-cover;
background-image: url("/laptop.jpg");
}
}

@layer utilities {
.neon {
color: #fff;
text-shadow:
0 0 7px #fff,
0 0 10px #fff,
0 0 21px #fff,
0 0 42px #0051ff,
0 0 82px #0051ff,
0 0 92px #0051ff,
0 0 102px #0051ff,
0 0 151px #0051ff;
}
}
12 changes: 5 additions & 7 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import type { Metadata } from "next";
import { Inter } from "next/font/google";
import { Inter, Montserrat } from "next/font/google";
import "./globals.css";
import { Toaster } from "react-hot-toast";

const inter = Inter({ subsets: ["latin"] });
const montserrat = Montserrat({subsets: ["latin"]});

const siteName = process.env.NEXT_PUBLIC_SITE_NAME ?? "Quick Waitlist";
const siteDescription =
process.env.NEXT_PUBLIC_SITE_DESCRIPTION ??
"Quick Waitlist and coming soon page for your SAAS and website.";
const siteName = "Quick Waitlist";
const siteDescription = "Quick Waitlist and coming soon page for your SAAS and website.";

export const metadata: Metadata = {
title: siteName,
Expand All @@ -22,7 +20,7 @@ export default function RootLayout({
}>) {
return (
<html lang="en">
<body className={`${inter.className} bg-gradient-to-b from-[#fff6df] to-[#FEFBF0]`}>
<body className={`${montserrat.className}`}>
<main className="flex justify-center items-center min-h-screen">{children}</main>
<Toaster />
</body>
Expand Down
72 changes: 25 additions & 47 deletions app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,56 +1,34 @@
import Card from "@/components/Card";
import CardHeader from "@/components/Offer";
import EmailForm from "@/components/EmailForm";
import {Tag} from "lucide-react";

export default function Home() {
const siteLogo =
process.env.NEXT_PUBLIC_LOGO ||
"https://res.cloudinary.com/dyv1yduua/image/upload/v1733392810/speaker_oiuezn.svg";
// Data from env
const features =
process.env.NEXT_PUBLIC_FEATURES ||
"Sectoral templates, Sectoral templates, Sectoral templates";
const price = process.env.NEXT_PUBLIC_CURRENT_PRICE || "";
const discountPrice = process.env.NEXT_PUBLIC_DISCOUNT_PRICE || "";
const date = process.env.NEXT_PUBLIC_LAUNCH_DATE || "2026-01-01";
const title =
process.env.NEXT_PUBLIC_TITLE ||
"Join the waitlist for the SAAS code library.";
const description =
process.env.NEXT_PUBLIC_OFFER_TITLE || "Add offer title from env";

console.log(price);
export default function Home() {
return (
<div>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src={siteLogo}
alt="logo"
className="w-auto h-25 mx-auto object-contain mb-5"
/>
<Card>
<div className="grid md:grid-cols-2 md:divide-x divide-[#F0E4D2]">
<div className="md:order-1 order-2">
<CardHeader
title={description}
features={features}
price={price}
discount={discountPrice}
/>
</div>
<div className="md:order-2 order-1">
<EmailForm date={date} title={title} />
</div>
</div>
<div className="flex flex-col items-center">
<div className="flex items-center gap-2 bg-gray-200 text-black px-4 py-2 rounded-full">
<Tag
size={20}
strokeWidth={2}
aria-hidden="true"
/>
<p className="text-md">New Feature</p>
</div>

<div>
<h1
className="relative top-0 w-fit h-auto py-4 justify-center flex bg-gradient-to-r items-center from-white via-blue-200 to-blue-500 bg-clip-text text-6xl font-extrabold text-transparent text-center select-auto">
Coming Soon
</h1>
</div>

{/* <CardFooter /> */}
<div
className="flex flex-col items-center gap-5 bg-gray-100 rounded-md bg-clip-padding backdrop-filter backdrop-blur-xl bg-opacity-60 px-10 py-10">
<h1 className="text-white text-center text-4xl">Join Our Waitlist</h1>
<p className="text-white text-center">Signup to be the first to know when we launch. <br/>We will let you know
once we are ready to go on production.</p>
<EmailForm/>
</div>

{/* element */}
<span className="w-2 h-2 absolute z-10 -top-[1%] -left-[0.5%] block bg-white border border-[#F0E4D2]"></span>
<span className="w-2 h-2 absolute z-10 -bottom-[1%] -left-[0.5%] block bg-white border border-[#F0E4D2]"></span>
<span className="w-2 h-2 absolute z-10 -top-[1%] -right-[0.5%] block bg-white border border-[#F0E4D2]"></span>
<span className="w-2 h-2 absolute z-10 -bottom-[1%] -right-[0.5%] block bg-white border border-[#F0E4D2]"></span>
</Card>
</div>
);
}
51 changes: 0 additions & 51 deletions app/privacy-policy/page.tsx

This file was deleted.

57 changes: 0 additions & 57 deletions app/unsubscribe/page.tsx

This file was deleted.

17 changes: 0 additions & 17 deletions components/Card.tsx

This file was deleted.

Loading