{"id":21927963,"url":"https://github.com/mam-dev/cosmo","last_synced_at":"2025-05-05T19:55:40.872Z","repository":{"id":31984590,"uuid":"35554985","full_name":"mam-dev/cosmo","owner":"mam-dev","description":"Cosmo Calendar Server implements the server side of the CalDAV protocol.","archived":false,"fork":false,"pushed_at":"2024-09-11T05:26:11.000Z","size":3971,"stargazers_count":80,"open_issues_count":19,"forks_count":45,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-03-30T23:12:41.121Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mam-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-13T14:48:26.000Z","updated_at":"2024-11-27T01:12:35.000Z","dependencies_parsed_at":"2022-08-26T11:50:56.687Z","dependency_job_id":"e1970c40-09f7-4c8d-9f29-37d5d9fb0e0e","html_url":"https://github.com/mam-dev/cosmo","commit_stats":null,"previous_names":["mam-dev/cosmo"],"tags_count":147,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mam-dev%2Fcosmo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mam-dev%2Fcosmo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mam-dev%2Fcosmo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mam-dev%2Fcosmo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mam-dev","download_url":"https://codeload.github.com/mam-dev/cosmo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252568411,"owners_count":21769440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T22:19:32.089Z","updated_at":"2025-05-05T19:55:40.846Z","avatar_url":"https://github.com/mam-dev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cosmo\n\n## Introduction\t\n\nCosmo Calendar Server is part of an open source project called Chandler which provides calendaring features,\ntask and note management. Cosmo implements CalDAV protocol. \nIt is being used as Calendar Server solution for WEB.DE, GMX.net, GMX.com and mail.com brands. \n\nThis project contains only CalDAV core part from Chandler with its dependencies up to date \n(initial project being closed in 2008).\n\nIt also brings a new approach in such a way that Cosmo is a CalDAV runtime environment. The project provides an API\nthat contains abstractions over CalDAV and iCal specific objects, services implemented in Cosmo Core but also accessible\nto developers and a plugin mechanism that allows developers to write custom logic without having to alter Cosmo Core code.\n\n\n## Main parts\n\nThere are two main logical components, each of them residing in its own artifact: cosmo-api and cosmo-core.\n\n ``cosmo-api`` contains:\n\n - interfaces which are contracts between the CalDAV runtime environment\n   and an implementation of such an interface\n - externalizable services definitions (interfaces) whose actual implementations are placed in cosmo-core and can be injected (externalized) into client components\n - POJOs and interfaces that are abstractions of CalDAV components\n - annotations that are used to specify that an implementation of some contract must be plugged into the CalDAV runtime environment\n - annotations that tells the runtime environment container that it should inject some (public) service implementation.\n\n\n``cosmo-core`` is the actual CalDAV server and runtime environment for developer custom components. It looks up for such components at \napplication context startup and registers them in order to be called during requests. \nIt also injects public services into developer components.\n\n\n## Technical requirements\n\nThe application that uses cosmo-api and cosmo-core must be Spring Boot application.\n\nSetting up a CalDAV server with cosmo-api and cosmo-core.\n\nTo be able to run the application one needs to configure the following:\n * At least one (concrete) implementation of ``org.springframework.security.core.AuthenticationProvider`` annotated with ``@Component`` \n * Exactly one (concrete) implementation of ``org.unitedinternet.cosmo.db.DataSourceProvider``\n * One Spring Boot application main class annotated with ``@SpringBootApplication``\n\nTo be able to override one default implementation Spring ``@Primary`` annotation can be used.\n\n\n## Building and running the existing demo application\n\nThe cosmo-webapp application is just for demo purposes.\nTo launch it, in the project's root directory (cosmo-webapp) just run ``mvn spring-boot:run``.\nThe calendar server will start using an in-memory database (data will be lost when the application stops).\nIt will be available for CalDAV requests at http://localhost:8080/cosmo/dav/.\nThe application simply creates a user if it does not exists and it does not check the password.\nTo create a collection for a new user a MKCALENDAR request is needed like :\n\n`curl -X\"MKCALENDAR\" -H\"Content-Type:application/xml\" -u${your_email}:${your_passwd} http://localhost:8080/cosmo/dav/${your_email}/calendar`\n\nThe newly created collection can be configured in Mozilla Lightning application for instance by using the URL: `http://localhost:8080/cosmo/dav/${your_email}/calendar`\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmam-dev%2Fcosmo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmam-dev%2Fcosmo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmam-dev%2Fcosmo/lists"}