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 | 
             
            } 
         | 

