Skip to content

reexjungle/xcal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is xCal?

The xCal project is a free and open source software (FOSS) project that basically does 2 things:

  1. Implements the Internet Calendaring and Scheduling Core Object Specification (RFC 5545), such that calendaring and scheduling information (events, to-dos, journals and free/busy) can be represented and exchanged in iCalendar and other data formats independently of calendar service or protocol.

  2. Develops a software service library to facilitate the setup and hosting of REST-ful calendar services, in which operations to access and edit distributed calendar data are exposed by means of an API.

Why xCal?

First of all, xCal is needed because there is a poor online presence of .NET implementations of vCalendar. xCal is free - yes 'free' as in 'free air' and not 'free' as in 'free beer'.

Secondly, xCal allows you to host and maintain your calendar data on your own server - that is, you have total control over your calendar information and thus in no way is your private data shared with third parties.

Thirdly, you shall enjoy distributing calendar information in multiple data formats that include:

Fourthly, xCal discourages you from reinventing the wheel. Instead of creating your own custom calendaring and scheduling system, it offers you a firsthand implementation of the internet standard (RFC 5545), thus freeing up the potential development time you could have wasted, in order to concentrate on other important tasks at hand.

Finally, you gain the awesome benefits of using xCal as an open source software. These include low costs, quality improvement through continuous community input, business agility and mitigation of business risks.

Table of Contents

  1. Get Started
  2. Dependencies
  3. Contributing
  4. Documentation
  5. Versioning
  6. Community
  7. License

Get Started

To get started on the xCal, you might want to choose one of the following options:

  1. Preview a demo of xCal web serivices.
  2. Download the master repository ZIP file from GitHub.
  3. Clone the master repository on desktop using the Github application.
  4. Download core xCal service interface binaries (i.e. libraries and dependencies of xcal.service.interfaces.concretes) as a raw Nuget package from the Nuget Gallery
  5. Install core xCal service interface binaries via the Project Mangager Console in Visual studio e.g.
PM> Install-Package xcal.service.interfaces.concretes -Pre
Note: xCal service interface binaries are not standalone binaries; they should be referenced by application servers e.g. web servers, windows services using the Service Stack V3 Web Services Framework.

Contents of Download Package

The download package contains source codes and project files of xCal. It is also worth mentioning here that xCal is a .NET-based solution. Hence its source files are logically organized as projects grouped under a single solution. Each project is compiled to its reespective assembly (*dll) files. The solution structure is illustrated below:

solution/
├── servers/
|   ├── xcal.server.web.dev1
|   ├── xcal.servers.web.dev2
|   ├── xcal.servers.web.prod1
|   ├── xcal.servers.web.prod2
|   ├── xcal.servers.web.local
├── crosscut/
|   ├── crosscut.operations.concretes
|   ├── crosscut.operations.contracts
|   ├── crosscut.security.concretes
├── domain/
|   ├── xcal.domain
├── service/
|   ├── xcal.service.clients.concretes
|   ├── xcal.service.formats.concretes
|   ├── xcal.service.interfaces.concretes
|   ├── xcal.service.interfaces.contracts
|   ├── xcal.service.operations.contracts
|   ├── xcal.service.repositories.concretes
|   ├── xcal.service.repositories.contracts
|   ├── xcal.service.validators.concretes
├── tests/
|   ├── xcal.tests.contracts
|   ├── xcal.tests.concretes

Development Tools for xCal

xCal is written entirely in C# - therefore it is recommended to use a specialized IDE such as Microsoft Visual Studio whose editor, debugger and compiler features facilitate rapid application development. As a matter of fact, Microsoft now offers Visual Studio Community 2013 at no cost to an unlimited number of users developing open source projects. In any case, if Visual Studio does not suit your tastes, please feel free to use other third-party tools e.g. Xamarin Studio / Monodevelop.

For the remainder of this Get Started section and for the sake of simplicity, it would be assumed you use Visual Studio 2013 for software development.

Setting up xCal

Many would agree that the setup process of a software project should be rendered as less painful as possible. This often implies minimal configuration and non-complex set up procedures. Consequently, setting up xCal has been simplified to a one-click process.

Setup from downloaded zipped source file

  1. Extract source code to desired location
  2. Open the solution folder and search for the *.sln file
  3. Double-click the file -> Visual Studio starts up and loads the entire sloution.

Setup through cloning in GitHub desktop application

  1. Open locally-installed instance of Github desktop application.
  2. Chose to clone source and select local storage location.
  3. Open the solution folder and search for the *.sln file.
  4. Double-click the file -> Visual Studio starts up and loads the entire solution.

Building xCal

Building xCal is also a straightforward process - you do not have to worry about the dependencies because these are automatically resolved during build process. However, you may need a running internet connection on the first build, in order to enable Visual Studio download the necessary NuGet Packages.

To build xCal, please do perform the following steps:

  1. Select the root of the Solution Explorer Tree.
  2. Right-click and choose Rebuild Solution from context menu.

Executing xCal

It is now time to see xCal run... although a few more steps are required before this final goal is achieved. These involve the installation and configuration of necessary backend servers (if not yet installed on the host computer). Depending on the selected application server from the download package, you have the choice of using a MySQL (relational database) or a Redis (one of the fastest NoSQL datastore) as the backend server.

It is highly recommended for beginners to start with the local application server (xcal.application.server.web.local), which been configured for testing on a local machine. The default data backend of this server is MySQL, even though the user can alternatively use a Redis backend through a provided switch in the project settings.

Assuming you are a newbie and xCal is opened in Visual Studio, please perform the following steps:

Visual Studio Configuration

  1. Select the project xcal.application.server.web.local under the logical application folder.
  2. Right-click on the project and choose Set as Startup Project
  3. Right-click on the project again and choose Properties
  4. In the Properties dialog, go to Settings and check the username and password of the mysql_server setting.

MySQL Configuration

  1. Start up MySQL Workbench as root user (if not yet started).
  2. Choose the server instance Local Instance MySQLxx
  3. Under the Management section click on Users and Privileges
  4. Add a new user account local and use the same username and password obtained from Step 4. of the Visual Studio configuration.
  5. In the Administrative Roles tab check that all Roles, as well as Global Privileges are ticked.
  6. Apply changes.

..and finally...

  1. Go back to Visual Studio
  2. Trigger the Run button (or press F5) -> voila! xCal is up and running :)

Deploying xCal

If you downloaded the xCal source and setup the projects using Visual Studio, then deplyoment of the binaries should be simple with Visual Studio's Publish option. Of course, if you prefer to deploy xCal through other means, it is up to you to decide on the third-party deployment tools you would like to employ ;)

Dependencies

xCal depends on the awesome open source software libraries below, in order to be compiled, executed and tested. Furthermore, xCal integrates and extends the source code of some of these libraries for its core functionality. Each referenced library is released under its respective license.

The following development library is referenced in all of the xcal projects:

The following library is referenced in almost all of the xcal projects:

The following libraries are only referenced in the xcal test projects (*xcal.test.server.integration.**):

The following libraries are only referenced in the xcal application projects (*xcal.application.server.web.**):

Contributing

We are very happy that you are interested in contributing to xCal. Contributing to the repository on GitHub is quite easy; fork the repository, make changes and send a pull request on Github.

However before any contributed code is reviewed, the contributor is required to accept the Individual Contributor Assignment Agreement.

To ensure high quality of code, contributors must include unit tests alongside their source code. Documentation of source code shall also be highly appreciated.

Documentation

The xCal Wiki provides detailed information on the xCal project, tutorials, and blogs on auxillary software engineering topics for newbies such as design principles, continuous integration and web services.

Versioning

For better release management and backward commpability, the assemblies of xCal are maintained under the Semantic Versioning guidelines. Moreover, the branching of the source code follows the GitFlow branching model proposed by Vincent Driessen.

Community

xCal is created by Emmanuel Ngwane and maintained by collaborators with the support and involvement of the community.

Keep track on upcoming features, development and community news:

License

Copyright (c) 2014, Emmanuel Ngwane and contributors. All rights reserved. xCal source code is released under the BSD License. Its documentation is released under the Creative Commons license.

About

Web Service implementation of the iCalendar Specification (RFC 5545)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages