An intuitive web-based scheduler application for managing multi-location events with participant tracking and export capabilities.
Features • Getting Started • Usage • Export Options • Tech Stack
- Create and manage multiple locations/rooms/stages (columns)
- Drag-and-drop reordering of locations
- Visual organization of concurrent events
- Add and manage participants across all events
- Assign multiple participants to each task
- Track participant schedules and workload
- Prevent scheduling conflicts for the same participant
- Detailed participant statistics with task breakdown
- Multiple projects
- Drag-and-drop task creation and repositioning
- Resize tasks to adjust duration
- Visual time-based calendar view
- Adjustable interval precision
- Time conflict detection for participants
- Automatic local storage saving
- Import/Export configurations via base64-encoded URLs
- Share schedules with team members easily
- Screenshot Export: Capture entire schedule as PNG
- Bulk Export: Download all participant schedules as ZIP of individual PDFs with task details
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/davidrojom/scheduler.git cd scheduler -
Install dependencies
npm install
-
Start development server
npm start
-
Open your browser
Navigate to http://localhost:4200
| Command | Description |
|---|---|
npm start |
Start dev server on localhost:4200 |
npm run start:host |
Start dev server accessible on network (0.0.0.0) |
npm run build |
Production build to dist/scheduler |
npm run watch |
Development build with watch mode |
npm test |
Run Karma/Jasmine tests |
-
Add Locations (Columns)
- Click the "Add Column" button
- Enter a name (e.g., "Main Stage", "Room A", "Workshop Area")
- Drag columns to reorder them
-
Add Participants
- Click "Manage Participants"
- Add participant names to your project
-
Create Tasks
- Click on the calendar to create a new task
- Set the task title
- Assign participants from the dropdown
- Adjust time by dragging edges or moving the entire block
-
Manage Your Schedule
- Drag tasks between columns to reassign locations
- Resize tasks to change duration
- Edit tasks by clicking on them
- Delete tasks or participants as needed
View detailed participant workload:
- Total time scheduled per participant
- Complete task breakdown with times and locations
- Task count and distribution
- Remove participants from specific tasks
- Delete participants entirely
Export a Schedule:
- Click "Share" → "Export Configuration"
- Copy the generated base64 code
- Share with team members
Import a Schedule:
- Click "Share" → "Import Configuration"
- Paste the base64 code
- Your schedule is loaded instantly
Download Options:
- Screenshot: Quick visual reference of entire schedule
- PDF Export: Individual participant schedules bundled in ZIP
- Captures the entire schedule grid as PNG
- Perfect for quick sharing and presentations
- High-resolution output
- One PDF per participant showing their assigned tasks
- Includes task names, times, locations, and durations
- Bundled in a ZIP file
- Generates a shareable base64 code
- No server required - all data in the link
- Angular 18 - Modern web framework with standalone components
- TypeScript 5.5 - Type-safe development
- RxJS - Reactive state management
- TailwindCSS - Utility-first CSS framework
- Bootstrap 5 - Component library
- ng-bootstrap - Angular Bootstrap components
- SCSS - Advanced styling
- angular-calendar-scheduler - Calendar component with drag-and-drop
- date-fns - Modern date manipulation
- angularx-flatpickr - Date picker
- @pdfme/generator - PDF generation engine
- html-to-image - Screenshot capture
- @zip.js/zip.js - ZIP file creation
- LocalStorage - Client-side data persistence
- BehaviorSubject - Reactive state management pattern
- Custom time ranges and intervals
- Multiple project support
- Mobile-responsive improvements
- Real-time collaboration via WebSockets
- Dark mode support
- Undo/Redo functionality
- Task color customization
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Angular
- Calendar component by angular-calendar-scheduler
- PDF generation by @pdfme
- Icons from Heroicons