Today there's a substantial number of people working at Netguru, especially at the HQ, in Poznań. Together with the Netguru iOS team we have addressed the problem of quick and easy room reservations for calls and meetings. We developed the Roomguru app for managing your meetings in Google calendars. And it’s open source!
Today there's a substantial number of people working at Netguru. About half of us work at the HQ, in Poznań, what makes the place pretty busy. People have calls, standups and other kinds of meetings throughout the day. Sometimes arranging some free space for a spontaneous meeting might be tricky, and cancelling reservations needed improvement as well. There had to be some sort of a solution.
Together with the Netguru iOS team we have addressed the problem and developed the Roomguru app for managing meetings in Google calendars. And it’s open source!
Roomguru is an app for managing meetings in your busy working days. Netguru uses Google resource calendars for organizing meetings in call rooms, so the app requires users to be logged in to their Google account.
Roomguru lets you choose which calendars you want to manage within the app. Once you've selected your calendars, the day schedule will be presented, where you can browse through events you have created or participate in. The app allows you to quickly book the first available room and choose how much time you need within the possibilities available.
The app also presents a regular list of meetings for each room separately together with free time slots. It is possible to book a room by selecting those slots. Each meeting can be edited or cancelled, of course.
Roomguru is our first Swift app. Besides our few side-project experiences, we’ve all been learning and trying to keep up with good practices and reasonable code style during the development. It took us some time to understand the main concepts and features of Swift and we all can proudly say that we fell in love with it! Nevertheless, this love has been occupied by sweat and tears and Xcode didn’t help us much.
Taking into account our experiences from previous projects and the MVC (Massive View Controller) problem, we decided to go for MVVM. And it worked out really well, letting us allocate responsibilities to separate objects. It’s a very promising pattern and we will definitely use MVVM in upcoming projects.
We also take advantage of generics and protocols. If you take a closer look at the
UITableView, you’ll see methods for registering and dequeuing cells that utilises reuse identifiers to distinguish their types. Wouldn’t it be nicer to simplify these operations? Of course! So we declared a simple
Then, we implemented this protocol in our
UITableViewCell subclasses and made extension to
UITableView with following methods:
Dequeuing cells and registering their classes has become simpler as we associated cells’ reuse identifiers with their types.
I think it is a very neat and clean solution - thank you, generics and protocols! You can do a lot more with generics than just simple methods, and if you take a look at Roomguru’s source code, you may find some interesting examples.
You can use it as you want. Roomguru requires some configuration before usage, but it is really simple and we included everything you need to know in README file. When you’re ready with configuration the only remaining step is compilation and you’re ready to use Roomguru.
Eventually, you would like to distribute it to your colleagues. All you need to remember is to subscribe to the right calendars, otherwise the app won’t be able to download them from Google. That’s it! Be happy with easier meetings organization.
We love to share our work as well as receive feedback, so the code is available on GitHub for you. Please, feel free to contribute, comment, report an issue or, what’s the most important, use it for yourself. Have fun!
If you like Roomguru, maybe you'll feel like checking other open source projects from Netguru team. Here are a few words about NGRValidator, the app that speeds up and facilitates the data validation process. Enjoy!