iCalendar File Generator

Project Overview

For my intermediate software engineering class at University of Hawaii at Manoa, we were tasked with implementing a iCalendar file generator in a programming language of our choice. We chose HTML and JavaScript for easy User Interface (UI) creation and because we had just completed an introductory software engineering class which used these languages heavily. This project introduced us to several software engineering concepts, such as prototyping, handling user feedback and following standardized specifications.

My Contributions

This project was a small group, only me and one other student. I ended up being responsible for most of the functionality of the project, due to a language barrier which made communicating difficult and the expedited nature of a summer semester course, we would not have made the milestone deliverable deadlines if I did not just do the work myself.

Before any programming was started, we first prototyped the UI by hand on paper. Although this is lower fidelity than computer graphics, it was much faster.

For the UI, we used a fork of Semantic UI with additional form related modules, Fomantic UI, which drastically simplified the UI work on our end. One such example is the calendar module, which was perfect for selecting dates and times for calendar entries.

For the file generation, we were following RFC 5545, to ensure that the file our system generated would work with third-party calendar systems, such as Google calendar and Outlook.

When the project was nearing completion, we did a usability study with other students in the class to ensure that our implementation worked on a variety of systems.

Source Code

View this project on GitHub.

Conclusion

Overall, I rather enjoyed working on this project. It gave me the opportunity to improve my front-end skills while keeping me entertained with some back-end functionality. Although this was not my first time implementing software based on an RFC, I felt that the methodical approach we used for this project helped improve my skills as a software developer.