2024-10-17 09:07:19 +00:00
# Calendar Merger Project
2024-10-09 23:35:22 +00:00
2024-10-17 09:07:19 +00:00
## Overview
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
The Calendar Merger project is a web application that allows users to merge multiple calendars into a single calendar. It provides a simple and intuitive interface for users to:
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
- Add calendars
- Specify prefixes for each calendar
- Override event summaries if desired
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
The application also generates a unique URL for the merged calendar and updates it every hour using a cron job.
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
## Features
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
- Merge multiple calendars into a single calendar
- Specify prefixes for each calendar
- Optionally override event summaries
- Generate a unique URL for the merged calendar
- Automatically update the merged calendar every hour
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
## Requirements
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
- [Node.js ](https://nodejs.org/ ) (version 14 or higher)
- [npm ](https://www.npmjs.com/ ) (included with Node.js)
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
## Installation
2024-10-16 16:08:43 +00:00
2024-10-17 09:07:19 +00:00
1. Clone the repository:
```bash
2024-10-17 09:29:50 +00:00
git clone git@forge.ftt.gmbh:ryanmwangi/CalMerger.git
2024-10-17 09:07:19 +00:00
```
2024-10-16 16:08:43 +00:00
2024-10-17 09:07:19 +00:00
2. Install the dependencies:
```bash
npm install
```
2024-10-16 16:08:43 +00:00
2024-10-17 09:07:19 +00:00
3. Start the server:
```bash
npm start
```
2024-10-16 16:08:43 +00:00
2024-11-03 23:02:30 +00:00
## Running Tests
This project uses [Jest ](https://jestjs.io/ ) for testing to ensure the Calendar Merger works as expected.
### Run the test suite:
```bash
npm test
```
Jest will automatically locate and execute all test files, providing pass/fail status and error details in your terminal.
For additional insights, you can run tests in coverage mode:
```bash
npm test -- --coverage
```
This generates a `coverage` report, showing how much of the codebase is tested.
2024-10-17 09:07:19 +00:00
## Key Terms
2024-10-16 16:08:43 +00:00
2024-10-17 09:07:19 +00:00
- **Calendar Feed**: A data format that allows users to subscribe to calendar events (e.g., iCalendar `.ics` format).
- **Webcal**: A URL scheme for subscribing to calendar feeds, often used with iCalendar files.
- **CalDAV**: An internet standard for accessing and managing calendar data on remote servers.
- **Prefix**: A string added to the beginning of a calendar feed URL or identifier for organization.
- **Merged Feed**: A single calendar feed combining multiple sources into one unified view.
2024-10-16 16:08:43 +00:00
2024-10-17 09:07:19 +00:00
## Usage
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
1. Open a web browser and navigate to `http://localhost:3000` .
2. Click the **Add Calendar** button to add a new calendar.
3. Enter the Link Group Name, calendar URL, prefix, and override options (if needed).
4. Click the **Merge Calendars** button to generate the merged calendar.
5. The merged calendar URL will be displayed on the page.
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
## API Endpoints
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
- `GET /` : Returns the `index.html` file.
- `POST /merge` : Merges the calendars and returns the merged calendar URL.
- `GET /:filename` : Returns the merged calendar file.
2024-10-09 23:32:42 +00:00
2024-10-17 09:07:19 +00:00
## Contributing
2024-10-09 23:35:05 +00:00
2024-10-17 09:07:19 +00:00
Contributions are welcome! If you'd like to contribute:
1. Fork the repository.
2. Make your changes.
3. Submit a pull request.
---