nielsr HF staff commited on
Commit
38de65f
·
1 Parent(s): ee1fd05
package-lock.json CHANGED
@@ -60,6 +60,7 @@
60
  },
61
  "devDependencies": {
62
  "@eslint/js": "^9.9.0",
 
63
  "@tailwindcss/typography": "^0.5.15",
64
  "@types/node": "^22.5.5",
65
  "@types/react": "^18.3.3",
@@ -874,6 +875,21 @@
874
  "@jridgewell/sourcemap-codec": "^1.4.14"
875
  }
876
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
877
  "node_modules/@nodelib/fs.scandir": {
878
  "version": "2.1.5",
879
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -2318,6 +2334,36 @@
2318
  "node": ">=14.0.0"
2319
  }
2320
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2321
  "node_modules/@rollup/rollup-android-arm-eabi": {
2322
  "version": "4.24.0",
2323
  "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
@@ -6689,6 +6735,15 @@
6689
  "node": ">=8.0"
6690
  }
6691
  },
 
 
 
 
 
 
 
 
 
6692
  "node_modules/ts-api-utils": {
6693
  "version": "1.3.0",
6694
  "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
 
60
  },
61
  "devDependencies": {
62
  "@eslint/js": "^9.9.0",
63
+ "@modyfi/vite-plugin-yaml": "^1.1.1",
64
  "@tailwindcss/typography": "^0.5.15",
65
  "@types/node": "^22.5.5",
66
  "@types/react": "^18.3.3",
 
875
  "@jridgewell/sourcemap-codec": "^1.4.14"
876
  }
877
  },
878
+ "node_modules/@modyfi/vite-plugin-yaml": {
879
+ "version": "1.1.1",
880
+ "resolved": "https://registry.npmjs.org/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.1.1.tgz",
881
+ "integrity": "sha512-rEbfFNlMGLKpAYs2RsfLAhxCHFa6M4QKHHk0A4EYcCJAUwFtFO6qiEdLjUGUTtnRUxAC7GxxCa+ZbeUILSDvqQ==",
882
+ "dev": true,
883
+ "license": "MIT",
884
+ "dependencies": {
885
+ "@rollup/pluginutils": "5.1.0",
886
+ "js-yaml": "4.1.0",
887
+ "tosource": "2.0.0-alpha.3"
888
+ },
889
+ "peerDependencies": {
890
+ "vite": ">=3.2.7"
891
+ }
892
+ },
893
  "node_modules/@nodelib/fs.scandir": {
894
  "version": "2.1.5",
895
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
 
2334
  "node": ">=14.0.0"
2335
  }
2336
  },
2337
+ "node_modules/@rollup/pluginutils": {
2338
+ "version": "5.1.0",
2339
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
2340
+ "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
2341
+ "dev": true,
2342
+ "license": "MIT",
2343
+ "dependencies": {
2344
+ "@types/estree": "^1.0.0",
2345
+ "estree-walker": "^2.0.2",
2346
+ "picomatch": "^2.3.1"
2347
+ },
2348
+ "engines": {
2349
+ "node": ">=14.0.0"
2350
+ },
2351
+ "peerDependencies": {
2352
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
2353
+ },
2354
+ "peerDependenciesMeta": {
2355
+ "rollup": {
2356
+ "optional": true
2357
+ }
2358
+ }
2359
+ },
2360
+ "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
2361
+ "version": "2.0.2",
2362
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
2363
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
2364
+ "dev": true,
2365
+ "license": "MIT"
2366
+ },
2367
  "node_modules/@rollup/rollup-android-arm-eabi": {
2368
  "version": "4.24.0",
2369
  "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz",
 
6735
  "node": ">=8.0"
6736
  }
6737
  },
6738
+ "node_modules/tosource": {
6739
+ "version": "2.0.0-alpha.3",
6740
+ "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz",
6741
+ "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==",
6742
+ "dev": true,
6743
+ "engines": {
6744
+ "node": ">=10"
6745
+ }
6746
+ },
6747
  "node_modules/ts-api-utils": {
6748
  "version": "1.3.0",
6749
  "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
package.json CHANGED
@@ -63,6 +63,7 @@
63
  },
64
  "devDependencies": {
65
  "@eslint/js": "^9.9.0",
 
66
  "@tailwindcss/typography": "^0.5.15",
67
  "@types/node": "^22.5.5",
68
  "@types/react": "^18.3.3",
 
63
  },
64
  "devDependencies": {
65
  "@eslint/js": "^9.9.0",
66
+ "@modyfi/vite-plugin-yaml": "^1.1.1",
67
  "@tailwindcss/typography": "^0.5.15",
68
  "@types/node": "^22.5.5",
69
  "@types/react": "^18.3.3",
src/components/ConferenceCard.tsx CHANGED
@@ -1,28 +1,39 @@
1
-
2
- import { CalendarDays, Globe, Tag } from "lucide-react";
3
-
4
- interface ConferenceCardProps {
5
- name: string;
6
- date: string;
7
- location: string;
8
- deadline: string;
9
- daysLeft: number;
10
- tags: string[];
11
- }
12
 
13
  const ConferenceCard = ({
14
- name,
 
15
  date,
16
- location,
17
  deadline,
18
- daysLeft,
19
- tags,
20
- }: ConferenceCardProps) => {
 
 
 
 
 
 
21
  return (
22
- <div className="conference-card animate-fade-in">
23
  <div className="flex justify-between items-start mb-4">
24
- <h3 className="text-xl font-semibold">{name}</h3>
25
- <div className="countdown">{daysLeft}d</div>
 
 
 
 
 
 
 
 
 
 
 
 
26
  </div>
27
 
28
  <div className="space-y-2 mb-4">
@@ -32,22 +43,38 @@ const ConferenceCard = ({
32
  </div>
33
  <div className="flex items-center text-neutral">
34
  <Globe className="h-4 w-4 mr-2" />
35
- <span className="text-sm">{location}</span>
36
  </div>
37
- </div>
38
-
39
- <div className="flex flex-wrap gap-2 mb-4">
40
- {tags.map((tag) => (
41
- <span key={tag} className="tag">
42
- <Tag className="h-3 w-3 mr-1" />
43
- {tag}
44
  </span>
45
- ))}
 
 
 
 
 
46
  </div>
47
 
48
- <div className="text-sm text-neutral-dark">
49
- Deadline: {deadline}
50
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  </div>
52
  );
53
  };
 
1
+ import { CalendarDays, Globe, Tag, Clock } from "lucide-react";
2
+ import { Conference } from "@/types/conference";
3
+ import { formatDistanceToNow, parseISO } from "date-fns";
 
 
 
 
 
 
 
 
4
 
5
  const ConferenceCard = ({
6
+ title,
7
+ full_name,
8
  date,
9
+ place,
10
  deadline,
11
+ timezone,
12
+ tags = [],
13
+ link,
14
+ note,
15
+ abstract_deadline,
16
+ }: Conference) => {
17
+ const deadlineDate = deadline && deadline !== 'TBD' ? parseISO(deadline) : null;
18
+ const daysLeft = deadlineDate ? formatDistanceToNow(deadlineDate, { addSuffix: true }) : 'TBD';
19
+
20
  return (
21
+ <div className="conference-card">
22
  <div className="flex justify-between items-start mb-4">
23
+ <div>
24
+ <h3 className="text-xl font-semibold">{title}</h3>
25
+ {full_name && <p className="text-sm text-neutral-600">{full_name}</p>}
26
+ </div>
27
+ {link && (
28
+ <a
29
+ href={link}
30
+ target="_blank"
31
+ rel="noopener noreferrer"
32
+ className="text-primary hover:underline text-sm"
33
+ >
34
+ Website →
35
+ </a>
36
+ )}
37
  </div>
38
 
39
  <div className="space-y-2 mb-4">
 
43
  </div>
44
  <div className="flex items-center text-neutral">
45
  <Globe className="h-4 w-4 mr-2" />
46
+ <span className="text-sm">{place}</span>
47
  </div>
48
+ <div className="flex items-center text-neutral">
49
+ <Clock className="h-4 w-4 mr-2" />
50
+ <span className="text-sm">
51
+ Deadline: {deadline === 'TBD' ? 'TBD' : `${deadline} (${timezone})`}
 
 
 
52
  </span>
53
+ {abstract_deadline && (
54
+ <span className="text-sm text-red-500 ml-2">
55
+ Abstract: {abstract_deadline}
56
+ </span>
57
+ )}
58
+ </div>
59
  </div>
60
 
61
+ {Array.isArray(tags) && tags.length > 0 && (
62
+ <div className="flex flex-wrap gap-2 mb-4">
63
+ {tags.map((tag) => (
64
+ <span key={tag} className="tag">
65
+ <Tag className="h-3 w-3 mr-1" />
66
+ {tag}
67
+ </span>
68
+ ))}
69
+ </div>
70
+ )}
71
+
72
+ {note && (
73
+ <div
74
+ className="text-sm text-neutral-600 mt-2"
75
+ dangerouslySetInnerHTML={{ __html: note }}
76
+ />
77
+ )}
78
  </div>
79
  );
80
  };
src/components/FilterBar.tsx CHANGED
@@ -1,27 +1,44 @@
 
 
1
 
2
- const filters = [
3
- { id: "All", label: "All", description: "All Conferences" },
4
- { id: "ML", label: "Machine Learning", description: "Machine Learning" },
5
- { id: "CV", label: "Computer Vision", description: "Computer Vision" },
6
- { id: "NLP", label: "Natural Language", description: "Natural Language Processing" },
7
- { id: "RO", label: "Robotics", description: "Robotics & Automation" },
8
- { id: "SP", label: "Signal Processing", description: "Signal Processing" },
9
- { id: "DM", label: "Data Mining", description: "Data Mining & Analytics" },
10
- { id: "AP", label: "Applied AI", description: "Applied AI & Applications" },
11
- { id: "KR", label: "Knowledge Repr.", description: "Knowledge Representation" },
12
- { id: "HCI", label: "Human-AI", description: "Human-Computer Interaction" },
13
- ];
 
 
 
 
 
 
 
 
 
 
 
14
 
15
- const FilterBar = () => {
16
  return (
17
  <div className="w-full py-4 overflow-x-auto bg-white border-b border-neutral-light animate-fade-in">
18
  <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
19
  <div className="flex space-x-4">
20
- {filters.map((filter) => (
21
  <button
22
  key={filter.id}
23
  title={filter.description}
24
- className="px-4 py-2 text-sm font-medium rounded-lg hover:bg-primary/10 hover:text-primary transition-colors"
 
 
 
 
 
25
  >
26
  {filter.label}
27
  </button>
 
1
+ import { useMemo } from "react";
2
+ import conferencesData from "@/data/conferences.yml";
3
 
4
+ interface FilterBarProps {
5
+ selectedTag: string;
6
+ onTagSelect: (tag: string) => void;
7
+ }
8
+
9
+ const FilterBar = ({ selectedTag, onTagSelect }: FilterBarProps) => {
10
+ const uniqueTags = useMemo(() => {
11
+ const tags = new Set<string>();
12
+ if (Array.isArray(conferencesData)) {
13
+ conferencesData.forEach(conf => {
14
+ if (Array.isArray(conf.tags)) {
15
+ conf.tags.forEach(tag => tags.add(tag));
16
+ }
17
+ });
18
+ }
19
+ return ["All", ...Array.from(tags)].map(tag => ({
20
+ id: tag,
21
+ label: tag.split("-").map(word =>
22
+ word.charAt(0).toUpperCase() + word.slice(1)
23
+ ).join(" "),
24
+ description: tag === "All" ? "All Conferences" : `${tag} Conferences`
25
+ }));
26
+ }, []);
27
 
 
28
  return (
29
  <div className="w-full py-4 overflow-x-auto bg-white border-b border-neutral-light animate-fade-in">
30
  <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
31
  <div className="flex space-x-4">
32
+ {uniqueTags.map((filter) => (
33
  <button
34
  key={filter.id}
35
  title={filter.description}
36
+ onClick={() => onTagSelect(filter.id)}
37
+ className={`px-4 py-2 text-sm font-medium rounded-lg transition-colors ${
38
+ selectedTag === filter.id
39
+ ? "bg-primary text-white"
40
+ : "hover:bg-primary/10 hover:text-primary"
41
+ }`}
42
  >
43
  {filter.label}
44
  </button>
src/components/Header.tsx CHANGED
@@ -1,7 +1,10 @@
1
-
2
  import { Search } from "lucide-react";
3
 
4
- const Header = () => {
 
 
 
 
5
  return (
6
  <header className="w-full py-6 px-4 sm:px-6 lg:px-8 bg-white shadow-sm animate-fade-in">
7
  <div className="max-w-7xl mx-auto">
@@ -19,6 +22,7 @@ const Header = () => {
19
  <input
20
  type="text"
21
  placeholder="Search conferences..."
 
22
  className="w-full pl-10 pr-4 py-2 border border-neutral-200 rounded-lg focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary bg-neutral-50"
23
  />
24
  <Search className="absolute left-3 top-2.5 h-5 w-5 text-neutral" />
 
 
1
  import { Search } from "lucide-react";
2
 
3
+ interface HeaderProps {
4
+ onSearch: (query: string) => void;
5
+ }
6
+
7
+ const Header = ({ onSearch }: HeaderProps) => {
8
  return (
9
  <header className="w-full py-6 px-4 sm:px-6 lg:px-8 bg-white shadow-sm animate-fade-in">
10
  <div className="max-w-7xl mx-auto">
 
22
  <input
23
  type="text"
24
  placeholder="Search conferences..."
25
+ onChange={(e) => onSearch(e.target.value)}
26
  className="w-full pl-10 pr-4 py-2 border border-neutral-200 rounded-lg focus:outline-none focus:border-primary focus:ring-1 focus:ring-primary bg-neutral-50"
27
  />
28
  <Search className="absolute left-3 top-2.5 h-5 w-5 text-neutral" />
src/data/conferences.yml ADDED
@@ -0,0 +1,493 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ - title: WACV
2
+ year: 2025
3
+ id: wacv25
4
+ full_name: IEEE/CVF Winter Conference on Applications of Computer Vision
5
+ link: https://wacv2025.thecvf.com/
6
+ deadline: '2024-07-14 23:59:59'
7
+ timezone: America/Los_Angeles
8
+ place: Tucson, Arizona
9
+ date: Feb 28 – Mar 4, 2025
10
+ start: 2025-2-28
11
+ end: 2025-3-4
12
+ tags:
13
+ - machine-learning
14
+ - computer-vision
15
+
16
+ - title: WSDM
17
+ year: 2025
18
+ id: wsdm25
19
+ full_name: ACM International Conference on Web Search and Data Mining
20
+ note: Abstract deadline on August 7, 2024
21
+ link: https://www.wsdm-conference.org/2025/
22
+ deadline: '2024-08-14 23:59:00'
23
+ timezone: UTC-12
24
+ place: Hannover, Germany
25
+ date: March 10-14, 2025
26
+ start: 2025-03-10
27
+ end: 2025-03-14
28
+ tags:
29
+ - web-search
30
+ - data-mining
31
+
32
+ - title: AAAI
33
+ year: 2025
34
+ id: aaai25
35
+ full_name: AAAI Conference on Artificial Intelligence
36
+ link: https://aaai.org/conference/aaai/aaai-25/
37
+ deadline: '2024-08-15 23:59:59'
38
+ abstract_deadline: '2024-08-07 23:59:59'
39
+ timezone: UTC-12
40
+ place: Philadelphia, USA
41
+ date: February 25 - March 04, 2025
42
+ start: 2025-02-25
43
+ end: 2025-03-04
44
+ hindex: 212
45
+ tags:
46
+ - data-mining
47
+ - machine-learning
48
+ - natural-language-processing
49
+ - computer-vision
50
+ note: Mandatory abstract deadline on Aug 07, 2024, and supplementary material deadline
51
+ on Aug 19, 2024. More info <a href='https://aaai.org/conference/aaai/aaai-25/'>here</a>.
52
+
53
+ - title: WACV
54
+ year: 2025
55
+ id: wacv25_2
56
+ full_name: IEEE/CVF Winter Conference on Applications of Computer Vision
57
+ link: https://wacv2025.thecvf.com/
58
+ deadline: '2024-09-09 23:59:59'
59
+ timezone: UTC-7
60
+ place: Tucson, Arizona
61
+ date: Feb 28 – Mar 4, 2025
62
+ start: 2025-2-28
63
+ end: 2025-3-4
64
+ hindex: 109
65
+ tags:
66
+ - machine-learning
67
+ - computer-vision
68
+ note: This is the second round of submissions. Summplementary material deadline
69
+ on Sep 11, 2024. More info <a href='https://wacv2025.thecvf.com/'>here</a>.
70
+
71
+ - title: ICASSP
72
+ year: 2025
73
+ id: icassp25
74
+ link: https://2025.ieeeicassp.org/
75
+ deadline: '2024-09-09 23:59:59'
76
+ timezone: UTC-12
77
+ place: Hyderabad, India
78
+ date: April 6-11, 2025
79
+ start: 2025-04-6
80
+ end: 2025-04-11
81
+ tags:
82
+ - signal-processing
83
+
84
+ - title: CHI
85
+ year: 2025
86
+ id: chi25
87
+ full_name: The ACM Conference on Human Factors in Computing Systems
88
+ link: https://chi2025.acm.org/
89
+ deadline: '2024-09-12 23:59:59'
90
+ abstract_deadline: '2024-09-05 23:59:59'
91
+ timezone: UTC-12
92
+ place: Yokohama, Japan
93
+ date: April 26 - May 01, 2025
94
+ start: 2025-04-26
95
+ end: 2025-05-01
96
+ hindex: 122
97
+ tags:
98
+ - human-computer-interaction
99
+ note: Mandatory abstract deadline on Sep 05, 2024. More info <a href='https://chi2025.acm.org/for-authors/papers/'>here</a>.
100
+
101
+ - title: ICRA
102
+ year: 2025
103
+ id: icra25
104
+ link: https://2025.ieee-icra.org
105
+ deadline: '2024-09-15 23:59:59'
106
+ timezone: America/Los_Angeles
107
+ place: Atlanta, USA
108
+ date: May 19 - May 23, 2025
109
+ start: 2025-05-19
110
+ end: 2025-05-23
111
+ hindex: 119
112
+ tags:
113
+ - robotics
114
+
115
+ - title: COLING
116
+ year: 2025
117
+ id: coling25
118
+ full_name: The 31st International Conference on Computational Linguistics
119
+ link: https://coling2025.org/
120
+ deadline: '2024-09-16 23:59:59'
121
+ timezone: UTC-12
122
+ place: Abu Dhabi, UAE
123
+ date: January 19-24, 2025
124
+ start: 2025-01-19
125
+ end: 2025-01-24
126
+ hindex: 73
127
+ tags:
128
+ - natural-language-processing
129
+ note: More info can be found <a href="https://coling2025.org/calls/main_conference_papers/#important-dates">here</a>.
130
+
131
+ - title: ALT
132
+ year: 2025
133
+ id: alt2025
134
+ full_name: International Conference on Algorithmic Learning Theory
135
+ link: https://algorithmiclearningtheory.org/alt2025/
136
+ deadline: '2024-10-01 09:59:59'
137
+ timezone: UTC+0
138
+ place: Milan, Italy
139
+ date: February 24-27, 2025
140
+ tags:
141
+ - machine-learning
142
+ note: 'Rankings: CCF: C, CORE: B, THCPL: B'
143
+
144
+ - title: ICLR
145
+ year: 2025
146
+ id: iclr25
147
+ link: https://iclr.cc/Conferences/2025/CallForPapers
148
+ deadline: '2024-10-01 23:59:59'
149
+ abstract_deadline: '2024-09-27 23:59:59'
150
+ timezone: UTC-12
151
+ place: Singapore
152
+ date: Apr 24-28, 2025
153
+ start: 2025-04-24
154
+ end: 2025-04-28
155
+ hindex: 304
156
+ tags:
157
+ - machine-learning
158
+ - computer-vision
159
+ - natural-language-processing
160
+ - signal-processing
161
+ note: Mandatory abstract deadline on September 27, 2024. More info <a href='https://iclr.cc/Conferences/2025/CallForPapers'>here</a>.
162
+
163
+ - title: ECIR
164
+ year: 2025
165
+ id: ecir25
166
+ full_name: European Conference on Information Retrieval
167
+ link: https://ecir2025.eu/
168
+ deadline: '2024-10-09 23:59:59'
169
+ abstract_deadline: '2024-10-02 23:59:59'
170
+ timezone: UTC-12
171
+ place: Lucca, Tuscany, Italy
172
+ date: April 6 - April 10, 2025
173
+ start: 2025-04-06
174
+ end: 2025-04-10
175
+ tags:
176
+ - data-mining
177
+ note: Abstract deadline on Oct 2, 2024. More info <a href='https://ecir2025.eu/'>here</a>.
178
+
179
+ - title: AISTATS
180
+ year: 2025
181
+ id: aistats25
182
+ link: https://aistats.org/aistats2025/index.html
183
+ deadline: '2024-10-10 23:59:59'
184
+ abstract_deadline: '2024-10-03 23:59:59'
185
+ timezone: UTC-12
186
+ place: Phuket, Thailand
187
+ date: May 03-05, 2025
188
+ start: 2025-05-03
189
+ end: 2025-05-05
190
+ hindex: 100
191
+ tags:
192
+ - machine-learning
193
+ note: Abstract deadline on October 3, 2024. More info <a href='https://aistats.org/aistats2025/call-for-papers.html'>here</a>
194
+
195
+ - title: NAACL
196
+ year: 2025
197
+ id: naacl25
198
+ link: https://2025.naacl.org
199
+ deadline: '2024-10-15 23:59:59'
200
+ timezone: UTC-12
201
+ place: Albuquerque, New Mexico, USA
202
+ date: April 29 - May 4, 2024
203
+ start: 2025-04-29
204
+ end: 2025-05-04
205
+ hindex: 132
206
+ tags:
207
+ - natural-language-processing
208
+ note: All submissions must be done through ARR. More info <a href='https://2025.naacl.org/calls/papers/'>here</a>.
209
+
210
+ - title: AAMAS
211
+ year: 2025
212
+ id: aamas25
213
+ link: https://aamas2025.org/
214
+ deadline: '2024-10-16 23:59:59'
215
+ abstract_deadline: '2024-10-09 23:59:59'
216
+ timezone: UTC-12
217
+ place: Detroit, Michigan, USA
218
+ date: May 19 - May 23, 2025
219
+ start: 2025-05-19
220
+ end: 2025-05-23
221
+ tags:
222
+ - machine-learning
223
+ - robotics
224
+ note: Mandatory abstract deadline on Oct 09, 2024. More info <a href='https://aamas2025.org/'>here</a>.
225
+
226
+ - title: CVPR
227
+ year: 2025
228
+ id: cvpr25
229
+ link: https://cvpr.thecvf.com/Conferences/2025
230
+ deadline: '2024-11-15 06:59:59'
231
+ abstract_deadline: '2024-11-08 06:59:59'
232
+ timezone: GMT
233
+ place: Nashville, Tennessee, USA
234
+ date: June 10-17, 2025
235
+ start: 2025-06-10
236
+ end: 2025-06-17
237
+ hindex: 389
238
+ tags:
239
+ - computer-vision
240
+ note: Mandatory paper registration deadline on November 07, 2023. More info <a href='https://cvpr.thecvf.com/Conferences/2025'>here</a>.
241
+
242
+ - title: ESANN
243
+ year: 2025
244
+ id: esann25
245
+ full_name: European Symposium on Artificial Neural Networks, Computational Intelligence
246
+ and Machine Learning
247
+ link: https://www.esann.org/
248
+ deadline: '2024-11-20 00:00:00'
249
+ timezone: UTC-8
250
+ place: Bruges, Belgium
251
+ date: April 23 - April 25, 2025
252
+ tags:
253
+ - machine-learning
254
+ abstract_deadline: '2024-11-20 00:00:00'
255
+ note: 'Rankings: CCF: N, CORE: B, THCPL: N'
256
+
257
+ - title: CPAL
258
+ year: 2025
259
+ id: cpal25
260
+ full_name: The Conference on Parsimony and Learning
261
+ link: https://cpal.cc/
262
+ deadline: '2024-11-25 23:59:59'
263
+ timezone: AoE
264
+ place: California, USA
265
+ date: March 24-27, 2025
266
+ tags:
267
+ - machine-learning
268
+ note: 'Rankings: CCF: N, CORE: N, THCPL: N'
269
+
270
+ - title: CEC
271
+ year: 2025
272
+ id: cec2025
273
+ full_name: IEEE Congress on Evolutionary Computation
274
+ link: https://www.cec2025.org/
275
+ deadline: '2025-01-15 23:59:59'
276
+ timezone: UTC-12
277
+ place: Hangzhou, China
278
+ date: June 8-12, 2025
279
+ tags:
280
+ - machine-learning
281
+ note: 'Rankings: CCF: N, CORE: B, THCPL: N'
282
+
283
+ - title: IJCAI
284
+ year: 2025
285
+ id: ijcai25
286
+ full_name: International Joint Conference on Artificial Intelligence
287
+ link: https://2025.ijcai.org/
288
+ deadline: '2025-01-23 23:59:59'
289
+ timezone: UTC-12
290
+ place: Montreal, Canada.
291
+ date: August 16-22, 2025
292
+ tags:
293
+ - machine-learning
294
+ abstract_deadline: '2025-01-16 23:59:59'
295
+ note: 'Rankings: CCF: A, CORE: A*, THCPL: B'
296
+
297
+ - title: RSS
298
+ year: 2025
299
+ id: rss25
300
+ full_name: Robotics Science and Systems
301
+ link: https://roboticsconference.org
302
+ deadline: '2025-01-24 23:59:00'
303
+ timezone: AoE
304
+ place: Los Angeles, California, USA
305
+ date: June 21-25, 2025
306
+ tags:
307
+ - machine-learning
308
+ abstract_deadline: '2025-01-17 23:59:00'
309
+ note: 'Rankings: CCF: N, CORE: A*, THCPL: A'
310
+
311
+ - title: ICML
312
+ year: 2025
313
+ id: icml25
314
+ full_name: International Conference on Machine Learning
315
+ link: https://icml.cc/Conferences/2025
316
+ deadline: '2025-01-30 23:59:59'
317
+ timezone: UTC-12
318
+ place: Vancouver Convention Center, Vancouver, Canada
319
+ date: July 11-19, 2025
320
+ tags:
321
+ - machine-learning
322
+ abstract_deadline: '2025-01-23 23:59:59'
323
+ note: 'Rankings: CCF: A, CORE: A*, THCPL: A'
324
+
325
+ - title: IJCNN
326
+ year: 2025
327
+ id: ijcnn2025
328
+ full_name: International Joint Conference on Neural Networks
329
+ link: https://2025.ijcnn.org/
330
+ deadline: '2025-02-05 23:59:59'
331
+ timezone: UTC-12
332
+ place: Rome, Italy
333
+ date: June 30 - July 5, 2025
334
+ tags:
335
+ - machine-learning
336
+ note: 'Rankings: CCF: C, CORE: B, THCPL: B'
337
+
338
+ - title: COLT
339
+ year: 2025
340
+ id: colt25
341
+ full_name: Annual Conference on Learning Theory
342
+ link: https://learningtheory.org/colt2025/
343
+ deadline: '2025-02-06 16:59:59'
344
+ timezone: UTC-5
345
+ place: Lyon, France
346
+ date: June 30 - July 4, 2025
347
+ tags:
348
+ - machine-learning
349
+ note: 'Rankings: CCF: B, CORE: A*, THCPL: A'
350
+
351
+ - title: UAI
352
+ year: 2025
353
+ id: uai25
354
+ full_name: Conference on Uncertainty in Artificial Intelligence
355
+ link: https://www.auai.org/uai2025/
356
+ deadline: '2025-02-10 23:59:59'
357
+ timezone: AoE
358
+ place: Rio de Janeiro, Brazil
359
+ date: July 21-25, 2025
360
+ tags:
361
+ - machine-learning
362
+ note: 'Rankings: CCF: B, CORE: A, THCPL: B'
363
+
364
+ - title: ACL
365
+ year: 2025
366
+ id: acl25
367
+ full_name: Annual Meeting of the Association for Computational Linguistics
368
+ link: https://2025.aclweb.org/
369
+ deadline: '2025-02-15 23:59:59'
370
+ timezone: UTC-12
371
+ place: Vienna, Austria
372
+ date: July 27 - August 1, 2025
373
+ tags: AI
374
+ note: 'Rankings: CCF: A, CORE: A*, THCPL: A'
375
+
376
+ - title: IROS
377
+ year: 2025
378
+ id: iros25
379
+ full_name: IEEE\RSJ International Conference on Intelligent Robots and Systems
380
+ link: http://www.iros25.org/
381
+ deadline: '2025-03-01 23:59:59'
382
+ timezone: UTC-8
383
+ place: Hangzhou, China
384
+ date: October 19-25, 2025
385
+ tags: AI
386
+ note: 'Rankings: CCF: C, CORE: A, THCPL: B'
387
+
388
+ - title: KSEM
389
+ year: 2025
390
+ id: ksem25
391
+ full_name: International Conference on Knowledge Science, Engineering and Management
392
+ link: https://ksem2025.scimeeting.cn/
393
+ deadline: '2025-03-04 23:59:59'
394
+ timezone: UTC+0
395
+ place: Macao SAR, China
396
+ date: August 4-6, 2025
397
+ tags: AI
398
+ note: 'Rankings: CCF: C, CORE: C, THCPL: N'
399
+
400
+ - title: ICDAR
401
+ year: 2025
402
+ id: icdar2025
403
+ full_name: International Conference on Document Analysis and Recognition
404
+ link: https://www.icdar2025.com/home
405
+ deadline: '2025-03-07 23:59:59'
406
+ timezone: UTC+0
407
+ place: Wuhan, China
408
+ date: September 17-21, 2025
409
+ tags: AI
410
+ abstract_deadline: '2025-02-28 23:59:59'
411
+ note: 'Rankings: CCF: C, CORE: A, THCPL: B'
412
+
413
+ - title: ICCV
414
+ year: 2025
415
+ id: iccv25
416
+ full_name: IEEE International Conference on Computer Vision
417
+ link: https://iccv.thecvf.com/Conferences/2025
418
+ deadline: '2025-03-08 09:59:59'
419
+ timezone: UTC+0
420
+ place: Honolulu, Hawaii
421
+ date: October 19-25, 2025
422
+ tags:
423
+ - machine-learning
424
+ - computer-vision
425
+ note: 'Rankings: CCF: A, CORE: A*, THCPL: A'
426
+
427
+ - title: ICANN
428
+ year: 2025
429
+ id: icann2025
430
+ full_name: International Conference on Artificial Neural Networks
431
+ link: https://e-nns.org/icann2025/
432
+ deadline: '2025-03-15 23:59:59'
433
+ timezone: AoE
434
+ place: Kaunas, Lithuania
435
+ date: Sept 9-12, 2025
436
+ tags:
437
+ - machine-learning
438
+ note: 'Rankings: CCF: C, CORE: C, THCPL: N'
439
+
440
+ - title: COLM
441
+ year: 2025
442
+ id: colm25
443
+ full_name: Conference on Language Modeling
444
+ link: https://colmweb.org/cfp.html
445
+ deadline: '2025-03-27 23:59:59'
446
+ timezone: AoE
447
+ place: Palais des Congrès Montreal, Canada
448
+ date: October 7-9, 2025
449
+ tags:
450
+ - natural-language-processing
451
+ abstract_deadline: '2025-03-20 23:59:59'
452
+ note: 'Rankings: CCF: N, CORE: N, THCPL: N'
453
+
454
+ - title: ECAI
455
+ year: 2025
456
+ id: ecai25
457
+ full_name: European Conference on Artificial Intelligence
458
+ link: https://ecai2025.org/deadlines/
459
+ deadline: '2025-05-06 23:59:59'
460
+ timezone: UTC-12
461
+ place: Bologna, ITALY
462
+ date: October 25-30, 2025
463
+ tags:
464
+ - machine-learning
465
+ abstract_deadline: '2025-04-29 23:59:59'
466
+ note: 'Rankings: CCF: B, CORE: A, THCPL: N'
467
+
468
+ - title: EMNLP
469
+ year: 2025
470
+ id: emnlp25
471
+ full_name: The annual Conference on Empirical Methods in Natural Language Processing
472
+ link: https://2025.emnlp.org/
473
+ deadline: '2025-05-19 23:59:59'
474
+ timezone: UTC-12
475
+ place: Suzhou, China
476
+ date: November 5 - 9, 2025
477
+ tags:
478
+ - natural-language-processing
479
+ note: 'Rankings: CCF: B, CORE: A*, THCPL: A'
480
+
481
+ - title: ICRA
482
+ year: 2026
483
+ id: icra26
484
+ full_name: IEEE International Conference on Robotics and Automation
485
+ link: https://www.ieee-ras.org/conferences-workshops/fully-sponsored/icra
486
+ deadline: TBD
487
+ timezone: UTC+1
488
+ place: Vienna, Austria
489
+ date: Jun 1-5, 2026
490
+ tags:
491
+ - machine-learning
492
+ - robotics
493
+ note: 'Rankings: CCF: B, CORE: A*, THCPL: A'
src/pages/Index.tsx CHANGED
@@ -1,44 +1,55 @@
1
-
2
  import Header from "@/components/Header";
3
  import FilterBar from "@/components/FilterBar";
4
  import ConferenceCard from "@/components/ConferenceCard";
5
-
6
- const conferences = [
7
- {
8
- name: "ICLR 2024",
9
- date: "May 7-11, 2024",
10
- location: "Vienna, Austria",
11
- deadline: "Sep 28, 2023, 8:00 PM UTC",
12
- daysLeft: 45,
13
- tags: ["ML", "DL", "AI"],
14
- },
15
- {
16
- name: "CVPR 2024",
17
- date: "June 17-21, 2024",
18
- location: "Seattle, USA",
19
- deadline: "Nov 10, 2023, 11:59 PM UTC",
20
- daysLeft: 60,
21
- tags: ["CV", "ML", "AI"],
22
- },
23
- {
24
- name: "NeurIPS 2024",
25
- date: "December 8-14, 2024",
26
- location: "Vancouver, Canada",
27
- deadline: "May 17, 2024, 11:59 PM UTC",
28
- daysLeft: 120,
29
- tags: ["ML", "AI", "DL"],
30
- },
31
- ];
32
 
33
  const Index = () => {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  return (
35
  <div className="min-h-screen bg-neutral-light">
36
- <Header />
37
- <FilterBar />
38
  <main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
39
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
40
- {conferences.map((conference) => (
41
- <ConferenceCard key={conference.name} {...conference} />
42
  ))}
43
  </div>
44
  </main>
 
 
1
  import Header from "@/components/Header";
2
  import FilterBar from "@/components/FilterBar";
3
  import ConferenceCard from "@/components/ConferenceCard";
4
+ import conferencesData from "@/data/conferences.yml";
5
+ import { Conference } from "@/types/conference";
6
+ import { useState, useMemo, useEffect } from "react";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
  const Index = () => {
9
+ const [selectedTag, setSelectedTag] = useState("All");
10
+ const [searchQuery, setSearchQuery] = useState("");
11
+
12
+ // Add debug logging
13
+ useEffect(() => {
14
+ console.log("Conferences data:", conferencesData);
15
+ }, []);
16
+
17
+ const filteredConferences = useMemo(() => {
18
+ if (!Array.isArray(conferencesData)) {
19
+ console.error("Conferences data is not an array:", conferencesData);
20
+ return [];
21
+ }
22
+
23
+ return conferencesData
24
+ .filter((conf: Conference) => {
25
+ const matchesTag = selectedTag === "All" || conf.tags.includes(selectedTag);
26
+ const matchesSearch = searchQuery === "" ||
27
+ conf.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
28
+ (conf.full_name && conf.full_name.toLowerCase().includes(searchQuery.toLowerCase()));
29
+ return matchesTag && matchesSearch;
30
+ })
31
+ .sort((a: Conference, b: Conference) =>
32
+ new Date(a.deadline).getTime() - new Date(b.deadline).getTime()
33
+ );
34
+ }, [selectedTag, searchQuery]);
35
+
36
+ // Add debug logging for filtered conferences
37
+ useEffect(() => {
38
+ console.log("Filtered conferences:", filteredConferences);
39
+ }, [filteredConferences]);
40
+
41
+ if (!Array.isArray(conferencesData)) {
42
+ return <div>Loading conferences...</div>;
43
+ }
44
+
45
  return (
46
  <div className="min-h-screen bg-neutral-light">
47
+ <Header onSearch={setSearchQuery} />
48
+ <FilterBar selectedTag={selectedTag} onTagSelect={setSelectedTag} />
49
  <main className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
50
  <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
51
+ {filteredConferences.map((conference: Conference) => (
52
+ <ConferenceCard key={conference.id} {...conference} />
53
  ))}
54
  </div>
55
  </main>
src/types/conference.ts ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ export interface Conference {
2
+ title: string;
3
+ year: number;
4
+ id: string;
5
+ full_name?: string;
6
+ link: string;
7
+ deadline: string;
8
+ timezone: string;
9
+ place: string;
10
+ date: string;
11
+ start?: string;
12
+ end?: string;
13
+ tags: string[];
14
+ abstract_deadline?: string;
15
+ note?: string;
16
+ hindex?: number;
17
+ }
src/types/yaml.d.ts ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ declare module '*.yml' {
2
+ const data: any;
3
+ export default data;
4
+ }
vite.config.ts CHANGED
@@ -2,6 +2,7 @@ import { defineConfig } from "vite";
2
  import react from "@vitejs/plugin-react-swc";
3
  import path from "path";
4
  import { componentTagger } from "lovable-tagger";
 
5
 
6
  // https://vitejs.dev/config/
7
  export default defineConfig(({ mode }) => ({
@@ -13,6 +14,10 @@ export default defineConfig(({ mode }) => ({
13
  react(),
14
  mode === 'development' &&
15
  componentTagger(),
 
 
 
 
16
  ].filter(Boolean),
17
  resolve: {
18
  alias: {
 
2
  import react from "@vitejs/plugin-react-swc";
3
  import path from "path";
4
  import { componentTagger } from "lovable-tagger";
5
+ import yaml from "@modyfi/vite-plugin-yaml";
6
 
7
  // https://vitejs.dev/config/
8
  export default defineConfig(({ mode }) => ({
 
14
  react(),
15
  mode === 'development' &&
16
  componentTagger(),
17
+ yaml({
18
+ include: 'src/data/**/*.yml',
19
+ stringify: true,
20
+ }),
21
  ].filter(Boolean),
22
  resolve: {
23
  alias: {