nielsr HF staff commited on
Commit
32addc2
·
1 Parent(s): 7033dcf

Add metadata

Browse files
Files changed (6) hide show
  1. .dockerignore +8 -0
  2. Dockerfile +32 -0
  3. README.md +23 -0
  4. nginx.conf +25 -0
  5. src/components/Header.tsx +13 -1
  6. src/pages/Calendar.tsx +16 -1
.dockerignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ node_modules
2
+ dist
3
+ .git
4
+ .gitignore
5
+ .env
6
+ .env.*
7
+ *.log
8
+ README.md
Dockerfile ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Build stage
2
+ FROM node:20-slim AS builder
3
+
4
+ # Set working directory
5
+ WORKDIR /app
6
+
7
+ # Copy package files
8
+ COPY package*.json ./
9
+
10
+ # Install dependencies
11
+ RUN npm install
12
+
13
+ # Copy project files
14
+ COPY . .
15
+
16
+ # Build the app
17
+ RUN npm run build
18
+
19
+ # Production stage
20
+ FROM nginx:alpine
21
+
22
+ # Copy built assets from builder stage
23
+ COPY --from=builder /app/dist /usr/share/nginx/html
24
+
25
+ # Copy nginx configuration
26
+ COPY nginx.conf /etc/nginx/conf.d/default.conf
27
+
28
+ # Expose port 7860 (default for Hugging Face Spaces)
29
+ EXPOSE 7860
30
+
31
+ # Start nginx
32
+ CMD ["nginx", "-g", "daemon off;"]
README.md CHANGED
@@ -1,3 +1,12 @@
 
 
 
 
 
 
 
 
 
1
  # Welcome to your Lovable project
2
 
3
  ## Project info
@@ -67,3 +76,17 @@ Simply open [Lovable](https://lovable.dev/projects/5c0b5f16-c917-4e43-9d0c-03c32
67
  ## I want to use a custom domain - is that possible?
68
 
69
  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/)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: AI Deadlines
3
+ emoji: ⚡
4
+ colorFrom: gray
5
+ colorTo: blue
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
  # Welcome to your Lovable project
11
 
12
  ## Project info
 
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:
83
+
84
+ ```bash
85
+ docker build -t ai-deadlines .
86
+ ```
87
+
88
+ Next it can be run as follows:
89
+
90
+ ```bash
91
+ docker run -it -p 7860:7860 ai-deadlines
92
+ ```
nginx.conf ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ server {
2
+ listen 7860;
3
+ server_name _;
4
+ root /usr/share/nginx/html;
5
+ index index.html;
6
+
7
+ # Enable gzip compression
8
+ gzip on;
9
+ gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
10
+
11
+ location / {
12
+ try_files $uri $uri/ /index.html;
13
+ }
14
+
15
+ # Cache static assets
16
+ location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
17
+ expires 30d;
18
+ add_header Cache-Control "public, no-transform";
19
+ }
20
+
21
+ # Security headers
22
+ add_header X-Frame-Options "SAMEORIGIN";
23
+ add_header X-XSS-Protection "1; mode=block";
24
+ add_header X-Content-Type-Options "nosniff";
25
+ }
src/components/Header.tsx CHANGED
@@ -1,4 +1,3 @@
1
-
2
  import { Search } from "lucide-react";
3
  import { Input } from "@/components/ui/input";
4
  import { Link } from "react-router-dom";
@@ -48,6 +47,19 @@ const Header = ({ onSearch }: HeaderProps) => {
48
  </div>
49
  </div>
50
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  </div>
52
  </header>
53
  );
 
 
1
  import { Search } from "lucide-react";
2
  import { Input } from "@/components/ui/input";
3
  import { Link } from "react-router-dom";
 
47
  </div>
48
  </div>
49
  </div>
50
+ <div className="max-w-4xl mx-auto text-center">
51
+ <p className="text-sm text-neutral-600 py-4">
52
+ Countdowns to top CV/NLP/ML/Robotics/AI conference deadlines. To add/edit a conference, send in a{' '}
53
+ <a
54
+ href="https://github.com/NielsRogge/ai-deadlines-hub"
55
+ target="_blank"
56
+ rel="noopener noreferrer"
57
+ className="text-primary hover:underline"
58
+ >
59
+ pull request
60
+ </a>.
61
+ </p>
62
+ </div>
63
  </div>
64
  </header>
65
  );
src/pages/Calendar.tsx CHANGED
@@ -1,7 +1,7 @@
1
  import { useState } from "react";
2
  import conferencesData from "@/data/conferences.yml";
3
  import { Conference } from "@/types/conference";
4
- import { Calendar as CalendarIcon, Tag, X } from "lucide-react"; // Added X import
5
  import { Calendar } from "@/components/ui/calendar";
6
  import { parseISO, format, isValid, isSameMonth, isSameYear, isSameDay, isSameWeek } from "date-fns";
7
  import { Toggle } from "@/components/ui/toggle";
@@ -444,6 +444,21 @@ const CalendarPage = () => {
444
  </TooltipProvider>
445
  ))}
446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  {selectedCategories.size > 0 && (
448
  <button
449
  onClick={() => {
 
1
  import { useState } from "react";
2
  import conferencesData from "@/data/conferences.yml";
3
  import { Conference } from "@/types/conference";
4
+ import { Calendar as CalendarIcon, Tag, X, Plus } from "lucide-react"; // Added X and Plus imports
5
  import { Calendar } from "@/components/ui/calendar";
6
  import { parseISO, format, isValid, isSameMonth, isSameYear, isSameDay, isSameWeek } from "date-fns";
7
  import { Toggle } from "@/components/ui/toggle";
 
444
  </TooltipProvider>
445
  ))}
446
 
447
+ {selectedCategories.size < Object.keys(categoryColors).length && (
448
+ <button
449
+ onClick={() => {
450
+ setSelectedCategories(new Set(Object.keys(categoryColors)));
451
+ setShowDeadlines(true);
452
+ }}
453
+ className="text-sm text-green-600 bg-green-50 hover:bg-green-100 hover:text-green-700
454
+ px-3 py-1.5 rounded-lg border border-green-200
455
+ transition-colors flex items-center gap-2"
456
+ >
457
+ <Plus className="h-4 w-4" />
458
+ Select All
459
+ </button>
460
+ )}
461
+
462
  {selectedCategories.size > 0 && (
463
  <button
464
  onClick={() => {