Compare commits

...

8 Commits

9 changed files with 121 additions and 66 deletions

109
README.md
View File

@@ -1,83 +1,88 @@
# Mycelium Cloud Website # Mycelium Cloud Website
- **Main Branch:** [https://project.mycelium.tf/](https://project.mycelium.tf/)
- **Dev Branch:** [https://www2.project.mycelium.tf/](https://www2.project.mycelium.tf/)
- **Repository:** [https://git.ourworld.tf/ourworld_web/www_project_mycelium/](https://git.ourworld.tf/ourworld_web/www_project_mycelium/)
---
## About
This is the official website for Mycelium Cloud, built using Next.js and Tailwind CSS. This is the official website for Mycelium Cloud, built using Next.js and Tailwind CSS.
## Getting Started ---
Follow these instructions to get a local copy up and running for development and testing purposes. ## Technologies
### Prerequisites - **Framework**: [Next.js](https://nextjs.org/)
- **Language**: [TypeScript](https://www.typescriptlang.org/)
- **Styling**: [Tailwind CSS](https://tailwindcss.com/)
Make sure you have Node.js and npm installed on your machine. You can download them from [nodejs.org](https://nodejs.org/). ---
### Installation ## File Structure
- **Pages**: To edit the content of a specific page, navigate to `src/app/(main)/`.
- **Components**: Reusable components are located in `src/components/`.
- **Images and Videos**: Add or modify images and videos in the `public/` directory. Images are in `public/images/` and videos are in `public/videos/`.
- **CSS**: Global styles can be found in `src/styles/tailwind.css`. Most styling is done using Tailwind CSS utility classes directly in the `.tsx` files.
---
## Branding
- **Font**: The primary font used is [Mulish](https://fonts.google.com/specimen/Mulish).
- **Logos**: Project logos are stored in `public/images/logos/`.
---
## Get Started
Follow these steps to get the project running locally:
1. **Install Dependencies**:
1. Clone the repository to your local machine.
2. Install the NPM packages:
```bash ```bash
npm install npm install
``` ```
### Running the Application 2. **Build the Project**:
To run the development server:
```bash
npm run dev
```
Open [http://localhost:3000](http://localhost:3000) in your browser to see the result.
## Git Workflow
We follow a branching model to ensure code quality and a stable production environment. All new work should be done on a feature branch.
1. **Switch to the `development` branch** and make sure it's up to date:
```bash ```bash
git checkout development npm run build
git pull origin development
``` ```
2. **Create a new feature branch** for your changes: 3. **Start the Development Server**:
```bash ```bash
git checkout -b your-feature-name npm run start
``` ```
3. **Make your changes and commit them**. ---
4. **Push your feature branch** to the remote repository: ## Contributing
```bash
git push origin your-feature-name
```
5. **Create a Pull Request** on GitHub from your feature branch to the `development` branch. - **Never update the `main` branch directly.** All changes must be reviewed and merged by the team through a pull request.
- **Always work on the `development` branch.** Create a feature branch from `development` and submit your pull request to `development`.
- **Request a review.** After submitting your pull request, ask the team to review and accept it into the `main` branch.
6. After the pull request is reviewed and merged, the changes will be on the `development` branch. To deploy to production, the `development` branch will be merged into `main`. ---
## Project Structure ## Report an Error
Here is an overview of the key directories in the project: To report an issue, please use the following link and provide the requested information:
- `src/app/(main)/page.tsx` - **Issue Tracker**: [https://git.ourworld.tf/tfgrid_internal/circle_tfgrid_ops/issues](https://git.ourworld.tf/tfgrid_internal/circle_tfgrid_ops/issues)
This is the main entry point for the homepage.
- `src/components/` When reporting an issue, please include:
This directory contains all the reusable React components used throughout the site. The main components rendered on the homepage (`src/app/(main)/page.tsx`) are:
- `HomeHero.tsx`
- `StackSection.tsx` (as `StackSectionPreview`)
- `BentoReviews.tsx`
- `WorldMap.tsx`
- `Steps.tsx`
- `Companies.tsx`
- `ClickableGallery.tsx`
- `CallToAction.tsx`
- `public/images/` - **URL**: The page where the error occurred.
All static images are stored here. You can find logos, gallery images, and other visual assets in this folder. - **Repo**: The repository you are working with.
- **Branch**: The specific branch you are on.
- **Problem**: A detailed description of the problem.
- `public/videos/` ---
This folder contains video assets used on the site.
## License ## Questions
This site template is a commercial product and is licensed under the [Tailwind Plus license](https://tailwindcss.com/plus/license). If you have any questions, you can reach out to [sashaastiadi](https://git.ourworld.tf/sashaastiadi).

View File

@@ -21,15 +21,12 @@ export default function Home() {
<section id="home-hero"> <section id="home-hero">
<HomeHero /> <HomeHero />
</section> </section>
<section id="technologies">
<StackSectionPreview />
</section>
<section id="bento-reviews">
<BentoReviews />
</section>
<section id="network"> <section id="network">
<WorldMap /> <WorldMap />
</section> </section>
<section id="technologies">
<StackSectionPreview />
</section>
<section id="deploy"> <section id="deploy">
<Steps /> <Steps />
</section> </section>
@@ -39,6 +36,9 @@ export default function Home() {
<section id="clickable-gallery"> <section id="clickable-gallery">
<ClickableGallery /> <ClickableGallery />
</section> </section>
<section id="bento-reviews">
<BentoReviews />
</section>
<section id="call-to-action"> <section id="call-to-action">
<CallToAction /> <CallToAction />
</section> </section>

View File

@@ -1,4 +1,5 @@
import { type Metadata } from 'next' import { type Metadata } from 'next'
import Script from 'next/script'
import { Mulish } from 'next/font/google' import { Mulish } from 'next/font/google'
import clsx from 'clsx' import clsx from 'clsx'
@@ -26,6 +27,19 @@ export default function RootLayout({
}) { }) {
return ( return (
<html lang="en" className={clsx('antialiased', mulish.variable)}> <html lang="en" className={clsx('antialiased', mulish.variable)}>
<head>
{/* MailerLite Universal */}
<Script id="mailerlite-universal" strategy="afterInteractive">
{`(function(m,a,i,l,e,r){ m['MailerLiteObject']=e;function f(){
var c={ a:arguments,q:[]};var r=this.push(c);return "number"!=typeof r?r:f.bind(c.q);}
f.q=f.q||[];m[e]=m[e]||f.bind(f.q);m[e].q=m[e].q||f.q;r=a.createElement(i);
var _=a.getElementsByTagName(i)[0];r.async=1;r.src=l+'?v'+(~~(new Date().getTime()/1000000));
_.parentNode.insertBefore(r,_);})(window, document, 'script', 'https://static.mailerlite.com/js/universal.js', 'ml');
var ml_account = ml('accounts', '1778010', 'x2d3d9f8n1', 'load');`}
</Script>
{/* End MailerLite Universal */}
</head>
<body className="bg-black text-white">{children}</body> <body className="bg-black text-white">{children}</body>
</html> </html>
) )

View File

@@ -92,7 +92,7 @@ export function BentoReviews() {
return ( return (
<div> <div>
<div className="relative isolate pt-24 pb-12 bg-black text-center w-full lg:px-0 px-4"> <div className="relative isolate py-24 bg-black text-center w-full lg:px-0 px-4">
<FadeIn transition={{ duration: 0.8, delay: 0.1 }}> <FadeIn transition={{ duration: 0.8, delay: 0.1 }}>
<div className="mx-auto max-w-5xl "> <div className="mx-auto max-w-5xl ">
<H2 className="text-center">Augmented Intelligence Fabric</H2> <H2 className="text-center">Augmented Intelligence Fabric</H2>

View File

@@ -1,3 +1,5 @@
"use client"
import { H2, P } from '@/components/Texts' import { H2, P } from '@/components/Texts'
export function CallTo() { export function CallTo() {
@@ -20,7 +22,15 @@ export function CallTo() {
> >
Book a Meeting Book a Meeting
</a> </a>
<a href="mailto:info@ourworld.tf" target="_blank" rel="noopener noreferrer" className="text-sm/6 font-semibold text-[#2F3178] hover:text-[#2F3178]/80"> <a
href="javascript:;"
onClick={() => {
if (typeof window !== 'undefined' && (window as any).ml_account) {
(window as any).ml_account('webforms', '6108375', 'l9m8g1', 'show')
}
}}
className="text-sm/6 font-semibold text-[#2F3178] hover:text-[#2F3178]/80"
>
Join the Waitlist <span aria-hidden="true"></span> Join the Waitlist <span aria-hidden="true"></span>
</a> </a>
</div> </div>

View File

@@ -1,3 +1,5 @@
'use client'
import { CircleBackground } from '@/components/CircleBackground' import { CircleBackground } from '@/components/CircleBackground'
import { Container } from '@/components/Container' import { Container } from '@/components/Container'
import { Button } from '@/components/Button' import { Button } from '@/components/Button'
@@ -42,7 +44,15 @@ export function CallToAction() {
> >
Book a Meeting Book a Meeting
</Button> </Button>
<Button href="mailto:info@ourworld.tf" target="_blank" rel="noopener noreferrer" variant="outline" color="white"> <Button
variant="outline"
color="white"
onClick={() => {
if (typeof window !== 'undefined' && (window as any).ml_account) {
(window as any).ml_account('webforms', '6108375', 'l9m8g1', 'show')
}
}}
>
Join the Waitlist Join the Waitlist
</Button> </Button>
</div> </div>

View File

@@ -40,7 +40,7 @@ const row2 = logos.slice(6);
export function Companies() { export function Companies() {
return ( return (
<div id="companies" className="relative bg-black flex flex-col items-center justify-center w-full overflow-hidden antialiased py-4 -top-20"> <div id="companies" className="relative bg-black flex flex-col items-center justify-center w-full overflow-hidden antialiased py-4 mb-12">
<div className="relative z-10 mx-auto w-full max-w-6xl p-4"> <div className="relative z-10 mx-auto w-full max-w-6xl p-4">
{/* Heading */} {/* Heading */}

View File

@@ -110,7 +110,15 @@ export function Header() {
<NavLinks className="block text-base/7 tracking-tight" /> <NavLinks className="block text-base/7 tracking-tight" />
</div> </div>
<div className="mt-8 flex flex-col gap-4"> <div className="mt-8 flex flex-col gap-4">
<Button href="mailto:info@ourworld.tf" variant="outline" color="white" target="_blank" rel="noopener noreferrer"> <Button
variant="outline"
color="white"
onClick={() => {
if (typeof window !== 'undefined' && (window as any).ml_account) {
(window as any).ml_account('webforms', '6108375', 'l9m8g1', 'show')
}
}}
>
Join the Waitlist Join the Waitlist
</Button> </Button>
<Button href="https://calendly.com/sachao/30min" color="cyan">Book a Meeting</Button> <Button href="https://calendly.com/sachao/30min" color="cyan">Book a Meeting</Button>
@@ -123,8 +131,16 @@ export function Header() {
)} )}
</Popover> </Popover>
<div className="flex items-center gap-6 max-lg:hidden"> <div className="flex items-center gap-6 max-lg:hidden">
<Button href="mailto:info@ourworld.tf" variant="outline" color="white" target="_blank" rel="noopener noreferrer"> <Button
Join the Waitlist variant="outline"
color="white"
onClick={() => {
if (typeof window !== 'undefined' && (window as any).ml_account) {
(window as any).ml_account('webforms', '6108375', 'l9m8g1', 'show')
}
}}
>
Join the Waitlist
</Button> </Button>
<Button href="https://calendly.com/sachao/30min" color="cyan">Book a Meeting</Button> <Button href="https://calendly.com/sachao/30min" color="cyan">Book a Meeting</Button>
</div> </div>

View File

@@ -30,7 +30,7 @@ export function Steps() {
const isInView = useInView(ref, { once: true }); const isInView = useInView(ref, { once: true });
return ( return (
<section id="benefits" ref={ref} className="relative pt-16 pb-4 px-4 lg:px-12 -top-20 text-white"> <section id="benefits" ref={ref} className="relative pt-12 pb-4 px-4 lg:px-12 text-white">
<div className="relative px-6 lg:px-12"> <div className="relative px-6 lg:px-12">
<motion.div <motion.div
initial={{ opacity: 0, y: 20 }} initial={{ opacity: 0, y: 20 }}