diff --git a/.gitignore b/.gitignore
index a5c24d9..6f13da8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,3 +32,4 @@ yarn-error.log*
.env*.local
.vercel
+*.lock
diff --git a/app/e-lab/[id]/page.tsx b/app/e-lab/[id]/page.tsx
index 90283b2..c60ed97 100644
--- a/app/e-lab/[id]/page.tsx
+++ b/app/e-lab/[id]/page.tsx
@@ -1,12 +1,12 @@
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-import {faInstagram, faLinkedin, faXTwitter, faYoutube} from "@fortawesome/free-brands-svg-icons";
-import {faArrowLeft, faEnvelope, faLink} from "@fortawesome/free-solid-svg-icons";
-import {alumni, Person, team} from "../../../data/e-lab";
+import {faArrowLeft} from "@fortawesome/free-solid-svg-icons";
+import {alumni, Person, team} from "@data/e-lab";
import Link from "next/link";
import NotFound from "next/dist/client/components/not-found-error";
import Section from "@components/ui/Section";
import Image from "next/image";
import {ProfilePage, WithContext} from "schema-dts";
+import SocialMediaLinks from "@components/SocialMediaLinks";
export function generateStaticParams() {
return team.map((person) => ({
@@ -47,7 +47,7 @@ export default function Page({params: {id}}: { params: { id: string } }) {
familyName: person.lastName,
description: person.description,
image: 'https://www.tum-ai.com' + person.imgSrc,
- email: person.email,
+ email: person.socialMedia.email,
worksFor: {
'@type': 'EmployeeRole',
roleName: person.role,
@@ -67,11 +67,11 @@ export default function Page({params: {id}}: { params: { id: string } }) {
},
url: 'https://www.tum-ai.com/e-lab/' + person.id,
sameAs: [
- person.linkedin,
- person.x ? person.x : "",
- person.instagram ? person.instagram : "",
- person.youtube ? person.youtube : "",
- person.website ? person.website : "",
+ person.socialMedia.linkedin,
+ person.socialMedia.x ? person.socialMedia.x : "",
+ person.socialMedia.instagram ? person.socialMedia.instagram : "",
+ person.socialMedia.youtube ? person.socialMedia.youtube : "",
+ person.socialMedia.website ? person.socialMedia.website : "",
],
},
}
@@ -118,72 +118,15 @@ export default function Page({params: {id}}: { params: { id: string } }) {
{person?.role}
-
-
Social Media Links
-
-
-
-
-
- {person.x ? (
-
-
-
- ) : null}
- {person.instagram ? (
-
-
-
- ) : null}
- {person.youtube ? (
-
-
-
- ) : null}
- {person.website ? (
-
-
-
- ) : null}
- {person.email ? (
-
-
-
- ) : null}
-
+
+
@@ -193,97 +136,40 @@ export default function Page({params: {id}}: { params: { id: string } }) {
- {/* Person image */}
-
-
-
-
+ {/* Person image */}
+
-
-
-
-
-
- {person.firstName} {person.lastName}
-
-
- {person.role}
-
-
-
-
-
-
- {person.x ? (
-
-
-
- ) : null}
- {person.instagram ? (
-
-
-
- ) : null}
- {person.youtube ? (
-
-
-
- ) : null}
- {person.website ? (
-
-
-
- ) : null}
- {person.email ? (
-
-
-
- ) : null}
-
+
+
+
+
+
+
+ {person.firstName} {person.lastName}
+
+
+ {person.role}
+
+
+
+
-
+
+
);
}
diff --git a/app/e-lab/page.tsx b/app/e-lab/page.tsx
index fbd71f6..fcea370 100644
--- a/app/e-lab/page.tsx
+++ b/app/e-lab/page.tsx
@@ -42,72 +42,72 @@ export const metadata: Metadata = {
};
export default function Page() {
-
- const jsonLd: WithContext
= {
- '@context': 'https://schema.org',
- '@type': 'Organization',
- name: 'Venture Department',
- alternateName: [
- 'AI Entrepreneurship Lab',
- 'AI E-Lab',
- 'AI E-Lab by TUM.ai',
- 'AI Entrepreneurship Lab by TUM.ai',
- ],
- description: 'The Venture Department is the entrepreneurial arm of TUM.ai and organizes the AI Entrepreneurship Lab, a 14-week equity-free AI startup incubator.',
- url: 'https://www.tum-ai.com/e-lab',
- email: 'venture@tum-ai.com',
- sameAs: [
- 'https://www.startbase.de/organization/ai-e-lab/',
- 'https://www.startup-insider.com/investor/ai-e-lab-by-tum-ai',
- 'https://www.munich-startup.de/startups/tum-ai-entrepreneurship-lab/',
- ],
- parentOrganization: {
- '@type': 'Organization',
- name: 'TUM.ai',
- legalName: 'TUM.ai e.V.',
- alternateName: 'TUM.ai Student Initiative',
- url: 'https://www.tum-ai.com',
- logo: 'https://upload.wikimedia.org/wikipedia/commons/a/a2/TUM.ai_Logo_Blue_%26_Violet.svg',
- email: 'contact@tum-ai.com',
- },
- contactPoint: {
- '@type': 'ContactPoint',
- email: 'venture@tum-ai.com',
- contactType: 'Venture Department',
- },
- employee: {
- '@type': 'EmployeeRole',
- roleName: 'Head of Venture Department',
- employee: {
- '@type': 'Person',
- name: 'Laurenz Sommerlad',
- identifier: 'laurenz-sommerlad',
- email: 'laurenz.sommerlad@tum-ai.com',
- url: 'https://www.tum-ai.com/e-lab/laurenz-sommerlad',
+ const jsonLd: WithContext = {
+ '@context': 'https://schema.org',
+ '@type': 'Organization',
+ name: 'Venture Department',
+ alternateName: [
+ 'AI Entrepreneurship Lab',
+ 'AI E-Lab',
+ 'AI E-Lab by TUM.ai',
+ 'AI Entrepreneurship Lab by TUM.ai',
+ ],
+ description: 'The Venture Department is the entrepreneurial arm of TUM.ai and organizes the AI Entrepreneurship Lab, a 14-week equity-free AI startup incubator.',
+ url: 'https://www.tum-ai.com/e-lab',
+ email: 'venture@tum-ai.com',
sameAs: [
- 'https://laurenzsommerlad.com',
- 'https://www.linkedin.com/in/laurenzsommerlad/',
+ 'https://www.startbase.de/organization/ai-e-lab/',
+ 'https://www.startup-insider.com/investor/ai-e-lab-by-tum-ai',
+ 'https://www.munich-startup.de/startups/tum-ai-entrepreneurship-lab/',
],
+ parentOrganization: {
+ '@type': 'Organization',
+ name: 'TUM.ai',
+ legalName: 'TUM.ai e.V.',
+ alternateName: 'TUM.ai Student Initiative',
+ url: 'https://www.tum-ai.com',
+ logo: 'https://upload.wikimedia.org/wikipedia/commons/a/a2/TUM.ai_Logo_Blue_%26_Violet.svg',
+ email: 'contact@tum-ai.com',
+ },
contactPoint: {
- '@type': 'ContactPoint',
- email: 'laurenz.sommerlad@tum-ai.com',
- contactType: 'Head of Venture Department',
- }
- },
- },
- }
+ '@type': 'ContactPoint',
+ email: 'venture@tum-ai.com',
+ contactType: 'Venture Department',
+ },
+ employee: {
+ '@type': 'EmployeeRole',
+ roleName: 'Head of Venture Department',
+ employee: {
+ '@type': 'Person',
+ name: 'Laurenz Sommerlad',
+ identifier: 'laurenz-sommerlad',
+ email: 'laurenz.sommerlad@tum-ai.com',
+ url: 'https://www.tum-ai.com/e-lab/laurenz-sommerlad',
+ sameAs: [
+ 'https://laurenzsommerlad.com',
+ 'https://www.linkedin.com/in/laurenzsommerlad/',
+ ],
+ contactPoint: {
+ '@type': 'ContactPoint',
+ email: 'laurenz.sommerlad@tum-ai.com',
+ contactType: 'Head of Venture Department',
+ }
+ },
+ },
+ }
+
return (
<>
-
- {/* Add JSON-LD to your page */}
-
-
-
- {/*
+
+ {/* Add JSON-LD to your page */}
+
+
+
+ {/* {
AI E-Lab Final Pitch Event
@@ -134,38 +134,38 @@ export default function Page() {
- */}
-
-
-
- What is the AI E-Lab?
-
-
+ } */}
+
+
+
+ What is the AI E-Lab?
+
+
The AI Entrepreneurship Lab is the Launchpad for your AI ventures,
{" "}
- a 3-months founding journey for curious and driven individuals. We
- provide you with relevant know-how, a team, and support to lay the
- foundation for your own AI startup.
-
-
+ a 3-months founding journey for curious and driven individuals. We
+ provide you with relevant know-how, a team, and support to lay the
+ foundation for your own AI startup.
+
+
-
-
-
- Inside the E-Lab: A Founder's Journey
-
- VIDEO
-
+
+
+
+ Inside the E-Lab: A Founder's Journey
+
+ VIDEO
-
+
+
@@ -197,6 +197,14 @@ export default function Page() {
+
+
+ See all E-Lab Startups
+
+
@@ -209,247 +217,237 @@ export default function Page() {
you can build something great!
-
-
- Entrepreneurship means change and we believe that everyone is
- qualified to become an{" "}
- entrepreneur . Think about your
- last big achievement, your perseverance over hurdles and what it
- took to succeed - you already proved that you are a real
- changemaker.
-
+
+ Are you ready for your next step? Great. With our AI
+ Entrepreneurship Lab we aim at making the founding of AI{" "}
+ startups
+ accessible to everyone, including you. Bring your motivation and
+ dedication, and we’ll provide the rest, striving to make founding as
+ easy as possible for you.
+
-
- Are you ready for your next step? Great. With our AI
- Entrepreneurship Lab we aim at making the founding of AI{" "}
- startups
- accessible to everyone, including you. Bring your motivation and
- dedication, and we’ll provide the rest, striving to make founding as
- easy as possible for you.
-
-
+
+
+
+
-
-
-
-
+
+
+ Last AI E-Lab in numbers
+
-
-
- Last AI E-Lab in numbers
-
+
+
+
+
+
+
+
+ Top 3 Startups have
+
-
-
-
+
+
+
+
+
+
-
-
- Top 3 Startups have
-
-
-
-
-
-
-
-
-
-
-
-
- Benefits
-
+
+
+ Benefits
+
-
- We support you in achieving
- your endeavors because your{" "}
- personal growth is our{" "}
- goal
+
+ We support you in achieving
+ your endeavors because your{" "}
+ personal growth is our{" "}
+ goal
+
+
+
+ Are you passionate about AI and ready to make a real-world impact?
+ TUM.ai invites you to join our AI E-Lab, a platform where
+ visionaries, doers, and risk-takers with an interest in founding an
+ AI-based startup come together to shape the future of AI. We value
+ diversity, curiosity, and a commitment to learning and improvement.
-
-
- Are you passionate about AI and ready to make a real-world impact?
- TUM.ai invites you to join our AI E-Lab, a platform where
- visionaries, doers, and risk-takers with an interest in founding an
- AI-based startup come together to shape the future of AI. We value
- diversity, curiosity, and a commitment to learning and improvement.
-
-
- As part of the AI E-Lab, you'll connect with a vibrant
- ecosystem of startups, industry partners, and like-minded peers.
- You'll have the opportunity to contribute to groundbreaking AI
- projects and drive positive social impact.
-
-
- This is a part-time program and we expect you to provide us with
- intermediate deliverables on a weekly basis: pitches, MVPs, learning
- outcomes, sprint planning, etc. Our events are planned to take place
- in Munich, so you must be able join in person. The more you commit,
- the more you get.
-
-
-
-
+
+ As part of the AI E-Lab, you'll connect with a vibrant
+ ecosystem of startups, industry partners, and like-minded peers.
+ You'll have the opportunity to contribute to groundbreaking AI
+ projects and drive positive social impact.
+
+
+ This is a part-time program and we expect you to provide us with
+ intermediate deliverables on a weekly basis: pitches, MVPs, learning
+ outcomes, sprint planning, etc. Our events are planned to take place
+ in Munich, so you must be able join in person. The more you commit,
+ the more you get.
+
+
+
+
-
+
-
-
- Meet our Partners and Sponsors
-
+
+
+ Meet our Partners and Sponsors
+
-
- {/*
+
+ {/*
Partners
*/}
-
-
-
+
+
+
-
+
-
+
-
-
- FAQ
+
+
+
+ FAQ
+
+
+ Do you have any questions?
+
+
+
+
+ You still have other questions?
-
- Do you have any questions?
-
-
-
-
- You still have other questions?
-
-
- Ask us here
-
-
-
- >
+
+ Ask us here
+
+
+
+ >
);
interface SnapSliderProps {
diff --git a/app/e-lab/startuplist/page.tsx b/app/e-lab/startuplist/page.tsx
new file mode 100644
index 0000000..06e73c4
--- /dev/null
+++ b/app/e-lab/startuplist/page.tsx
@@ -0,0 +1,63 @@
+import type { Metadata } from "next";
+import Section from "@ui/Section";
+import Link from "next/link";
+import StartupList from "@components/ELabStartupList";
+import { startups } from "data/e-lab-startups";
+
+// Define the metadata for the page
+export const metadata: Metadata = {
+ title: "E-Lab Startup Directory",
+ description: "Registry of all E-Lab based Startups.",
+};
+
+export default function Page() {
+ return (
+ <>
+ {/* Hidden Title for Accessibility */}
+ E-Lab Startup Directory | List of Startups
+
+ {/* Header Section */}
+
+
+
+ E-Lab Startup Directory
+
+
+ Registry of all E-Lab based Startups.
+
+
+
+
+ {/* Main Content Section */}
+
+
+ Since 2022 , we have founded{" "}
+ 16 startups within the{" "}
+ E-LAB
+
+
+
+ We are proud to present the startups that have emerged from the AI
+ E-Lab program. Each of them has a unique story and a vision to
+ change the world with their AI-based solutions. We invite you to
+ explore the startups and their founders, get inspired by their
+ innovative ideas, and discover exciting job opportunities available
+ with these pioneering companies.
+
+
+
+
+
+
+ {/* Back Link Section */}
+
+
+ Back to the AI E-LAB
+
+
+ >
+ );
+}
diff --git a/app/e-lab/startups/[id]/page.tsx b/app/e-lab/startups/[id]/page.tsx
new file mode 100644
index 0000000..f55f9ab
--- /dev/null
+++ b/app/e-lab/startups/[id]/page.tsx
@@ -0,0 +1,18 @@
+import { startups, Startup} from '@data/e-lab-startups';
+import StartupDetails from '@components/StartupDetails';
+
+export default function StartupPage({ params }: { params: { id: string } }) {
+
+ const startup: Startup | undefined = startups.find((startup: Startup) => {
+ if (startup && startup.id === params.id) {
+ return startup;
+ }
+ return undefined;
+ });
+
+ if (!startup) {
+ return Startup Not Found
;
+ }
+
+ return ;
+}
\ No newline at end of file
diff --git a/app/hero.tsx b/app/hero.tsx
index 2a4a631..3919abd 100644
--- a/app/hero.tsx
+++ b/app/hero.tsx
@@ -27,7 +27,7 @@ export const Hero = () => {
distort={0.3}
wireframe={true}
wireframeLinewidth={5}
- color={fullConfig.theme.colors.purple["600"]}
+ color={(fullConfig.theme?.colors?.purple?.["600"] as string) ?? "#000000"}
transparent
opacity={0.4}
blending={THREE.AdditiveBlending}
diff --git a/components/ELabStartupList.tsx b/components/ELabStartupList.tsx
new file mode 100644
index 0000000..9e5055e
--- /dev/null
+++ b/components/ELabStartupList.tsx
@@ -0,0 +1,181 @@
+"use client";
+
+import React, { useState, useEffect, useRef } from 'react';
+import { Startup } from '../data/e-lab-startups';
+import Link from "next/link";
+import '../styles/tags.css';
+import Image from "next/image";
+
+interface StartupListProps {
+ startups: Startup[];
+ maxHeight?: string; // Making maxHeight optional
+}
+
+type FilterOptions = Record;
+
+export default function StartupList({ startups, maxHeight }: StartupListProps) {
+ const [searchQuery, setSearchQuery] = useState('');
+ const [selectedFilters, setSelectedFilters] = useState({});
+ const [filteredStartups, setFilteredStartups] = useState(startups);
+ const [isFilterVisible, setIsFilterVisible] = useState(false);
+
+ const sidebarRef = useRef(null)
+ const checkboxesRef = useRef>({});
+
+ const filterCategories: (keyof Startup)[] = ['tag', 'batch', 'industry'];
+
+ // Filter startups
+ const filterOptions = startups.reduce((acc, startup) => {
+ filterCategories.forEach((category) => {
+ if (startup[category] && !acc[category]?.includes(startup[category] as string)) {
+ acc[category]?.push(startup[category] as string);
+ }
+ });
+ return acc;
+ }, filterCategories.reduce((acc, category) => ({ ...acc, [category]: [] as string[] }), {} as Record));
+
+ useEffect(() => {
+ const applyFilters = () => {
+ const filtered = startups.filter((startup) => {
+ const matchesSearchQuery = searchQuery
+ ? startup.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
+ startup.description.toLowerCase().includes(searchQuery.toLowerCase())
+ : true;
+
+ const matchesFilters = Object.entries(selectedFilters).every(([key, values]) => {
+ if (!values.length) return true;
+ return values.includes(startup[key as keyof Startup] as string);
+ });
+
+ return matchesFilters && matchesSearchQuery;
+ });
+ setFilteredStartups(filtered);
+ };
+
+ applyFilters();
+ }, [selectedFilters, searchQuery, startups]);
+
+ const handleFilterChange = (category: string, value: string, isChecked: boolean) => {
+ setSelectedFilters((prevFilters) => {
+ const updatedFilters = { ...prevFilters };
+
+ // Ensure the category array exists
+ if (!updatedFilters[category]) {
+ updatedFilters[category] = [];
+ }
+
+ if (isChecked) {
+ updatedFilters[category]!.push(value); // Use non-null assertion operator (!)
+ } else {
+ updatedFilters[category] = updatedFilters[category]!.filter((v) => v !== value); // Use non-null assertion operator (!)
+ }
+
+ return updatedFilters;
+ });
+ };
+
+ const resetFilters = () => {
+ setSelectedFilters({});
+ setSearchQuery('');
+
+ Object.values(checkboxesRef.current).forEach((checkbox) => {
+ if (checkbox) {
+ checkbox.checked = false;
+ }
+ });
+ };
+
+ // Filter visibility for mobile view
+ const toggleFilterVisibility = () => {
+ setIsFilterVisible(!isFilterVisible);
+ };
+
+ const handleClickOutside = (event: MouseEvent) => {
+ if (sidebarRef.current && !sidebarRef.current.contains(event.target as Node)) {
+ setIsFilterVisible(false);
+ }
+ };
+
+ useEffect(() => {
+ if (isFilterVisible) {
+ document.addEventListener('mousedown', handleClickOutside);
+ } else {
+ document.removeEventListener('mousedown', handleClickOutside);
+ }
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside);
+ };
+ }, [isFilterVisible]);
+
+
+ return (
+
+
+ {/* Filter*/}
+
+
+
Filters
+ {filterCategories.map((category) => (
+
+
{category.charAt(0).toUpperCase() + category.slice(1)}
+ {filterOptions[category]?.map((option) => (
+
+ {
+ if (el) checkboxesRef.current[`${category}-${option}`] = el;
+ }}
+ onChange={(e) => handleFilterChange(category, option, e.target.checked)}
+ className="mr-2"
+ />
+ {option}
+
+ ))}
+
+ ))}
+
+ Reset Filters
+
+
+
+
+ {/* Main Content */}
+
+ {/* Filter Button for Mobile View */}
+
+ Filter
+
+
+ setSearchQuery(e.target.value)}
+ placeholder="Search startups..."
+ className="w-full px-4 py-2 border rounded text-black"
+ />
+
+
+ {filteredStartups.map((startup) => (
+
+
+
+
+
{startup.name}
+
{startup.description}
+
+ {startup.batch}
+ {startup.industry}
+ {startup.tag}
+
+
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/components/Person.tsx b/components/Person.tsx
index fb1435e..5b71fa2 100644
--- a/components/Person.tsx
+++ b/components/Person.tsx
@@ -1,9 +1,7 @@
import Link from "next/link";
-import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
-import {faInstagram, faLinkedin, faXTwitter, faYoutube} from "@fortawesome/free-brands-svg-icons";
-import {faEnvelope, faLink} from "@fortawesome/free-solid-svg-icons";
-import {Person} from "../data/e-lab";
+import {Person} from "@data/e-lab";
import Image from "next/image";
+import SocialMediaLinks from "@components/SocialMediaLinks";
interface PersonProps {
person: Person;
@@ -35,64 +33,7 @@ export default function Person ({person}:PersonProps) {
-
-
-
- {person.x ? (
-
-
-
- ) : null}
- {person.instagram ? (
-
-
-
- ) : null}
- {person.youtube ? (
-
-
-
- ) : null}
- {person.website ? (
-
-
-
- ) : null}
- {person.email ? (
-
-
-
- ) : null}
+
diff --git a/components/SocialMediaLinks.tsx b/components/SocialMediaLinks.tsx
new file mode 100644
index 0000000..f5d39e7
--- /dev/null
+++ b/components/SocialMediaLinks.tsx
@@ -0,0 +1,72 @@
+import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
+import {faInstagram, faLinkedin, faXTwitter, faYoutube} from "@fortawesome/free-brands-svg-icons";
+import {faEnvelope, faLink} from "@fortawesome/free-solid-svg-icons";
+import Link from "next/link";
+import {SocialMedia} from "@data/e-lab";
+
+function SocialMediaLinks(props: { socialMedia: SocialMedia, iconClassNames: string}) {
+ return <>
+ {props.socialMedia?.linkedin && (
+
+
+
+ )}
+ {props.socialMedia?.x && (
+
+
+
+ )}
+ {props.socialMedia?.instagram && (
+
+
+
+ )}
+ {props.socialMedia?.youtube && (
+
+
+
+ )}
+ {props.socialMedia?.website && (
+
+
+
+ )}
+ {props.socialMedia?.email && (
+
+
+
+ )}
+ >;
+}
+
+export default SocialMediaLinks;
\ No newline at end of file
diff --git a/components/StartupDetails.tsx b/components/StartupDetails.tsx
new file mode 100644
index 0000000..e730d77
--- /dev/null
+++ b/components/StartupDetails.tsx
@@ -0,0 +1,81 @@
+"use client";
+
+import Image from 'next/image';
+import Link from 'next/link';
+import { useState } from 'react';
+import Person from "@components/Person";
+import {Startup} from "@data/e-lab-startups";
+import SocialMediaLinks from "@components/SocialMediaLinks";
+
+const StartupDetails = ({ startup }: { startup: Startup }) => {
+ const [imageError, setImageError] = useState(false);
+
+ return (
+
+
+
+
+
+
+
{startup.name}
+ {!imageError && (
+ setImageError(true)}
+ />
+ )}
+
+
+
+
Social Media Links
+ {startup.socialMedia && (
+
+
+
+ )}
+
+
+
+
+
{startup.description}
+
+
Metrics
+
+ {Object.entries(startup.metrics).map(([key, value]) => (
+
+ {key}: {String(value)}
+
+ ))}
+
+
+
About {startup.name}
+
{startup.about}
+
+
Founders
+
+ {startup.founders?.map((person) => (
+
+ ))}
+
+
+
+ Visit Website
+
+
+
+
+
+ );
+};
+
+export default StartupDetails;
\ No newline at end of file
diff --git a/data/e-lab-startups.tsx b/data/e-lab-startups.tsx
index dc88c4c..922ac4e 100644
--- a/data/e-lab-startups.tsx
+++ b/data/e-lab-startups.tsx
@@ -1,10 +1,15 @@
+
+import {Person, SocialMedia} from "@data/e-lab";
+
+
export interface Startup {
id: string;
name: string;
description: string;
- founders: Founder[];
+ founders: Person[];
metrics: Metrics;
website: string;
+ socialMedia?: SocialMedia;
logo: string;
about?: string;
@@ -42,17 +47,17 @@ export const startups: Startup[] = [
description: "Airbnb is an online marketplace for short-term homestays and experiences.",
founders: [
{
- name: "Brian Chesky",
- role: "CEO, Co-founder"
- },
- {
- name: "Joe Gebbia",
- role: "Co-founder"
- },
- {
- name: "Nathan Blecharczyk",
- role: "Chief Strategy Officer, Co-founder"
+ id: "brian-chesky",
+ firstName: "Brian",
+ lastName: "Chesky",
+ role: "CEO, Co-founder",
+ imgSrc: "",
+ imgAlt: "Brian Chesky",
+ socialMedia: {
+ x: "https://twitter.com/bchesky",
+ linkedin: "https://www.linkedin.com/in/brian-chesky-5b695b",
}
+ },
],
metrics: {
"Year Founded": "2008",
@@ -88,10 +93,6 @@ export const startups: Startup[] = [
name: "Tesla",
description: "Tesla, Inc. is accelerating the world's transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses. Founded in 2003 by a group of engineers who wanted to prove that people didn’t need to compromise to drive electric – that electric vehicles can be better, quicker and more fun to drive than gasoline cars.",
founders: [
- {
- name: "Elon Musk",
- role: "CEO"
- },
],
metrics: {
"Year Founded": "2008",
@@ -126,10 +127,6 @@ export const startups: Startup[] = [
name: "Tesla1",
description: "Tesla, Inc. is accelerating the world's transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses. Founded in 2003 by a group of engineers who wanted to prove that people didn’t need to compromise to drive electric – that electric vehicles can be better, quicker and more fun to drive than gasoline cars.",
founders: [
- {
- name: "Elon Musk",
- role: "CEO"
- },
],
metrics: {
"Year Founded": "2008",
@@ -158,42 +155,4 @@ export const startups: Startup[] = [
date: "May 20, 2023",
}],
},
-
- {
- id: "tesla2",
- name: "Tesla2",
- description: "Tesla, Inc. is accelerating the world's transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses. Founded in 2003 by a group of engineers who wanted to prove that people didn’t need to compromise to drive electric – that electric vehicles can be better, quicker and more fun to drive than gasoline cars.",
- founders: [
- {
- name: "Elon Musk",
- role: "CEO"
- },
- ],
- metrics: {
- "Year Founded": "2008",
- "Valuation": "$113 billion",
- "Funding Raised": "$6.4 billion",
- "Employees": "6,132"
- },
- website: "http://tesla2.com",
- logo: "/assets/e-lab/startups/Tesla_Motors.svg.png",
- industry: "Automotive",
- batch: "S10",
- tag: "Is Hiring",
- jobs: [{
- name: "Senior Autopilot Software Engineer",
- location: "Palo Alto, CA",
- salary: "$180,000 - $230,000 a year",
- experience: "4+ years",
- }],
- latest_news: [{
- message: "Tesla is looking for a Senior Autopilot Software Engineer in Palo Alto, CA. The salary range is $180,000 - $230,000 a year with a requirement of 4+ years of experience.",
- link: "https://www.tesla.com/blog/autopilot-future-of-driving",
- date: "April 15, 2023",
- }, {
- message: "Tesla announces a new project to expand its energy storage solutions, aiming to revolutionize the electric grid.",
- link: "https://www.tesla.com/blog/energy-storage-solutions",
- date: "May 20, 2023",
- }],
- },
];
\ No newline at end of file
diff --git a/data/e-lab.tsx b/data/e-lab.tsx
index 27648cd..9c260d8 100644
--- a/data/e-lab.tsx
+++ b/data/e-lab.tsx
@@ -111,12 +111,17 @@ export interface Person {
description?: string;
imgSrc: string;
imgAlt: string;
+ socialMedia: SocialMedia;
+}
+
+export interface SocialMedia {
linkedin: string;
x?: string;
instagram?: string;
youtube?: string;
website?: string;
email?: string;
+
}
export const team: Person[] = [
@@ -135,12 +140,14 @@ export const team: Person[] = [
"Driven by a desire to make the world a better place, I am committed to solving the most challenging problems with technology. Feel free to reach out — I am always up for a coffee and a good conversation! ☕",
imgSrc: "/assets/e-lab/team/laurenz_sommerlad.jpg",
imgAlt: "Laurenz Sommerlad",
- linkedin: "https://www.linkedin.com/in/laurenzsommerlad/",
- x: "https://x.com/Lauros_World",
- instagram: "https://www.instagram.com/laurenzsommerlad/",
- youtube: "https://www.youtube.com/@LaurenzSommerlad",
- website: "https://laurenzsommerlad.com",
- email: "laurenz.sommerlad@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/laurenzsommerlad/",
+ x: "https://x.com/Lauros_World",
+ instagram: "https://www.instagram.com/laurenzsommerlad/",
+ youtube: "https://www.youtube.com/@LaurenzSommerlad",
+ website: "https://laurenzsommerlad.com",
+ email: "laurenz.sommerlad@tum-ai.com"
+ }
},
{
id: "jan-christopher-michalczik",
@@ -153,12 +160,14 @@ export const team: Person[] = [
"If you need more info than is presented on our website, sign up for our newsletter, go to one of our info events, or just reach out directly.",
imgSrc: "/assets/e-lab/team/jan_michalczik.png",
imgAlt: "Jan-Christopher Michalczik",
- linkedin: "https://www.linkedin.com/in/jan-michalczik/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "jan-christopher.michalczik@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/jan-michalczik/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "jan-christopher.michalczik@tum-ai.com"
+ }
},
{
id: "benedikt-wieser",
@@ -168,12 +177,14 @@ export const team: Person[] = [
description: "Having a background in Business Administration from the University of St. Gallen and studies at Berkeley, I’ve worked on multiple startup projects, in venture capital, at a scale-up, and participated in the AI E-Lab 2.0 startup incubator.\n\nAdditional to my professional experience, I learnt to lead teams in high-stress situations as an officer cadet in the Austrian Armed Forces, instilling in me strong personal drive and get-things-done thinking.\n\nBesides being passionate about entrepreneurship I love outdoor adventures like whitewater rafting and hiking, and always strive to explore and feel the intensity of life. I am absolutely looking forward to accompanying you on your individual, entrepreneurial journey. Let’s build something amazing together!",
imgSrc: "/assets/e-lab/team/benedikt_wieser.jpg",
imgAlt: "Benedikt Wieser",
- linkedin: "https://www.linkedin.com/in/benedikt-wieser-6430a3139/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: ""
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/benedikt-wieser-6430a3139/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: ""
+ }
},
{
id: "emine-hakani",
@@ -183,12 +194,14 @@ export const team: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/emine_hakani.png",
imgAlt: "Emine Hakani",
- linkedin: "https://www.linkedin.com/in/emine-hakani-muc/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "venture@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/emine-hakani-muc/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "venture@tum-ai.com"
+ }
},
{
id: "philip-juenemann",
@@ -198,12 +211,14 @@ export const team: Person[] = [
description: "Passionate about Entrepreneurship, Tech and AI!",
imgSrc: "/assets/e-lab/team/philip_juenemann.jpg",
imgAlt: "Philip Jünemann",
- linkedin: "https://www.linkedin.com/in/philip-louis-j%C3%BCnemann/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "philip.juenemann@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/philip-louis-j%C3%BCnemann/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "philip.juenemann@tum-ai.com"
+ }
},
{
id: "david-reyes",
@@ -214,12 +229,14 @@ export const team: Person[] = [
"Innovation drives me, and I have found a fitting place within the Munich entrepreneurial ecosystem. I am dedicated to ensuring you become part of an amazing batch of smart, diverse, and driven individuals who are passionate about developing solutions and maintaining a thriving sense of community. I look forward to working together to take your startup idea to the moon.",
imgSrc: "/assets/e-lab/team/david_reyes.png",
imgAlt: "David Reyes",
- linkedin: "https://www.linkedin.com/in/davidreyesj/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "david.reyes@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/davidreyesj/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "david.reyes@tum-ai.com"
+ }
},
{
id: "zaid-efraij",
@@ -229,12 +246,14 @@ export const team: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/zaid_efraij.jpg",
imgAlt: "Zaid Efraij",
- linkedin: "https://www.linkedin.com/in/zaid-efraij-b6630722a/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "zaid.efraij@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/zaid-efraij-b6630722a/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "zaid.efraij@tum-ai.com"
+ }
},
{
id: "nagaharshith-makam-sreenivasulu",
@@ -244,12 +263,14 @@ export const team: Person[] = [
description: "Hey, I am Nagah. In addition to pursuing a bachelor's degree in Management and Technology at TUM, I also assist with marketing at TUM.ai and TEG e.V. (The Entrepreneurial Group, student startup club in Munich). With a background in business, I am interested in using AI agents to improve traditional business settings. Professionally, I work as a Business Development working student at roadsurfer GmbH.\n\nI am excited to meet you and help you with your AI startup journey!",
imgSrc: "/assets/e-lab/team/nagah_sreenivasulu.jpg",
imgAlt: "Nagah Sreenivasulu",
- linkedin: "https://www.linkedin.com/in/nagaharshith",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "nagaharshith-makam.sreenivasulu@tum-ai.com"
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/nagaharshith",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "nagaharshith-makam.sreenivasulu@tum-ai.com"
+ }
},
];
@@ -262,12 +283,14 @@ export const alumni: Person[] = [
description: "Abdul serves as an Advisor at TUM.ai, where he brings his experience and expertise in leadership, entrepreneurship, and venture development. He previously led the AI E-Lab as the Head of Venture alongside Daniil Morozov, where they envisioned and re-established the AI E-Lab as a straight-shooting startup sandbox and a genuine community designed to engineer serendipity among founders. Throughout the program, Abdul has been and will continue to be a humble sparring partner for our founders.",
imgSrc: "/assets/e-lab/team/abdul_faruk.jpg",
imgAlt: "Abdulqadir Faruk",
- linkedin: "https://www.linkedin.com/in/abdulqadirfaruk/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "abdul.faruk@tum-ai.com",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/abdulqadirfaruk/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "abdul.faruk@tum-ai.com",
+ }
},
{
id: "daniil-morozov",
@@ -277,12 +300,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/daniil_morozov.png",
imgAlt: "Daniil Morozov",
- linkedin: "https://www.linkedin.com/in/daniil-morozov-912490252/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/daniil-morozov-912490252/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "nektarios-totikos",
@@ -292,12 +317,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/nektarios_totikos.jpeg",
imgAlt: "Nektarios Totikos",
- linkedin: "https://www.linkedin.com/in/nektarios-totikos/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/nektarios-totikos/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "ian-tolan",
@@ -307,12 +334,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/ian_tolan.png",
imgAlt: "Ian Tolan",
- linkedin: "https://www.linkedin.com/in/ian-tolan-a85b0a107/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/ian-tolan-a85b0a107/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "david-podolskyi",
@@ -322,12 +351,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/david_podolskyi.png",
imgAlt: "David Podolskyi",
- linkedin: "https://www.linkedin.com/in/davidpodolsky/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/davidpodolsky/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "luca-dombetzki",
@@ -337,12 +368,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/luca_dombetzki.png",
imgAlt: "Luca Dombetzki",
- linkedin: "https://www.linkedin.com/in/luca-dombetzki/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/luca-dombetzki/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "yarhy-flores",
@@ -352,12 +385,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/yarhy_flores.png",
imgAlt: "Yarhy Flores",
- linkedin: "https://www.linkedin.com/in/yarhy-flores/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/yarhy-flores/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "sebastian-wilhelm",
@@ -367,12 +402,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/sebastian_wilhelm.png",
imgAlt: "Sebastian Wilhelm",
- linkedin: "https://www.linkedin.com/in/sebastian-wilhelm/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/sebastian-wilhelm/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
{
id: "can-kayalan",
@@ -382,12 +419,14 @@ export const alumni: Person[] = [
description: "",
imgSrc: "/assets/e-lab/team/can_kayalan.png",
imgAlt: "Can Kayalan",
- linkedin: "https://www.linkedin.com/in/can-kayalan/",
- x: "",
- instagram: "",
- youtube: "",
- website: "",
- email: "",
+ socialMedia: {
+ linkedin: "https://www.linkedin.com/in/can-kayalan/",
+ x: "",
+ instagram: "",
+ youtube: "",
+ website: "",
+ email: "",
+ }
},
];
diff --git "a/public/assets/e-lab/startups/Airbnb_Logo_B\303\251lo.svg.png" "b/public/assets/e-lab/startups/Airbnb_Logo_B\303\251lo.svg.png"
new file mode 100644
index 0000000..faf3dac
Binary files /dev/null and "b/public/assets/e-lab/startups/Airbnb_Logo_B\303\251lo.svg.png" differ
diff --git a/public/assets/e-lab/startups/Tesla_Motors.svg.png b/public/assets/e-lab/startups/Tesla_Motors.svg.png
new file mode 100644
index 0000000..e17d5f9
Binary files /dev/null and b/public/assets/e-lab/startups/Tesla_Motors.svg.png differ
diff --git a/styles/tags.css b/styles/tags.css
new file mode 100644
index 0000000..1d00dc3
--- /dev/null
+++ b/styles/tags.css
@@ -0,0 +1,9 @@
+.tag {
+ display: inline-block;
+ background-color: #6a0dad; /* Purple background */
+ color: white;
+ padding: 5px 10px;
+ border-radius: 15px; /* Rounded corners */
+ margin-right: 5px; /* Space between tags */
+ font-size: 0.875rem; /* Tailwind's text-sm size */
+ }
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
index 86430dd..3f72709 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -28,6 +28,9 @@
"@components/*": [
"./components/*"
],
+ "@data/*": [
+ "./data/*"
+ ],
"@ui/*": [
"./components/ui/*"
],