├── .eslintrc.cjs
├── .gitignore
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
└── vite.svg
├── src
├── App.jsx
├── assets
│ ├── banner.png
│ ├── bg.png
│ ├── blob.svg
│ ├── education.png
│ └── hero.png
├── components
│ ├── Banner
│ │ ├── Banner.jsx
│ │ └── Banner2.jsx
│ ├── Footer
│ │ └── Footer.jsx
│ ├── Hero
│ │ └── Hero.jsx
│ ├── Navbar
│ │ └── Navbar.jsx
│ ├── Services
│ │ └── Services.jsx
│ └── Subscribe
│ │ └── Subscribe.jsx
├── index.css
└── main.jsx
├── tailwind.config.js
└── vite.config.js
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | 'eslint:recommended',
6 | 'plugin:react/recommended',
7 | 'plugin:react/jsx-runtime',
8 | 'plugin:react-hooks/recommended',
9 | ],
10 | ignorePatterns: ['dist', '.eslintrc.cjs'],
11 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
12 | settings: { react: { version: '18.2' } },
13 | plugins: ['react-refresh'],
14 | rules: {
15 | 'react/jsx-no-target-blank': 'off',
16 | 'react-refresh/only-export-components': [
17 | 'warn',
18 | { allowConstantExport: true },
19 | ],
20 | },
21 | }
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # React + Vite
2 |
3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4 |
5 | Currently, two official plugins are available:
6 |
7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | The Coding Journey
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-project",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "framer-motion": "^11.3.19",
14 | "react": "^18.3.1",
15 | "react-dom": "^18.3.1",
16 | "react-icons": "^5.2.1"
17 | },
18 | "devDependencies": {
19 | "@types/react": "^18.3.3",
20 | "@types/react-dom": "^18.3.0",
21 | "@vitejs/plugin-react": "^4.3.1",
22 | "autoprefixer": "^10.4.19",
23 | "eslint": "^8.57.0",
24 | "eslint-plugin-react": "^7.34.3",
25 | "eslint-plugin-react-hooks": "^4.6.2",
26 | "eslint-plugin-react-refresh": "^0.4.7",
27 | "postcss": "^8.4.40",
28 | "tailwindcss": "^3.4.7",
29 | "vite": "^5.3.4"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Hero from "./components/Hero/Hero";
3 | import Services from "./components/Services/Services";
4 | import Banner from "./components/Banner/Banner";
5 | import Subscribe from "./components/Subscribe/Subscribe";
6 | import Banner2 from "./components/Banner/Banner2";
7 | import Footer from "./components/Footer/Footer";
8 |
9 | const App = () => {
10 | return (
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | );
20 | };
21 |
22 | export default App;
23 |
--------------------------------------------------------------------------------
/src/assets/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilshad-ahmed/thecodingjourney/2dd9320a44f12789c47a2d75bbdfb4caa6da0c2e/src/assets/banner.png
--------------------------------------------------------------------------------
/src/assets/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilshad-ahmed/thecodingjourney/2dd9320a44f12789c47a2d75bbdfb4caa6da0c2e/src/assets/bg.png
--------------------------------------------------------------------------------
/src/assets/blob.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/assets/education.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilshad-ahmed/thecodingjourney/2dd9320a44f12789c47a2d75bbdfb4caa6da0c2e/src/assets/education.png
--------------------------------------------------------------------------------
/src/assets/hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dilshad-ahmed/thecodingjourney/2dd9320a44f12789c47a2d75bbdfb4caa6da0c2e/src/assets/hero.png
--------------------------------------------------------------------------------
/src/components/Banner/Banner.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import BannerPng from "../../assets/education.png";
3 | import { GrUserExpert } from "react-icons/gr";
4 | import { MdOutlineAccessTime } from "react-icons/md";
5 | import { FaBookReader } from "react-icons/fa";
6 | import { FadeUp } from "../Hero/Hero";
7 | import { motion } from "framer-motion";
8 |
9 | const Banner = () => {
10 | return (
11 |
12 |
13 | {/* Banner Image */}
14 |
15 |
24 |
25 | {/* Banner Text */}
26 |
27 |
28 |
35 | The World's Leading Online learning Platform
36 |
37 |
38 |
45 |
46 | 10,000+ Courses
47 |
48 |
55 |
56 | Expert Instruction
57 |
58 |
65 |
66 | Lifetime Access
67 |
68 |
69 |
70 |
71 |
72 |
73 | );
74 | };
75 |
76 | export default Banner;
77 |
--------------------------------------------------------------------------------
/src/components/Banner/Banner2.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import BannerPng from "../../assets/banner.png";
3 | import { motion } from "framer-motion";
4 |
5 | const Banner2 = () => {
6 | return (
7 |
8 |
9 | {/* Banner Text */}
10 |
15 |
16 |
17 | Join Our Community to Start your Journey
18 |
19 |
20 | Lorem ipsum dolor sit amet consectetur adipisicing elit.
21 | Recusandae iusto minima ad ut id eos accusantium aut, aperiam quis
22 | incidunt!
23 |
24 |
28 | Join Now
29 |
30 |
31 |
32 | {/* Banner Image */}
33 |
34 |
41 |
42 |
43 |
44 | );
45 | };
46 |
47 | export default Banner2;
48 |
--------------------------------------------------------------------------------
/src/components/Footer/Footer.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FaInstagram, FaWhatsapp, FaYoutube } from "react-icons/fa";
3 | import { TbWorldWww } from "react-icons/tb";
4 | import { motion } from "framer-motion";
5 |
6 | const Footer = () => {
7 | return (
8 |
9 |
14 |
15 | {/* first section */}
16 |
17 |
The Coding Journey
18 |
19 | TCJ is a platform dedicated to empowering aspiring developers.
20 | From beginner tutorials to advanced programming concepts, we
21 | provide a comprehensive learning experience designed to help you
22 | master coding skills, build projects, and launch your tech career.
23 |
24 |
25 | {/* second section */}
26 |
27 |
28 |
Courses
29 |
30 |
31 |
32 | Web Development
33 |
34 |
35 | Software Development
36 |
37 |
38 | Apps Development
39 |
40 |
41 | E-learning
42 |
43 |
44 |
45 |
46 |
47 |
Links
48 |
49 |
50 |
51 | Home
52 |
53 |
54 | Services
55 |
56 |
57 | About
58 |
59 |
60 | Contact
61 |
62 |
63 |
64 |
65 |
66 | {/* third section */}
67 |
68 |
Get In Touch
69 |
70 |
75 |
76 | Go
77 |
78 |
79 | {/* social icons */}
80 |
94 |
95 |
96 |
97 |
98 | );
99 | };
100 |
101 | export default Footer;
102 |
--------------------------------------------------------------------------------
/src/components/Hero/Hero.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Navbar from "../Navbar/Navbar";
3 | import { IoIosArrowRoundForward } from "react-icons/io";
4 | import Blob from "../../assets/blob.svg";
5 | import HeroPng from "../../assets/hero.png";
6 | import { animate, motion } from "framer-motion";
7 |
8 | export const FadeUp = (delay) => {
9 | return {
10 | initial: {
11 | opacity: 0,
12 | y: 50,
13 | },
14 | animate: {
15 | opacity: 1,
16 | y: 0,
17 | transition: {
18 | type: "spring",
19 | stiffness: 100,
20 | duration: 0.5,
21 | delay: delay,
22 | ease: "easeInOut",
23 | },
24 | },
25 | };
26 | };
27 |
28 | const Hero = () => {
29 | return (
30 |
31 |
32 |
33 | {/* Brand Info */}
34 |
35 |
36 |
42 | Let's Learn to build a{" "}
43 | Website for your business
44 |
45 |
51 |
52 | Get Started
53 |
54 |
55 |
56 |
57 |
58 | {/* Hero Image */}
59 |
60 |
68 |
76 |
77 |
78 |
79 | );
80 | };
81 |
82 | export default Hero;
83 |
--------------------------------------------------------------------------------
/src/components/Navbar/Navbar.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { IoMdMenu } from "react-icons/io";
3 | import { motion } from "framer-motion";
4 |
5 | const NavbarMenu = [
6 | {
7 | id: 1,
8 | title: "Home",
9 | path: "/",
10 | },
11 | {
12 | id: 2,
13 | title: "Services",
14 | link: "#",
15 | },
16 | {
17 | id: 3,
18 | title: "About Us",
19 | link: "#",
20 | },
21 | {
22 | id: 4,
23 | title: "Our Team",
24 | link: "#",
25 | },
26 | {
27 | id: 5,
28 | title: "Contact Us",
29 | link: "#",
30 | },
31 | ];
32 | const Navbar = () => {
33 | return (
34 |
35 |
40 | {/* Logo section */}
41 |
42 |
The Coding Journey
43 |
44 | {/* Menu section */}
45 |
61 | {/* Mobile Hamburger menu section */}
62 |
63 |
64 |
65 |
66 |
67 | );
68 | };
69 |
70 | export default Navbar;
71 |
--------------------------------------------------------------------------------
/src/components/Services/Services.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { RiComputerLine } from "react-icons/ri";
3 | import { CiMobile3 } from "react-icons/ci";
4 | import { TbWorldWww } from "react-icons/tb";
5 | import { IoMdHappy } from "react-icons/io";
6 | import { BiSupport } from "react-icons/bi";
7 | import { IoPulseOutline } from "react-icons/io5";
8 | import { motion } from "framer-motion";
9 |
10 | const ServicesData = [
11 | {
12 | id: 1,
13 | title: "Web Development",
14 | link: "#",
15 | icon: ,
16 | delay: 0.2,
17 | },
18 | {
19 | id: 2,
20 | title: "Mobile development",
21 | link: "#",
22 | icon: ,
23 | delay: 0.3,
24 | },
25 | {
26 | id: 3,
27 | title: "Software development",
28 | link: "#",
29 | icon: ,
30 | delay: 0.4,
31 | },
32 | {
33 | id: 4,
34 | title: "Satisfied clients",
35 | link: "#",
36 | icon: ,
37 | delay: 0.5,
38 | },
39 | {
40 | id: 5,
41 | title: "SEO optimization",
42 | link: "#",
43 | icon: ,
44 | delay: 0.6,
45 | },
46 | {
47 | id: 6,
48 | title: "24/7 support",
49 | link: "#",
50 | icon: ,
51 | delay: 0.7,
52 | },
53 | ];
54 |
55 | const SlideLeft = (delay) => {
56 | return {
57 | initial: {
58 | opacity: 0,
59 | x: 50,
60 | },
61 | animate: {
62 | opacity: 1,
63 | x: 0,
64 | transition: {
65 | duration: 0.3,
66 | delay: delay,
67 | ease: "easeInOut",
68 | },
69 | },
70 | };
71 | };
72 | const Services = () => {
73 | return (
74 |
75 |
76 |
77 | Services we provide
78 |
79 |
80 | {ServicesData.map((service) => (
81 |
88 | {service.icon}
89 |
90 | {service.title}
91 |
92 |
93 | ))}
94 |
95 |
96 |
97 | );
98 | };
99 |
100 | export default Services;
101 |
--------------------------------------------------------------------------------
/src/components/Subscribe/Subscribe.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { FaBell } from "react-icons/fa";
3 | import BgImage from "../../assets/bg.png";
4 | import { motion } from "framer-motion";
5 |
6 | const bgStyle = {
7 | backgroundImage: `url(${BgImage})`,
8 | backgroundRepeat: "no-repeat",
9 | backgroundSize: "cover",
10 | backgroundPosition: "center",
11 | };
12 |
13 | const Subscribe = () => {
14 | return (
15 |
16 |
22 |
28 |
29 |
30 | 450K+ Students are learning from us
31 |
32 |
33 | Lorem ipsum dolor sit amet consectetur adipisicing elit.
34 | Recusandae iusto minima
35 |
36 |
40 | Subscribe Now
41 |
42 |
43 |
44 |
45 |
46 |
47 | );
48 | };
49 |
50 | export default Subscribe;
51 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @layer components {
6 | .primary-btn {
7 | @apply inline-block bg-primary text-white font-semibold rounded-lg hover:bg-secondary duration-200 shadow-[0px_10px_8px_-7px_#ffd978] hover:shadow-[0px_10px_8px_-7px_#69a79c] py-2 px-6;
8 | }
9 | }
10 |
11 | @layer utilities {
12 | .drop-shadow {
13 | filter: drop-shadow(6px 8px 10px rgba(0, 0, 0, 0.5));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.jsx'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | export default {
3 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4 | theme: {
5 | extend: {
6 | fontFamily: {
7 | poppins: ["Poppins", "sans-serif"],
8 | },
9 | colors: {
10 | primary: "#f7ba34",
11 | secondary: "#69a79c",
12 | light: "#f7f7f7",
13 | dark: "#333333",
14 | dark2: "#999999",
15 | },
16 | container: {
17 | center: true,
18 | padding: {
19 | DEFAULT: "1rem",
20 | sm: "2rem",
21 | lg: "4rem",
22 | xl: "5rem",
23 | "2xl": "6rem",
24 | },
25 | },
26 | },
27 | },
28 | plugins: [],
29 | };
30 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------