commit 0a022e9dfa1ad3b1c8e8497490e804d7e9147827 Author: Jeff Emmett Date: Sun Jun 29 22:27:24 2025 -0400 Initial commit: Full Circle Digital Marketing website new diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f650315 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules + +# next.js +/.next/ +/out/ + +# production +/build + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts \ No newline at end of file diff --git a/.gitignore:Zone.Identifier b/.gitignore:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..49dc34c --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,120 @@ +import { Header } from "@/components/header" +import { Footer } from "@/components/footer" +import { Button } from "@/components/ui/button" +import Image from "next/image" +import Link from "next/link" + +export default function AboutPage() { + return ( +
+
+ + {/* Hero Header Section with Palm Trees Background */} +
+
+
+
+ {/* About Us Title in Permanent Marker */} +

About Us

+ {/* Intro Text in Oswald */} +

+ We're here to amplify messages we believe in. If your product or service provides an unmistakable benefit to + your customers and the world around them, we want to see you succeed. Get to know us below, and get in + touch! +

+
+
+ + {/* Main Content */} +
+
+ {/* MEET THE TEAM SECTION */} +
+

Meet the Team

+ + {/* TWO-COLUMN TEAM LAYOUT */} +
+ {/* JEFF EMMETT - Left column */} +
+ {/* SQUARE PHOTO */} +
+ Jeff Emmett +
+ {/* NAME in Permanent Marker */} +

Jeff Emmett

+ {/* FOUNDER TITLE in italics */} +

Founder

+ {/* BIO TEXT */} +

+ With over 10 years of Social Media & Digital Marketing Strategy experience, Jeff is a self-professed + "idea guy", and knows how to implement them. Having planned & built out widely varying campaigns + across multiple platforms and industry verticals, he's learned the importance of trial and error in + making digital strategies succeed. +

+
+ + {/* MARCO BENINATO - Right column */} +
+ {/* SQUARE PHOTO */} +
+ Marco Beninato +
+ {/* NAME in Permanent Marker */} +

Marco Beninato

+ {/* LOGISTICS COORDINATOR TITLE in italics */} +

Logistics Coordinator

+ {/* BIO TEXT */} +

Lorem Ipsum

+
+
+
+
+
+ + {/* CTA Section - Ready to get noticed online? */} +
+
+
+
+

Ready to get noticed online?

+

+ Great! If you'd like to learn more about how we can help you get noticed online, click the button below to + schedule an initial consultation phone call. +

+ +
+
+ +
+
+ ) +} diff --git a/app/about/page.tsx:Zone.Identifier b/app/about/page.tsx:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/app/contact/actions.ts b/app/contact/actions.ts new file mode 100644 index 0000000..36128a1 --- /dev/null +++ b/app/contact/actions.ts @@ -0,0 +1,61 @@ +"use server" + +import { redirect } from "next/navigation" + +export async function sendContactEmail(formData: FormData) { + const name = formData.get("name") as string + const email = formData.get("email") as string + const phone = formData.get("phone") as string + const company = formData.get("company") as string + const message = formData.get("message") as string + + // Email configuration + const recipientEmail = "info@fullcircledigitalmarketing.ca" + + // Create email content + const emailSubject = `New Contact Form Submission from ${name}` + const emailBody = ` + New contact form submission from your website: + + Name: ${name} + Email: ${email} + Phone: ${phone || "Not provided"} + Company: ${company || "Not provided"} + + Message: + ${message} + + --- + This message was sent from the Full Circle Digital Marketing contact form. + ` + + try { + // In a real implementation, you would use a service like Resend, SendGrid, or similar + // For now, we'll simulate the email sending + console.log("Sending email to:", recipientEmail) + console.log("Subject:", emailSubject) + console.log("Body:", emailBody) + + // Simulate email sending delay + await new Promise((resolve) => setTimeout(resolve, 1000)) + + // In production, you would implement actual email sending here: + /* + await resend.emails.send({ + from: 'noreply@fullcircledigitalmarketing.ca', + to: recipientEmail, + subject: emailSubject, + text: emailBody, + replyTo: email, + }) + */ + + console.log("Email sent successfully!") + } catch (error) { + console.error("Failed to send email:", error) + throw new Error("Failed to send message. Please try again.") + } + + // Redirect to a thank you page or back to contact with success message + redirect("/contact?success=true") +} diff --git a/app/contact/actions.ts:Zone.Identifier b/app/contact/actions.ts:Zone.Identifier new file mode 100644 index 0000000..e69de29 diff --git a/app/contact/page.tsx b/app/contact/page.tsx new file mode 100644 index 0000000..7e75a5d --- /dev/null +++ b/app/contact/page.tsx @@ -0,0 +1,143 @@ +import { Header } from "@/components/header" +import { Footer } from "@/components/footer" +import { Button } from "@/components/ui/button" +import { Card, CardContent } from "@/components/ui/card" +import { sendContactEmail } from "./actions" +import { Suspense } from "react" + +function SuccessMessage({ searchParams }: { searchParams: { success?: string } }) { + if (searchParams.success === "true") { + return ( +
+
+
+
+ + + +
+
+

Message sent successfully!

+
+

Thank you for contacting us. We'll get back to you within 24 hours.

+
+
+
+
+
+ ) + } + return null +} + +export default function ContactPage({ searchParams }: { searchParams: { success?: string } }) { + return ( +
+
+ + {/* Hero Section */} +
+
+
+
+

+ Contact Us +

+
+
+ +
+
+ + + +
+ + +

Ready to get noticed online?

+

+ Great! If you'd like to learn more about how we can help you get noticed online, we'd love to schedule + an initial consultation phone call. +

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +