File size: 2,890 Bytes
0fc7363
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview
This is an AI Conference Deadlines web application that displays submission deadlines for top AI conferences like NeurIPS and ICLR. It's a React/TypeScript web app built with Vite, using shadcn-ui components and Tailwind CSS.

## Development Commands
```bash
# Install dependencies
npm i

# Start development server (runs on http://localhost:8080)
npm run dev

# Build for production
npm run build

# Build for development
npm run build:dev

# Lint code
npm run lint

# Preview production build
npm preview
```

## Architecture

### Core Structure
- **Frontend**: React 18 + TypeScript + Vite
- **UI Framework**: shadcn-ui components with Radix UI primitives
- **Styling**: Tailwind CSS with custom animations
- **Data Source**: Static YAML file (`src/data/conferences.yml`) updated via GitHub Actions
- **State Management**: React hooks, no external state management library

### Key Directories
- `src/components/` - React components (UI components in `ui/` subdirectory)
- `src/pages/` - Route components (Index, Calendar, NotFound)
- `src/data/` - Conference data in YAML format
- `src/types/` - TypeScript type definitions
- `src/utils/` - Utility functions for date handling and conference processing
- `src/hooks/` - Custom React hooks

### Main Components
- `ConferenceList` - Primary list view of conferences
- `ConferenceCard` - Individual conference display card
- `ConferenceDialog` - Detailed conference information modal
- `FilterBar` - Conference filtering and search functionality
- `ConferenceCalendar` - Calendar view of conferences
- `Header` - Navigation and app header

### Data Model
Conferences are defined by the `Conference` interface in `src/types/conference.ts` with properties including:
- Basic info: `title`, `year`, `id`, `full_name`, `link`
- Dates: `deadline`, `abstract_deadline`, `date`, `start`, `end`
- Location: `city`, `country`, `venue`
- Metadata: `tags`, `hindex`, `note`

### Configuration Files
- `vite.config.ts` - Vite configuration with YAML plugin for loading conference data
- `tailwind.config.ts` - Tailwind CSS configuration with custom theme
- `components.json` - shadcn-ui component configuration
- `tsconfig.json` - TypeScript configuration

### Data Updates
Conference data is automatically updated via GitHub Actions workflow (`.github/workflows/update-conferences.yml`) that fetches from ccfddl repository and creates pull requests with updates.

### Path Aliases
- `@/*` maps to `src/*` for cleaner imports

## Development Notes
- The app uses a YAML plugin to import conference data directly in components
- All UI components follow shadcn-ui patterns and conventions
- The project uses React Router for client-side routing
- Date handling uses `date-fns` and `date-fns-tz` for timezone support