3.6 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Calendar Merger Project
Overview
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:
- Add calendars
 - Specify prefixes for each calendar
 - Override event summaries if desired
 
The application also generates a unique URL for the merged calendar and updates it every hour using a cron job.
Features
- 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
 
Requirements
Installation
- 
Clone the repository:
git clone git@forge.ftt.gmbh:ryanmwangi/CalMerger.git - 
Install the dependencies:
npm install - 
Start the server:
npm start 
Building and Running with Docker
1. Build the Docker Image
Run the following command to build the Docker image:
docker build -t calmerger-app .
2. Run the Docker Container
To start the container, use:
docker run -d --name calmerger -p 3000:3000 calmerger-app
This maps the container's port 3000 to the host system's port 3000. The application will be accessible at http://localhost:3000.
3. Using Docker Compose (Optional)
If you prefer to use Docker Compose, ensure you have a docker-compose.yml file in your project directory. Then, run:
docker-compose up -d
This will automatically build and start the container based on the configuration in the docker-compose.yml file.
4. Stopping the Docker Container
To stop the running container, use:
docker stop calmerger
To remove the container:
docker rm calmerger
Running Tests
This project uses Jest for testing to ensure the Calendar Merger works as expected.
Run the test suite:
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:
npm test -- --coverage
This generates a coverage report, showing how much of the codebase is tested.
Key Terms
- Calendar Feed: A data format that allows users to subscribe to calendar events (e.g., iCalendar 
.icsformat). - 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.
 
Usage
- Open a web browser and navigate to 
http://localhost:3000. - Click the Add Calendar button to add a new calendar.
 - Enter the Link Group Name, calendar URL, prefix, and override options (if needed).
 - Click the Merge Calendars button to generate the merged calendar.
 - The merged calendar URL will be displayed on the page.
 
API Endpoints
GET /: Returns theindex.htmlfile.POST /merge: Merges the calendars and returns the merged calendar URL.GET /:filename: Returns the merged calendar file.
Contributing
Contributions are welcome! If you'd like to contribute:
- Fork the repository.
 - Make your changes.
 - Submit a pull request.