A comprehensive calendar and scheduling application for managing appointments, team availability, and accelerations.
- 📅 Calendar management with day, week, and month views
- 👥 Team-based scheduling and availability management
- 📊 Capacity planning with visual timeline
- 🚀 Acceleration request system with approval workflow
- 📋 Customizable SOW and email templates
- 🔐 Role-based access control (Admin, CPM, Engineer, Managers)
- 📆 Blocked dates and capacity override management
- 🕒 Time off request system
- 📈 Engineer shift scheduling
- 🔄 Microsoft Teams meeting integration
- 🎨 Light/dark theme support
- Node.js 23.9.0
- React 19
- TypeScript
- Vite
- Tailwind CSS
- Lucide React Icons
- Vitest for testing
- Zustand for state management
- React Router v6
- date-fns for date manipulation
- Node.js 23.9.0+
- npm
-
Clone the repository:
git clone https://github.com/yourusername/calendar-tool.git cd calendar-tool
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
Run the test suite:
npm test
Run tests with coverage:
npm run coverage
src/
├── components/ # Reusable UI components
├── features/ # Feature-specific code and business logic
├── hooks/ # Custom React hooks
├── lib/ # Utilities and configurations
├── pages/ # Page components
├── store/ # Global state management
├── types/ # TypeScript type definitions
└── utils/ # Helper functions and utilities
- Day, week, and month views
- Visual timeline of appointments
- Teams meeting integration
- Drag and drop scheduling
- Team-based organization
- Engineer assignment
- Role-based permissions
- Shift scheduling
- Weekly schedule configuration
- Capacity planning
- Blocked dates
- Date-specific overrides
- Time off requests
- Product type configuration
- Change type management
- Duration settings
- Exclusive change types
- SOW templates
- Email templates
- Variable substitution
- Active template management
- Request submission
- Approval workflow
- Custom fields
- Priority levels
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Use TypeScript for type safety
- Follow ESLint configuration
- Use functional components with hooks
- Implement proper error handling
- Write unit tests for critical functionality
- Keep components focused and reusable
- Use TypeScript interfaces for props
- Implement proper loading and error states
- Follow accessibility best practices
- Use Zustand for global state
- Implement proper state persistence
- Handle loading and error states
- Use React Query for data fetching
- Write unit tests for critical functionality
- Test error handling
- Test edge cases
- Maintain good test coverage
- Implement proper memoization
- Optimize re-renders
- Use proper TypeScript types
- Follow React best practices
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production buildnpm test
- Run testsnpm run coverage
- Generate test coveragenpm run lint
- Run ESLint
The following environment variables are required:
VITE_TEAMS_API_KEY=your_teams_api_key
This project is licensed under the MIT License - see the LICENSE file for details.