A web application for tracking events on a calendar based on ISO Week Numbers.
ISO Calendar Events provides a unique way to organize and view your events using the ISO 8601 week date system. The application supports both ISO week-based dates and traditional calendar dates, with various recurrence patterns and event tracking features.
- Dual Calendar Views: View events in both ISO Calendar and traditional calendar formats
- Event Management: Create, edit, and delete events with ease
- Flexible Date Types:
- ISO Dates (Year, ISO Week, Day Offset)
- Normal Dates (Year, Month, Day)
- Recurrence Patterns: Support for multiple recurrence options including daily, weekly, monthly, quarterly, and various yearly patterns
- Financial Tracking: Associate financial costs with events
- Color Coding: Organize events visually with custom colors
- Dark Mode: Toggle between light and dark themes
- Event List View: See all your events in a comprehensive list
- Each Year has 4 Quarters
- Each Quarter has 3 Months and 1 extra Week
- Each Month has 4 Weeks
- Each Week has 7 Days
- Leap weeks are appended to the 4th Quarter
- Frontend: React, TypeScript, SASS
- Backend: Node.js, Express.js
- Build Tool: esbuild
- Validation: Zod
- Node.js (v18 or higher recommended)
- npm
-
Clone the repository or navigate to the project directory
-
Install dependencies:
npm installTo run the development server with hot reloading:
npm run serveThe application will be available at http://localhost:3000
To build the project:
npm run buildThis will compile all TypeScript files and bundle the client application into the dist directory.
After building, start the production server:
npm startcl/
├── source/
│ ├── client/ # React client application
│ │ ├── components/ # React components
│ │ ├── context/ # React context providers
│ │ ├── styles/ # SASS stylesheets
│ │ ├── App.tsx # Main app component
│ │ └── index.tsx # Client entry point
│ ├── server/ # Express server
│ │ ├── routes/ # API routes
│ │ └── index.ts # Server entry point
│ └── common/ # Shared code (data models)
│ ├── Event.ts
│ ├── ISODate.ts
│ ├── NormalDate.ts
│ └── RecurrencePattern.ts
├── dist/ # Build output
├── index.html # HTML entry point
├── build.mjs # Build configuration
├── serve.mjs # Development server
└── package.json
npm run build- Compile TypeScript and bundle the applicationnpm run serve- Start development server with hot reloadingnpm start- Run the production server
GET /api/events- Retrieve all eventsGET /api/events/:id- Retrieve a specific eventPOST /api/events- Create a new eventPUT /api/events/:id- Update an existing eventDELETE /api/events/:id- Delete an eventGET /api/health- Health check endpoint
When contributing to this project, please follow the clean code principles outlined in CLAUDE.MD.
ISC