Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
41 changes: 41 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts
3 changes: 0 additions & 3 deletions .vscode/settings.json

This file was deleted.

88 changes: 88 additions & 0 deletions app/books/books.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
"use client"
import React from 'react';
import Image from 'next/image';
import { fadeIn } from '@/public/variant/variant';
import { motion } from 'framer-motion';
import {Books, BookCard} from './components/objects'


const RoboticsBooks: React.FC = () => {
return (
<div className="h-[400px]">
{/* Mobile Layout */}
<div className="block lg:hidden px-4">
<div className="max-w-sm">
{/* Mobile Header */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="text-center mb-6">
<div className="inline-flex items-center justify-center w-12 h-12 rounded-lg mb-3">
<Image
src={'/icons/icon-park-solid_bookshelf.svg'}
width={40}
height={40}
alt='logo'
/>
</div>
<h1 className="text-lg font-bold text-black mb-2 leading-tight">
Books to Learn Robotics
</h1>
</motion.div>

<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid grid-cols-3 gap-3">
{Books.map((repo, index) => (
<BookCard key={`mobile-${index}`} repo={repo} isMobile={true}/>
))}
</motion.div>
</div>
</div>

{/* Desktop Layout */}
<div className="hidden lg:block p-8 pl-[70px]">
<div className="max-w-7xl">
{/* Desktop Header */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="text-center mb-12">
<div className="inline-flex items-center justify-center w-16 h-16 rounded-lg mb-6">
<Image
src={'/icons/icon-park-solid_bookshelf.svg'}
width={50}
height={50}
alt='logo'
/>
</div>
<h1 className="text-3xl font-bold text-black mb-4">
Books to Learn Robotics
</h1>
</motion.div>

{/* Desktop Grid - 5 columns × 3 rows */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid grid-cols-5 gap-6 p-[20px]">
{Books.map((repo, index) => (
<BookCard key={`desktop-${index}`} repo={repo} isMobile={false} />
))}
</motion.div>
</div>
</div>
</div>
);
};

export default RoboticsBooks;
32 changes: 32 additions & 0 deletions app/books/components/objects.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import Link from "next/link"

interface Book {
name: string;
displayName: string;
href: string;
}

export const Books: Book[] = [
{ name: 'ROS Robotics by Example', displayName: 'ROS Robotics by Example', href: 'https://sceweb.sce.uhcl.edu/harman/CENG5437_MobileRobots/Webitems2020/ROS_ROBOTICS_BY_EXAMPLE_SECOND_EDITION.pdf' },
{ name: 'ROS Robot Programming', displayName: 'ROS Robot Programming', href: 'https://www.pishrobot.com/wp-content/uploads/2021/05/ros-robot-programming-book-by-turtlebo3-developers-en.pdf' },
{ name: 'Learning ROS for Robotics Programming', displayName: 'Learning ROS for Robotics Programming', href: 'https://github.com/fjibj/ROSplay/blob/master/Learning%20ROS%20for%20Robotics%20Programming%20-%20Second%20Edition.pdf' },
{ name: 'A Gentle Introduction to ROS', displayName: 'A Gentle Introduction to ROS', href: 'https://jokane.net/agitr/agitr-letter.pdf' },
{ name: 'Programming Robots with ROS', displayName: 'Programming Robots with ROS', href: 'http://alvarestech.com/temp/capp/GDT_Forma3D/Programming%20Robots%20with%20ROS%20by%20Morgan%20Quigley,%20Brian%20Gerkey,%20William%20D.%20Smart%20(z-lib.org).pdf' },
{ name: 'Robot Operating System for Absolute Beginners', displayName: 'Robot Operating System for Absolute Beginners', href: 'http://wiki.iranros.com/wp-content/uploads/2019/10/Lentin-Joseph-Robot-Operating-SystemROSfor-Absolute-Beginners_IRANROS.COM2018.pdf' },
];

export const BookCard: React.FC<{ repo: Book; isMobile?: boolean; className?: string }> = ({ repo, isMobile = false }) => {
return (
<Link href={repo.href} className={`bg-white rounded-[20px] border-2 border-[#0004FF] hover:shadow-lg hover:scale-105 transition-all duration-300 cursor-pointer flex items-center justify-center ${
isMobile ? 'p-3 h-30 w-28' : 'p-6 h-40 w-40'
}`}>
<h3 className={`font-medium text-black leading-tight text-center ${
isMobile ? 'text-xs' : 'text-sm'
}`}>
{repo.displayName}
</h3>
</Link>
);
};


Binary file added app/favicon.ico
Binary file not shown.
29 changes: 29 additions & 0 deletions app/freelearning/components/objects.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import Link from 'next/link'

interface Courses {
name: string;
displayName: string;
href: string;
}

export const Courses: Courses[] = [
{ name: 'self-driving cars with duckietown', displayName: 'Self-Driving Cars with Duckietown', href: 'https://duckietown.com/mooc/' },
{ name: 'introduction robotics by massachusetts institute of technology', displayName: 'Introduction Robotics by Massachusetts Institute of Technology', href: 'https://ocw.mit.edu/courses/2-12-introduction-to-robotics-fall-2005/' },
{ name: 'OUT', displayName: 'QUT Robot Academy by QUT (Queensland University of Technology)', href: 'https://robotacademy.net.au/' },
{ name: 'intro to robot by standford', displayName: 'Introduction to Robotics by Standford University', href: 'https://see.stanford.edu/Course/CS223A' },
{ name: 'introduction to mobile robotics', displayName: 'Introduction to Mobile Robotics by the University of Freiburg', href: 'http://ais.informatik.uni-freiburg.de/teaching/ss16/robotics/index_en.php' },
];

export const CourseCard: React.FC<{ repo: Courses; isMobile?: boolean; className?: string }> = ({ repo, isMobile = false }) => {
return (
<Link href={repo.href} className={`bg-white rounded-[20px] border-2 border-[#0004FF] hover:shadow-lg hover:scale-105 duration-300 transition-all cursor-pointer flex items-center justify-center ${
isMobile ? 'p-3 h-30 w-28' : 'p-6 h-40 w-40'
}`}>
<h3 className={`font-medium text-black leading-tight text-center ${
isMobile ? 'text-xs' : 'text-sm'
}`}>
{repo.displayName}
</h3>
</Link>
);
};
89 changes: 89 additions & 0 deletions app/freelearning/free.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
"use client"
import React from 'react';
import Image from 'next/image';
import { fadeIn } from '@/public/variant/variant';
import { motion } from 'framer-motion';
import {Courses, CourseCard} from './components/objects'



const RoboticsCourses: React.FC = () => {
return (
<div className="mt-[40px] h-[400px]">
{/* Mobile Layout */}
<div className="block lg:hidden px-4">
<div className="max-w-sm">
{/* Mobile Header */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="text-center mb-6">
<div className="inline-flex items-center justify-center w-12 h-12 rounded-lg mb-3">
<Image
src={'/icons/streamline_class-lesson-solid.svg'}
width={40}
height={40}
alt='logo'
/>
</div>
<h1 className="text-lg font-bold text-black mb-2 leading-tight">
Free University Courses
</h1>
</motion.div>

<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid grid-cols-3 gap-3">
{Courses.map((repo, index) => (
<CourseCard key={`mobile-${index}`} repo={repo} isMobile={true}/>
))}
</motion.div>
</div>
</div>

{/* Desktop Layout */}
<div className="hidden lg:block p-8 pl-[70px]">
<div className="max-w-7xl">
{/* Desktop Header */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="text-center mb-12">
<div className="inline-flex items-center justify-center w-16 h-16 rounded-lg mb-6">
<Image
src={'/icons/streamline_class-lesson-solid.svg'}
width={50}
height={50}
alt='logo'
/>
</div>
<h1 className="text-3xl font-bold text-black mb-4">
Free University Courses
</h1>
</motion.div>

{/* Desktop Grid - 5 columns × 3 rows */}
<motion.div
variants={fadeIn('up', 0.2)}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid grid-cols-5 gap-6 p-[20px]">
{Courses.map((repo, index) => (
<CourseCard key={`desktop-${index}`} repo={repo} isMobile={false} />
))}
</motion.div>
</div>
</div>
</div>
);
};

export default RoboticsCourses;
24 changes: 24 additions & 0 deletions app/globals.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
@import "tailwindcss";

:root {
--background: #C2DAFF;
--primary-color: #0004FF;
--foreground: #000000;
}

@font-face {
font-family: 'Jeju Gothic';
src: url('/public/fonts/JejuGothic-Regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}

html {
scroll-behavior: smooth;
}

body {
background: var(--background);
color: var(--foreground);
font-family: 'Jeju Gothic', sans-serif;
}
50 changes: 50 additions & 0 deletions app/home/components/objects.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
export const socialLinks = [
{ icon: '/icons/prime_twitter.svg', href: 'https://twitter.com/Akshet9', label: 'Twitter' },
{ icon: '/icons/mdi_linkedin.svg', href: 'https://linkedin.com/in/akshetpatel', label: 'LinkedIn'},
{ icon: '/icons/mingcute_github-fill.svg', href: 'https://github.com/akshetP', label: 'GitHub' },
{ icon: '/icons/mdi_youtube.svg', href: 'https://www.youtube.com/@akshetpatel', label: 'YouTube'},
{ icon: '/icons/ic_sharp-facebook.svg', href: 'https://www.facebook.com/akshet.patel.14/', label: 'Facebook' },
];

export const resourceCards = [
{
title: 'Open Source Robotics Projects GitHub Repositories',
icon: '/icons/project.svg',
href: '#project'
},
{
title: 'Github Repositories to Learn Robotics',
icon: '/icons/repository.svg',
href: '#repository'
},
{
title: 'ROS Resources',
icon: '/icons/ros.svg',
href: '#ros'
},
{
title: 'ROS2 Resources',
icon: '/icons/ros.svg',
href: '#ros2'
},
{
title: 'YouTube Channels & Playlists to Learn Robotics',
icon: '/icons/mdi_youtube.svg',
href: '#youtube'
},
{
title: 'Free University Courses',
icon: '/icons/streamline_class-lesson-solid.svg',
href: '#course'
},
{
title: 'Books to Learn Robotics',
icon: '/icons/icon-park-solid_bookshelf.svg',
href: '#book'
},
{
title: 'Robotic Simulators',
icon: '/icons/ix_project-simulation.svg',
href: '#simulator'
}
];
Loading