Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
62ddadb
Merge pull request #1 from ParagonAutonomous/dev
EnnJayWithAGreyHat Feb 23, 2025
deaa98e
Merge pull request #4 from ParagonAutonomous/keetra-dev
EnnJayWithAGreyHat Mar 18, 2025
e5e53ba
Merge pull request #5 from ParagonAutonomous/dev
EnnJayWithAGreyHat Mar 18, 2025
b8abccc
some small functionality changes iwth the "Get in Touch" element on t…
EnnJayWithAGreyHat Mar 18, 2025
1cfe740
fixed minor navbar issues
diyaS-15 Mar 28, 2025
e69b5d1
added static export for github pages
EnnJayWithAGreyHat Mar 31, 2025
3b9de42
moved to docs for deployment
EnnJayWithAGreyHat Mar 31, 2025
ade2a78
Create nextjs.yml
EnnJayWithAGreyHat Mar 31, 2025
911b990
fix for deployment
EnnJayWithAGreyHat Mar 31, 2025
184420a
fix
EnnJayWithAGreyHat Mar 31, 2025
b144744
fix
EnnJayWithAGreyHat Mar 31, 2025
bd4e7ba
Create nextjs.yml
EnnJayWithAGreyHat Mar 31, 2025
a82755c
organization for deployment
EnnJayWithAGreyHat Mar 31, 2025
9f6ec3a
Create nextjs.yml
EnnJayWithAGreyHat Mar 31, 2025
bd799ae
fixed image resolution API break
EnnJayWithAGreyHat Mar 31, 2025
90dbf44
Merge branch 'main' of https://github.com/ParagonAutonomous/website
EnnJayWithAGreyHat Mar 31, 2025
ab2e7e7
Merge pull request #8 from ParagonAutonomous/main
EnnJayWithAGreyHat Mar 31, 2025
ff9f2b7
small image fix that should allow Keetra's images to be rendered prop…
EnnJayWithAGreyHat Mar 31, 2025
1444c64
Merge pull request #9 from ParagonAutonomous/dev
EnnJayWithAGreyHat Mar 31, 2025
3d7203f
I hope this fixes the images for real
EnnJayWithAGreyHat Apr 1, 2025
9022e87
github pages doesn't support optimized imaging
EnnJayWithAGreyHat Apr 1, 2025
16f2647
unfortunate uncompatables
EnnJayWithAGreyHat Apr 1, 2025
25766cd
export fix
EnnJayWithAGreyHat Apr 1, 2025
64e8857
fix of images through path handling
EnnJayWithAGreyHat Apr 1, 2025
ffcd6ed
wave image fixes
EnnJayWithAGreyHat Apr 1, 2025
4790f15
added website to readme for non editors (temp)
EnnJayWithAGreyHat Apr 2, 2025
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
93 changes: 93 additions & 0 deletions .github/workflows/nextjs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Sample workflow for building and deploying a Next.js site to GitHub Pages
#
# To get started with Next.js see: https://nextjs.org/docs/getting-started
#
name: Deploy Next.js site to Pages

on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: ${{ steps.detect-package-manager.outputs.manager }}
- name: Setup Pages
uses: actions/configure-pages@v5
with:
# Automatically inject basePath in your Next.js configuration file and disable
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
#
# You may remove this line if you want to manage the configuration yourself.
static_site_generator: next
- name: Restore cache
uses: actions/cache@v4
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./out

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
File renamed without changes.
41 changes: 39 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,39 @@
# website
New website using Next.JS
Hosted at: https://paragonautonomous.github.io/website/


This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
26 changes: 13 additions & 13 deletions website/app/components/AboutUs.tsx → app/components/AboutUs.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import Image from 'next/image';
import hardware from '../../public/images/aboutusimg.jpeg'
import ContactUs from './ContactUs';
// import Image from 'next/image';

export default function AboutUs() {
return (
<div id="full-container" className="bg-white select-none font-inter text-black border-2 border-red-500">
<div id="full-container" className="bg-white select-none font-inter text-black p-2">
<h1 className="text-center text-7xl pb-20 pt-10 font-black">About Paragon</h1>

<div className="flex items-start">
<div className="border-2 border-green-500 ml-[10%] w-[50%] p-2 relative" id="info">
<div className="ml-[10%] w-[50%] p-2 relative" id="info">
<p className="text-3xl">
At <span className="text-[#FF4800] font-bold">Paragon Autonomous</span>, we empower communities with cutting-edge drone technology designed to detect and suppress wildfires before they escalate. Our mission is to aid first responders by protecting lives, homes, and wildlife.
</p>
Expand All @@ -21,15 +19,17 @@ export default function AboutUs() {
<button className="bg-white text-gray-500 rounded-md px-6 py-2 mt-2 font-inter text-3xl font-black border-4 border-[#80B918] transition-colors duration-300 hover:bg-[#80B918] hover:text-black hover:border-transparent">Get in Touch</button>
</div>
</div>

<Image
src={hardware}
className="ml-16 w-[25%] h-auto rounded-3xl drop-shadow-[10px_10px_8px_#6ea0a1]"
alt="Nada"
/>
<div className="ml-16 relative w-[20%]">
<img
src="images/aboutusimg.jpeg"
alt="Nada"
className="object-cover rounded-3xl drop-shadow-[10px_10px_8px_#6ea0a1]"
/>
</div>

</div>

<div id="flight-path" className="flex flex-wrap justify-center select-none border-2 border-purple-500 mt-4 text-center p-6">
<div id="flight-path" className="flex flex-wrap justify-center select-none mt-4 text-center p-6">
<h1 className="text-6xl p-6 w-full font-black">OUR FLIGHT PATH</h1>

<div className="group rounded-3xl w-[50%] min-w-[300px] p-6 bg-[#D9D9D9] transition-all duration-300 hover:bg-gray-800 m-4 drop-shadow-[0_10px_15px_rgba(0,0,0,0.7)] hover:drop-shadow-[0_15px_20px_rgba(0,0,0,0.9)]">
Expand Down Expand Up @@ -60,7 +60,7 @@ export default function AboutUs() {
</div>

<div className="group rounded-3xl w-[45%] min-w-[300px] p-6 bg-[#D9D9D9] transition-colors duration-300 hover:bg-gray-800 m-4 drop-shadow-[0_10px_15px_rgba(0,0,0,0.7)] hover:drop-shadow-[0_15px_20px_rgba(0,0,0,0.9)]">
<h1 className="text-[#FF4800] text-5xl"><b>What's Next?</b></h1>
<h1 className="text-[#FF4800] text-5xl"><b>What&aposs Next?</b></h1>
<br />
<p className="text-2xl transition-colors duration-300 group-hover:text-white">
We are expanding partnerships with fire departments, environmental agencies, and emergency teams to scale autonomous wildfire prevention. With continued innovation, we aim to make AI-driven fire detection and suppression the industry standard, protecting more communities and ecosystems.</p>
Expand Down
126 changes: 126 additions & 0 deletions app/components/ContactUs.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
'use client';
import { useState, useEffect, ChangeEvent, FormEvent } from 'react';
// import emailjs from 'emailjs-com';

type FormData = {
name: string;
email: string;
message: string;
category: string;
};

type ContactUsProps = {
onClose: () => void;
widthClass?: string;
};

export default function ContactUs({ onClose, widthClass = 'max-w-2xl' }: ContactUsProps) {
const [formData, setFormData] = useState<FormData>({
name: '',
email: '',
message: '',
category: 'Website Error',
});
const [isVisible, setIsVisible] = useState<boolean>(false);

useEffect(() => {
// Trigger fade-in transition on mount
setIsVisible(true);
}, []);

const handleChange = (
e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>
) => {
setFormData({ ...formData, [e.target.name]: e.target.value });
};

const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {
e.preventDefault();
// try {
// await emailjs.send(
// 'your_service_id',
// 'your_template_id',
// {
// name: formData.name,
// to_email: 'example@paragonautonomous.com',
// from_email: formData.email,
// message: formData.message,
// category: formData.category,
// },
// 'your_public_key'
// );
// alert('Message sent successfully!');
// setFormData({ name: '', email: '', message: '', category: 'Website Error' });
// } catch (error) {
// console.error('Error sending email:', error);
// alert('Failed to send message.');
// }
};

return (
<div
className={`relative bg-[#FF8C00] p-6 rounded-2xl w-full ${widthClass} mx-auto mt-10 transition-opacity duration-500 ${
isVisible ? 'opacity-100' : 'opacity-0'
}`}
>
{/* Close button in top right corner */}
<button
onClick={onClose}
className="absolute top-2 right-2 text-white text-2xl font-bold"
>
&times;
</button>
<h2 className="text-white text-xl font-bold mb-4 text-center">Contact Us</h2>
<form onSubmit={handleSubmit} className="flex flex-col space-y-4">
<div className="flex gap-4">
<input
type="text"
name="name"
placeholder="Your Name"
value={formData.name}
onChange={handleChange}
className="p-2 rounded border border-white bg-white text-black w-1/2"
required
/>
<input
type="email"
name="email"
placeholder="Your Email"
value={formData.email}
onChange={handleChange}
className="p-2 rounded border border-white bg-white text-black w-1/2"
required
/>
</div>
<textarea
name="message"
placeholder="Your Message"
value={formData.message}
onChange={handleChange}
className="p-2 rounded border border-white bg-white text-black h-24"
required
/>
<select
name="category"
value={formData.category}
onChange={handleChange}
className="p-2 rounded border border-white bg-white text-black"
>
{["Website Error", "Application Error", "Drone Error", "Business Interest", "Other"].map(
(option) => (
<option key={option} value={option}>
{option}
</option>
)
)}
</select>
<button
type="submit"
className="bg-white text-[#FF8C00] font-bold py-2 px-4 rounded hover:bg-gray-200"
>
Send Message
</button>
</form>
</div>
);
}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export default function FlightPath() {
</div>
<div className="grid grid-cols-2 gap-4 m-2">
<div className="bg-[#C0C0C0] rounded-3xl p-3">
<h3 className="font-bold text-lg text-[#FF4800]">What's next?</h3>
<h3 className="font-bold text-lg text-[#FF4800]">What&aposs next?</h3>
<p>We are expanding partnerships with fire departments, environmental agencies, and emergency teams to scale autonomous wildfire prevention. With continued innovation, we aim to make AI-driven fire detection and suppression the industry standard, protecting more communities and ecosystems</p>
</div>
<div className="bg-[#C0C0C0] rounded-3xl p-3">
Expand Down
File renamed without changes.
43 changes: 43 additions & 0 deletions app/components/Homepage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// import Image from 'next/image';
export default function Homepage() {
return (
<main>
{/* First Section - Full Screen Background */}
<section
id="home"
className="relative h-screen flex items-center justify-center text-white"
>
<img
src='./images/front-image.jpeg'
alt="Front image"
className="absolute inset-0 object-cover"
/>
<div className="absolute inset-0 bg-black/50 mix-blend-overlay" />
<h1 className="relative z-10 text-4xl font-bold text-center">
A Safer World, Powered By Paragon
</h1>
</section>

{/* Second Section - Scroll Down with Image on the Left */}
<section className="h-screen flex items-center px-10">
<div className="w-1/2 flex justify-center">
<div className="relative h-48 w-48 md:h-96 md:w-96">
<img
src="images/front-page-fire.png"
alt="Front page fire"
className="rounded drop-shadow-[0_0_20px_rgba(191,110,0,0.4)] object-cover"
/>
</div>
</div>
<div className="w-1/2">
<h2 className="text-3xl font-semibold text-center">
Wildfires in the U.S. destroyed over 8 MILLION acres of land in 2024, costing billions in damages
</h2>
<p className="mt-4 text-lg text-white text-center">
We leverage cutting-edge drone technology to prevent wildfires before they start.
</p>
</div>
</section>
</main>
);
}
Loading