Spaces:
Running
Running
Update README
Browse files- README.md +17 -45
- src/components/ConferenceDialog.tsx +56 -42
- src/data/conferences.yml +19 -1
- src/types/conference.ts +7 -0
README.md
CHANGED
@@ -7,23 +7,17 @@ sdk: docker
|
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
-
#
|
11 |
|
12 |
## Project info
|
13 |
|
14 |
-
|
15 |
|
16 |
-
|
17 |
|
18 |
-
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
Simply visit the [Lovable Project](https://lovable.dev/projects/5c0b5f16-c917-4e43-9d0c-03c32081e407) and start prompting.
|
23 |
-
|
24 |
-
Changes made via Lovable will be committed automatically to this repo.
|
25 |
-
|
26 |
-
**Use your preferred IDE**
|
27 |
|
28 |
If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable.
|
29 |
|
@@ -33,10 +27,10 @@ Follow these steps:
|
|
33 |
|
34 |
```sh
|
35 |
# Step 1: Clone the repository using the project's Git URL.
|
36 |
-
git clone
|
37 |
|
38 |
# Step 2: Navigate to the project directory.
|
39 |
-
cd
|
40 |
|
41 |
# Step 3: Install the necessary dependencies.
|
42 |
npm i
|
@@ -45,38 +39,6 @@ npm i
|
|
45 |
npm run dev
|
46 |
```
|
47 |
|
48 |
-
**Edit a file directly in GitHub**
|
49 |
-
|
50 |
-
- Navigate to the desired file(s).
|
51 |
-
- Click the "Edit" button (pencil icon) at the top right of the file view.
|
52 |
-
- Make your changes and commit the changes.
|
53 |
-
|
54 |
-
**Use GitHub Codespaces**
|
55 |
-
|
56 |
-
- Navigate to the main page of your repository.
|
57 |
-
- Click on the "Code" button (green button) near the top right.
|
58 |
-
- Select the "Codespaces" tab.
|
59 |
-
- Click on "New codespace" to launch a new Codespace environment.
|
60 |
-
- Edit files directly within the Codespace and commit and push your changes once you're done.
|
61 |
-
|
62 |
-
## What technologies are used for this project?
|
63 |
-
|
64 |
-
This project is built with .
|
65 |
-
|
66 |
-
- Vite
|
67 |
-
- TypeScript
|
68 |
-
- React
|
69 |
-
- shadcn-ui
|
70 |
-
- Tailwind CSS
|
71 |
-
|
72 |
-
## How can I deploy this project?
|
73 |
-
|
74 |
-
Simply open [Lovable](https://lovable.dev/projects/5c0b5f16-c917-4e43-9d0c-03c32081e407) and click on Share -> Publish.
|
75 |
-
|
76 |
-
## I want to use a custom domain - is that possible?
|
77 |
-
|
78 |
-
We don't support custom domains (yet). If you want to deploy your project under your own domain then we recommend using Netlify. Visit our docs for more details: [Custom domains](https://docs.lovable.dev/tips-tricks/custom-domain/)
|
79 |
-
|
80 |
## Deploy with Docker
|
81 |
|
82 |
First build the Docker image as follows:
|
@@ -90,3 +52,13 @@ Next it can be run as follows:
|
|
90 |
```bash
|
91 |
docker run -it -p 7860:7860 ai-deadlines
|
92 |
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
+
# AI Conference Deadlines
|
11 |
|
12 |
## Project info
|
13 |
|
14 |
+
This project is entirely based on the awesome http://aideadlines.org/. It's an up-to-date version along with a new UI.
|
15 |
|
16 |
+
It was bootstrapped using [Lovable](https://lovable.dev/) and [Cursor](https://www.cursor.com/).
|
17 |
|
18 |
+
**URL**: https://huggingface.co/spaces/huggingface/ai-deadlines
|
19 |
|
20 |
+
## How to run locally
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable.
|
23 |
|
|
|
27 |
|
28 |
```sh
|
29 |
# Step 1: Clone the repository using the project's Git URL.
|
30 |
+
git clone https://github.com/NielsRogge/ai-deadlines-hub
|
31 |
|
32 |
# Step 2: Navigate to the project directory.
|
33 |
+
cd ai-deadlines-hub
|
34 |
|
35 |
# Step 3: Install the necessary dependencies.
|
36 |
npm i
|
|
|
39 |
npm run dev
|
40 |
```
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
## Deploy with Docker
|
43 |
|
44 |
First build the Docker image as follows:
|
|
|
52 |
```bash
|
53 |
docker run -it -p 7860:7860 ai-deadlines
|
54 |
```
|
55 |
+
|
56 |
+
## Technologies used
|
57 |
+
|
58 |
+
This project is built with:
|
59 |
+
|
60 |
+
- Vite
|
61 |
+
- TypeScript
|
62 |
+
- React
|
63 |
+
- shadcn-ui
|
64 |
+
- Tailwind CSS
|
src/components/ConferenceDialog.tsx
CHANGED
@@ -3,6 +3,7 @@ import {
|
|
3 |
DialogContent,
|
4 |
DialogHeader,
|
5 |
DialogTitle,
|
|
|
6 |
} from "@/components/ui/dialog";
|
7 |
import { CalendarDays, Globe, Tag, Clock, AlarmClock, CalendarPlus } from "lucide-react";
|
8 |
import { Conference } from "@/types/conference";
|
@@ -170,56 +171,65 @@ END:VCALENDAR`;
|
|
170 |
|
171 |
return (
|
172 |
<Dialog open={open} onOpenChange={onOpenChange}>
|
173 |
-
<DialogContent className="
|
174 |
<DialogHeader>
|
175 |
-
<DialogTitle
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
<p className="text-sm text-neutral-600">{conference.full_name}</p>
|
180 |
-
)}
|
181 |
</DialogHeader>
|
182 |
-
|
183 |
-
<div className="space-y-4
|
184 |
-
<div className="flex
|
185 |
-
<
|
186 |
-
|
187 |
-
<
|
188 |
-
|
189 |
-
<div className="flex items-center text-neutral">
|
190 |
-
<Globe className="h-5 w-5 mr-3 flex-shrink-0" />
|
191 |
-
<a
|
192 |
-
href={generateGoogleMapsUrl(conference.venue, conference.place)}
|
193 |
-
target="_blank"
|
194 |
-
rel="noopener noreferrer"
|
195 |
-
className="hover:text-primary hover:underline"
|
196 |
-
onClick={(e) => e.stopPropagation()}
|
197 |
-
>
|
198 |
-
{conference.place}
|
199 |
-
</a>
|
200 |
</div>
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
)}
|
208 |
</div>
|
209 |
</div>
|
210 |
-
<div className="flex items-center">
|
211 |
-
<AlarmClock className={`h-5 w-5 mr-3 flex-shrink-0 ${getCountdownColor()}`} />
|
212 |
-
<span className={`font-medium ${getCountdownColor()}`}>
|
213 |
-
{daysLeft}
|
214 |
-
</span>
|
215 |
-
</div>
|
216 |
</div>
|
217 |
|
218 |
-
|
219 |
-
<
|
220 |
-
|
|
|
|
|
|
|
|
|
|
|
221 |
</div>
|
222 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
223 |
|
224 |
{Array.isArray(conference.tags) && conference.tags.length > 0 && (
|
225 |
<div className="flex flex-wrap gap-2">
|
@@ -259,7 +269,11 @@ END:VCALENDAR`;
|
|
259 |
|
260 |
<DropdownMenu>
|
261 |
<DropdownMenuTrigger asChild>
|
262 |
-
<Button
|
|
|
|
|
|
|
|
|
263 |
<CalendarPlus className="h-4 w-4 mr-2" />
|
264 |
Add to Calendar
|
265 |
</Button>
|
|
|
3 |
DialogContent,
|
4 |
DialogHeader,
|
5 |
DialogTitle,
|
6 |
+
DialogDescription,
|
7 |
} from "@/components/ui/dialog";
|
8 |
import { CalendarDays, Globe, Tag, Clock, AlarmClock, CalendarPlus } from "lucide-react";
|
9 |
import { Conference } from "@/types/conference";
|
|
|
171 |
|
172 |
return (
|
173 |
<Dialog open={open} onOpenChange={onOpenChange}>
|
174 |
+
<DialogContent className="max-w-2xl">
|
175 |
<DialogHeader>
|
176 |
+
<DialogTitle>{conference.title} {conference.year}</DialogTitle>
|
177 |
+
<DialogDescription>
|
178 |
+
{conference.full_name}
|
179 |
+
</DialogDescription>
|
|
|
|
|
180 |
</DialogHeader>
|
181 |
+
|
182 |
+
<div className="space-y-4">
|
183 |
+
<div className="flex items-start gap-2">
|
184 |
+
<CalendarDays className="h-5 w-5 mt-0.5 text-gray-500" />
|
185 |
+
<div>
|
186 |
+
<p className="font-medium">Conference Dates</p>
|
187 |
+
<p className="text-sm text-gray-500">{conference.date}</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
</div>
|
189 |
+
</div>
|
190 |
+
|
191 |
+
<div className="flex items-start gap-2">
|
192 |
+
<Clock className="h-5 w-5 mt-0.5 text-gray-500" />
|
193 |
+
<div className="space-y-2">
|
194 |
+
<p className="font-medium">Important Deadlines</p>
|
195 |
+
<div className="text-sm text-gray-500 space-y-1">
|
196 |
+
{conference.abstract_deadline && (
|
197 |
+
<p>Abstract: {conference.abstract_deadline}</p>
|
198 |
+
)}
|
199 |
+
<p>Submission: {conference.deadline}</p>
|
200 |
+
{conference.commitment_deadline && (
|
201 |
+
<p>Commitment: {conference.commitment_deadline}</p>
|
202 |
+
)}
|
203 |
+
{conference.review_release_date && (
|
204 |
+
<p>Reviews Released: {conference.review_release_date}</p>
|
205 |
+
)}
|
206 |
+
{(conference.rebuttal_period_start || conference.rebuttal_period_end) && (
|
207 |
+
<p>Rebuttal Period: {conference.rebuttal_period_start} - {conference.rebuttal_period_end}</p>
|
208 |
+
)}
|
209 |
+
{conference.final_decision_date && (
|
210 |
+
<p>Final Decision: {conference.final_decision_date}</p>
|
211 |
)}
|
212 |
</div>
|
213 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
</div>
|
215 |
|
216 |
+
<div className="flex items-start gap-2">
|
217 |
+
<Globe className="h-5 w-5 mt-0.5 text-gray-500" />
|
218 |
+
<div>
|
219 |
+
<p className="font-medium">Location</p>
|
220 |
+
<p className="text-sm text-gray-500">{conference.place}</p>
|
221 |
+
{conference.venue && (
|
222 |
+
<p className="text-sm text-gray-500">{conference.venue}</p>
|
223 |
+
)}
|
224 |
</div>
|
225 |
+
</div>
|
226 |
+
|
227 |
+
<div className="flex items-center">
|
228 |
+
<AlarmClock className={`h-5 w-5 mr-3 flex-shrink-0 ${getCountdownColor()}`} />
|
229 |
+
<span className={`font-medium ${getCountdownColor()}`}>
|
230 |
+
{daysLeft}
|
231 |
+
</span>
|
232 |
+
</div>
|
233 |
|
234 |
{Array.isArray(conference.tags) && conference.tags.length > 0 && (
|
235 |
<div className="flex flex-wrap gap-2">
|
|
|
269 |
|
270 |
<DropdownMenu>
|
271 |
<DropdownMenuTrigger asChild>
|
272 |
+
<Button
|
273 |
+
variant="ghost"
|
274 |
+
size="sm"
|
275 |
+
className="text-sm focus-visible:ring-0 focus:outline-none"
|
276 |
+
>
|
277 |
<CalendarPlus className="h-4 w-4 mr-2" />
|
278 |
Add to Calendar
|
279 |
</Button>
|
src/data/conferences.yml
CHANGED
@@ -313,6 +313,8 @@
|
|
313 |
tags:
|
314 |
- machine-learning
|
315 |
abstract_deadline: '2025-01-23 23:59:59'
|
|
|
|
|
316 |
|
317 |
- title: IJCNN
|
318 |
year: 2025
|
@@ -363,8 +365,12 @@
|
|
363 |
timezone: UTC-12
|
364 |
place: Vienna, Austria
|
365 |
date: July 27 - August 1, 2025
|
|
|
|
|
366 |
tags:
|
367 |
- natural-language-processing
|
|
|
|
|
368 |
|
369 |
- title: IROS
|
370 |
year: 2025
|
@@ -528,4 +534,16 @@
|
|
528 |
start: 2025-08-10
|
529 |
end: 2025-08-14
|
530 |
tags:
|
531 |
-
- computer-graphics
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
tags:
|
314 |
- machine-learning
|
315 |
abstract_deadline: '2025-01-23 23:59:59'
|
316 |
+
submission_deadline: '2025-01-31 03:59:59'
|
317 |
+
timezone_submission: PST
|
318 |
|
319 |
- title: IJCNN
|
320 |
year: 2025
|
|
|
365 |
timezone: UTC-12
|
366 |
place: Vienna, Austria
|
367 |
date: July 27 - August 1, 2025
|
368 |
+
start: 2025-07-27
|
369 |
+
end: 2025-08-01
|
370 |
tags:
|
371 |
- natural-language-processing
|
372 |
+
commitment_deadline: '2025-04-10 23:59:59'
|
373 |
+
note: 'ARR commitment deadline on April 10th, 2025. More info <a href="https://2025.aclweb.org/">here</a>.'
|
374 |
|
375 |
- title: IROS
|
376 |
year: 2025
|
|
|
534 |
start: 2025-08-10
|
535 |
end: 2025-08-14
|
536 |
tags:
|
537 |
+
- computer-graphics
|
538 |
+
|
539 |
+
- title: KDD
|
540 |
+
year: 2025
|
541 |
+
id: kdd25
|
542 |
+
full_name: ACM SIGKDD Conference on Knowledge Discovery and Data Mining
|
543 |
+
deadline: '2025-02-10 23:59:59'
|
544 |
+
abstract_deadline: '2025-02-03 23:59:59'
|
545 |
+
timezone: AoE
|
546 |
+
tags:
|
547 |
+
- data-mining
|
548 |
+
- machine-learning
|
549 |
+
note: 'Abstract deadline on February 3rd, 2025. Paper submission deadline February 10th, 2025 AoE.'
|
src/types/conference.ts
CHANGED
@@ -14,4 +14,11 @@ export interface Conference {
|
|
14 |
abstract_deadline?: string;
|
15 |
note?: string;
|
16 |
hindex?: number;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
}
|
|
|
14 |
abstract_deadline?: string;
|
15 |
note?: string;
|
16 |
hindex?: number;
|
17 |
+
commitment_deadline?: string;
|
18 |
+
submission_deadline?: string;
|
19 |
+
timezone_submission?: string;
|
20 |
+
rebuttal_period_start?: string;
|
21 |
+
rebuttal_period_end?: string;
|
22 |
+
review_release_date?: string;
|
23 |
+
final_decision_date?: string;
|
24 |
}
|