Skip to content

Commit

Permalink
Added stuff to services section and home page
Browse files Browse the repository at this point in the history
  • Loading branch information
ofluffydev committed Jul 30, 2024
1 parent 714bcc6 commit 66b0818
Show file tree
Hide file tree
Showing 17 changed files with 121 additions and 121 deletions.
37 changes: 29 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ finishing my existing projects and creating more courses.
- URL: `https://kadenfrisk.com/`
- Description: The home page of my website, where it all begins.
- Key Elements:
- TODO: Add key elements
- Showcases all my website, repositories, and courses.
- Has clean and simple animations.

### page name (Template for adding more pages)

Expand All @@ -45,21 +46,44 @@ finishing my existing projects and creating more courses.
- Element 2
- Add more key elements as needed

### Home

- URL: `/`
- Description: Main page for the website, where it all begins.
- Key Elements:
- Fancy hero section
- A little section about me
- Special use of the github API to show my repositories
- A section for my courses
- A section for people who need websites

### Contact

- URL: `/contact`
- Description: Page just for contacting me
- Key Elements:
- All my contact options
- An interactive contact form
- Uses the mailgun API to send emails

## Technologies Used

- Frontend: React.js, TypeScript
- Routing: React Router
- Styling: I refused to use bootstrap for this website, the only help I had is from SCSS.
- Styling: SCSS and Tailwind CSS with some custom CSS.
- Build Tool: Vite
- Linting: ESLint
- TODO: Add any other significant technologies, libraries, or tools used
- Icons: [Lucide](https://lucide.dev/), and [Simple Icons](https://simpleicons.org/)
- Hosting: Cloudflare Pages
- CI/CD: GitHub Actions
- UI Library: [shadcn/ui](https://ui.shadcn.com/)

## Getting Started

### Prerequisites

- Node.js (version X.X.X or higher)
- Yarn package manager
- npm package manager

### Installation

Expand Down Expand Up @@ -151,10 +175,7 @@ suggestions or improvements, feel free to open an issue or a pull request.
This project is licensed under the [LICENSE NAME] - see the [LICENSE.md](LICENSE.md) file for details.
## Contact
Kaden Frisk - [your email or contact information]
Project Link: [https://github.com/yourusername/your-repo-name](https://github.com/yourusername/your-repo-name)
All my contacts are on the website at https://kadenfrisk.com/contact
---
Expand Down
14 changes: 8 additions & 6 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,18 @@
<meta content="Custom Websites, Kaden Frisk, Websites, Kaden, Online Presence, Web Design, Programming Courses, Programming, Code, Learn to Code, Learn Programming, Learn Code, Free Code Courses"
name="keywords">
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<meta name="description" content="Web Developer, Course Creator, and Project Enthusiast. Explore free programming courses, web development projects, and professional services. Connect with my creations and learn programming, all in one place.">
<meta content="Web Developer, Course Creator, and Project Enthusiast. Explore free programming courses, web development projects, and professional services. Connect with my creations and learn programming, all in one place."
name="description">
<title>Kaden Frisk</title>
<link href="/favicon.ico" rel="icon" type="image/x-icon">

<!-- Open Graph Meta Tags -->
<meta property="og:title" content="Kaden Frisk">
<meta property="og:description" content="Web Developer, Course Creator, and Project Enthusiast. Explore free programming courses, web development projects, and professional services. Connect with my creations and learn programming, all in one place.">
<meta property="og:image" content="https://kadenfrisk.com/Logo.png">
<meta property="og:url" content="https://kadenfrisk.com/">
<meta property="og:type" content="website">
<meta content="Kaden Frisk" property="og:title">
<meta content="Web Developer, Course Creator, and Project Enthusiast. Explore free programming courses, web development projects, and professional services. Connect with my creations and learn programming, all in one place."
property="og:description">
<meta content="https://kadenfrisk.com/Logo.png" property="og:image">
<meta content="https://kadenfrisk.com/" property="og:url">
<meta content="website" property="og:type">
</head>
<body>
<div id="root"></div>
Expand Down
33 changes: 31 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"lucide-react": "^0.400.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-helmet": "^6.1.0",
"react-router": "^6.24.0",
"react-router-dom": "^6.24.0",
"tailwind-merge": "^2.3.0",
Expand Down
2 changes: 2 additions & 0 deletions postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// noinspection JSUnusedGlobalSymbols

export default {
plugins: {
tailwindcss: {},
Expand Down
9 changes: 4 additions & 5 deletions src/components/layout/Footer.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {useState} from 'react';
import {Link} from 'react-router-dom';
import '../../styles/footer.scss'
import {COMPANY_NAME, GITHUB} from "../../constants.tsx";
import {COMPANY_NAME, GITHUB, NAV_LINKS} from "../../constants.tsx";

const Footer = () => {
const [currentYear] = useState(new Date().getFullYear());
Expand All @@ -16,10 +16,9 @@ const Footer = () => {
<div>
<h4>Quick Links</h4>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
<li><Link to="/services">Services</Link></li>
<li><Link to="/contact">Contact</Link></li>
{NAV_LINKS.map((link, index) => (<li key={index}>
<Link to={link.path}>{link.label}</Link>
</li>))}
</ul>
</div>
<div>
Expand Down
7 changes: 3 additions & 4 deletions src/components/layout/router.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {createBrowserRouter} from "react-router-dom";
import App from "../../App";
import Home from "../../pages/Home";
import About from "../../pages/About";
import Services from "../../pages/Services";
import ErrorPage from "../../fluffy-pack/components/ErrorPage.tsx";
import Contact from "@/fluffy-pack/components/Contact.tsx";
Expand All @@ -10,9 +9,9 @@ const router = createBrowserRouter([{
element: <App/>, errorElement: <ErrorPage/>, children: [{
path: "/", element: <Home/>,
}, {
path: "/contact", element: <Contact email={'[email protected]'} x={'KadenFrisk'} discordUser={'ofluffy'} phone={'(806) 443-0175'} includeForm={true} github={'ofluffydev'}/>,
}, {
path: "/about", element: <About/>,
path: "/contact",
element: <Contact email={'[email protected]'} x={'KadenFrisk'} discordUser={'ofluffy'}
phone={'(806) 443-0175'} includeForm={true} github={'ofluffydev'}/>,
}, {
path: "/services", element: <Services/>,
},],
Expand Down
32 changes: 32 additions & 0 deletions src/components/services/WebsiteDesignAndDevelopment.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
function WebsiteDesignAndDevelopment() {
function goTo(s: string) {
return () => {
window.location.href = s;
}
}

return (<div className="bg-gradient-to-br from-red-500 to-purple-500 flex flex-col justify-center p-20 mt-10">
<h1 className="text-xl font-bold">Website Design and Development</h1>
<p className="text-sm">
Tired of your website being lost in the online void? We build unique affordable sites that stand out and
give your customers the experience they deserve. Our approach involves utilizing current frameworks and
technologies to ensure your site not only has individuality, but also provides a swift and ideal user
experience. By optimizing for speed and accessibility, we ensure fast loading times with easy navigation,
making your website convenient for every user.
</p>
<h2 className="text-xl font-bold mt-4">Our services include:</h2>
<ul className="text-sm list-inside list-disc flex flex-col">
<li>Custom website design and development</li>
<li>Responsive web design</li>
<li>Content management systems (CMS)</li>
<li>E-commerce websites</li>
<li>Search engine optimization (SEO)</li>
<li>Website maintenance and support</li>
</ul>
<p className="text-sm mt-4">Whether you need a simple brochure website or a complex e-commerce site, we can
help you achieve your online goals.</p>
<button className="bg-white text-black py-2 px-4 mt-4" onClick={goTo('/services/websites')}>Learn More</button>
</div>);
}

export default WebsiteDesignAndDevelopment;
1 change: 0 additions & 1 deletion src/constants.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ export const
NAV_LINKS = [
{path: '/', label: 'Home'},
{path: '/contact', label: 'Contact'},
{path: '/about', label: 'About'},
{path: '/services', label: 'Services'},
];
4 changes: 2 additions & 2 deletions src/fluffy-pack/components/Contact.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {FC, FormEvent, ReactNode, useState} from 'react';
import {ChangeEvent, FC, FormEvent, ReactNode, useState} from 'react';
import {Globe, Mail, MailWarning, Phone} from 'lucide-react';
import {Alert, AlertDescription, AlertTitle} from '@/components/ui/alert';
import {Button} from '@/components/ui/button';
Expand All @@ -24,7 +24,7 @@ const Contact: FC<ContactProps> = ({
});
const [formSubmitted, setFormSubmitted] = useState(false);

const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
const handleInputChange = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
const {name, value} = e.target;
setFormData(prevData => ({
...prevData, [name]: value
Expand Down
39 changes: 0 additions & 39 deletions src/fluffy-pack/components/FadeIn.tsx

This file was deleted.

3 changes: 2 additions & 1 deletion src/fluffy-pack/components/FeatureCard.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import {InView} from "react-intersection-observer";
import {ReactNode} from "react";

interface FeatureCardProps {
title: string;
description: string;
icon?: (props: { className?: string }) => React.ReactNode;
icon?: (props: { className?: string }) => ReactNode;
}

function FeatureCard({title, description, icon}: FeatureCardProps) {
Expand Down
4 changes: 2 additions & 2 deletions src/fluffy-pack/components/Hero.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {ReactElement} from "react";
import {InView} from "react-intersection-observer";
import {ChevronDown} from "lucide-react";
import {ArrowDown} from "lucide-react";

/**
* `Hero` component props definition.
Expand Down Expand Up @@ -39,7 +39,7 @@ const Hero = ({welcomeText, secondaryText}: HeroProps): ReactElement => {
{secondaryText}
</p>}
</InView>
<ChevronDown className={'animate-bounce flex justify-center items-center h-10 w-screen'}/>
<ArrowDown className={'animate-bounce flex justify-center items-center mt-10 w-screen'}/>
</div>
</div>;
};
Expand Down
41 changes: 0 additions & 41 deletions src/fluffy-pack/hooks/fluffy-hooks.tsx
Original file line number Diff line number Diff line change
@@ -1,41 +0,0 @@
import {RefObject, useEffect, useRef, useState} from 'react';

const useFadeInOnScroll = (threshold = 0.1, delay = 0): [RefObject<HTMLDivElement>, boolean] => {
const ref = useRef<HTMLDivElement>(null);
const [isVisible, setIsVisible] = useState(false);

useEffect(() => {
const currentRef = ref.current;
let timeoutId: NodeJS.Timeout;

const observer = new IntersectionObserver(([entry]) => {
// Clear any existing timeout
clearTimeout(timeoutId);

// Set isVisible to true after the delay, but only if the element is intersecting
if (entry.isIntersecting) {
timeoutId = setTimeout(() => {
setIsVisible(true);
}, delay);
} else {
// If the element is not intersecting, set isVisible to false immediately
setIsVisible(false);
}
}, {threshold});

if (currentRef) {
observer.observe(currentRef);
}

return () => {
if (currentRef) {
observer.unobserve(currentRef);
}
clearTimeout(timeoutId);
};
}, [threshold, delay]);

return [ref, isVisible];
};

export default useFadeInOnScroll;
Loading

0 comments on commit 66b0818

Please sign in to comment.