Go to file
Ryan Mwangi 56e5f69cbb docs: add instructions on how to build and run the server with docker 2024-11-21 15:35:48 +03:00
public refactor: serve static files from a dedicated directory 2024-11-11 13:47:18 +03:00
src fix(import): enable compatibility between ES modules and CommonJS for ical.jsRenamed ical.js to ical.cjs to explicitly mark it as a CommonJS module and used `createRequire` to import it into the ES module project. This resolves module system conflicts and ensures seamless integration without modifying ical.js content. 2024-11-20 13:58:35 +03:00
test fix(lineendings): normalize calendar line endings to CRLF 2024-11-19 19:06:22 +03:00
.babelrc create Babel config file 2024-10-30 02:23:50 +03:00
.dockerignore build(docker): edit CMD to reference app.js to run the application 2024-11-21 14:53:09 +03:00
.gitattributes build(gitattributes): ics line feeds 2024-11-18 13:01:47 +01:00
.gitignore chore: add calendar directory to .gitignore 2024-11-07 16:05:18 +03:00
README.md docs: add instructions on how to build and run the server with docker 2024-11-21 15:35:48 +03:00
dockerfile build(docker): edit CMD to reference app.js to run the application 2024-11-21 14:53:09 +03:00
jest.config.js test: create jest.config,js file 2024-11-20 15:19:13 +03:00
package-lock.json build(babel): install babel/core, babel/plugin-transform-modules-commonjs, and babel-jest 2024-11-20 15:21:11 +03:00
package.json build(babel): install babel/core, babel/plugin-transform-modules-commonjs, and babel-jest 2024-11-20 15:21:11 +03:00

README.md

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

  • Node.js (version 14 or higher)
  • npm (included with Node.js)

Installation

  1. Clone the repository:

    git clone git@forge.ftt.gmbh:ryanmwangi/CalMerger.git
    
  2. Install the dependencies:

    npm install
    
  3. 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 .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.

Usage

  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.

API Endpoints

  • GET /: Returns the index.html file.
  • 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:

  1. Fork the repository.
  2. Make your changes.
  3. Submit a pull request.