Welcome to GreenSpace, a clean, minimalist, and high-performance web template built with Next.js. This project features a soothing Sage & Mint Green aesthetic, designed for clarity and a calm user experience.
- Soothing Aesthetics: A consistent light-green theme using custom CSS Modules.
- SEO Optimized: Leveraging Next.js App Router metadata and image optimization.
- Integrated AI Assistant: A persistent floating AI assistant powered by Google Gemini, providing real-time support.
- Firebase Authentication: Secure user sign-in via Google OAuth for a personalized experience.
- Cloud Persistence: Real-time chat history saving using Firebase Firestore, ensuring data persists across sessions.
- CI/CD Pipeline: Engineered GitHub Actions pipeline for automated Linting, dependency auditing, and production-ready builds.
- Secure Architecture:
-
SAST: Automated code vulnerability and secret scanning using Snyk.
-
DAST: Runtime security auditing with OWASP ZAP to mitigate XSS and injection risks.
-
Access Control: Strict Firestore Security Rules and Environment Variable isolation to safeguard user data.
- Language: JavaScript / React
- Images: Unsplash via
next/image - Frontend: Next.js (App Router), React, CSS Modules
- AI Engine: Google Gemini AI API
- Backend & Security: Firebase (Auth & Firestore), Snyk, OWASP ZAP
- Deployment: Vercel (CI/CD)
Follow these steps to get the project running locally:
git clone [https://github.com/chuankuzideyun/nextjs_web_page.git](https://github.com/chuankuzideyun/nextjs_web_page.git)
cd nextjs_web_pagenpm installnpm run dev├── app/
│ ├── about/ # About Us page
│ ├── contact/ # Contact form page
│ ├── faq/ # FAQ with Accordion
│ ├── layout.js # Root layout (Navigation + Children)
│ ├── page.js # Home Hero page
│ └── globals.css # Global resets
├── components/ # Reusable UI components (FAQItem, etc.)
└── public/ # Static assets (SVGs, logos)NEXT_PUBLIC_GEMINI_API_KEY=your_gemini_key
# Firebase Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
# ... (and other Firebase fields)RESEND_API_KEY=your_resend_key
SNYK_TOKEN=your_snyk_key