Renaming part 1
This commit is contained in:
parent
36ac8d18ab
commit
29811fd4b5
20 changed files with 1424 additions and 582 deletions
89
CLAUDE.md
Normal file
89
CLAUDE.md
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Development Commands
|
||||
|
||||
### Build and Development
|
||||
- **Build TypeScript:** `npm run build` - Compiles TypeScript sources to JavaScript using esbuild
|
||||
- **Watch mode:** `npm run watch` - Continuously compiles TypeScript on file changes
|
||||
- **Clean build:** `npm run clean` - Removes compiled JavaScript files (uses PowerShell on Windows)
|
||||
- **Start server:** `dotnet run` - Starts the ASP.NET Core server on http://localhost:8000
|
||||
|
||||
### Typical Development Workflow
|
||||
1. Install dependencies: `npm install`
|
||||
2. Build TypeScript: `npm run build`
|
||||
3. Start server: `dotnet run`
|
||||
4. For active development, run `npm run watch` in a separate terminal
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
Calendar Plantempus is an event-driven calendar application with the following architecture:
|
||||
|
||||
### Core Principles
|
||||
- **Event-driven communication**: All components communicate via DOM CustomEvents through a central EventBus
|
||||
- **No global state**: Each manager maintains its own state
|
||||
- **Manager-based architecture**: Each manager has a specific responsibility
|
||||
- **Pure DOM manipulation**: No external JavaScript frameworks (React, Vue, etc.)
|
||||
- **TypeScript with esbuild**: Modern build tooling for fast compilation
|
||||
|
||||
### Key Components
|
||||
|
||||
#### EventBus (src/core/EventBus.ts)
|
||||
Central event dispatcher using DOM CustomEvents. All inter-component communication flows through this:
|
||||
```typescript
|
||||
// Example event emission
|
||||
eventBus.emit('calendar:view-changed', { view: 'week' });
|
||||
|
||||
// Example event subscription
|
||||
eventBus.on('calendar:view-changed', (event) => { /* handle */ });
|
||||
```
|
||||
|
||||
#### Manager Pattern
|
||||
Each manager is instantiated in `src/index.ts` and handles a specific domain:
|
||||
- **CalendarManager**: Main coordinator, initializes other managers
|
||||
- **ViewManager**: Handles day/week/month view switching
|
||||
- **NavigationManager**: Prev/next/today navigation
|
||||
- **EventManager**: CRUD operations for calendar events
|
||||
- **EventRenderer**: Visual rendering of events in the grid
|
||||
- **GridManager**: Creates and maintains the calendar grid structure
|
||||
- **ScrollManager**: Handles scroll position and time indicators
|
||||
- **DataManager**: Mock data loading and event data transformation
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
src/
|
||||
├── constants/ # Enums and constants (EventTypes)
|
||||
├── core/ # Core functionality (EventBus, CalendarConfig)
|
||||
├── managers/ # Manager classes (one per domain)
|
||||
├── types/ # TypeScript type definitions
|
||||
└── utils/ # Utility functions (DateUtils, PositionUtils)
|
||||
|
||||
wwwroot/
|
||||
├── css/ # Modular CSS files
|
||||
├── js/ # Compiled JavaScript output
|
||||
└── index.html # Main HTML entry point
|
||||
```
|
||||
|
||||
### CSS Architecture
|
||||
Modular CSS structure without external frameworks:
|
||||
- `calendar-base-css.css`: CSS custom properties and base styles
|
||||
- `calendar-components-css.css`: UI components
|
||||
- `calendar-events-css.css`: Event styling and colors
|
||||
- `calendar-layout-css.css`: Grid and layout
|
||||
- `calendar-popup-css.css`: Popup and modal styles
|
||||
|
||||
### Event Naming Convention
|
||||
Events follow the pattern `category:action`:
|
||||
- `calendar:*` - General calendar events
|
||||
- `grid:*` - Grid-related events
|
||||
- `event:*` - Event data changes
|
||||
- `navigation:*` - Navigation actions
|
||||
- `view:*` - View changes
|
||||
|
||||
### TypeScript Configuration
|
||||
- Target: ES2020
|
||||
- Module: ESNext
|
||||
- Strict mode enabled
|
||||
- Source maps enabled
|
||||
- Output directory: `./js`
|
||||
Loading…
Add table
Add a link
Reference in a new issue