Just like SesPress came out as a result of our effort towards sending event-triggered emails cost-effectively, we have initiated Employee Portal to channelize both our internal and external operations.
Like any small business, we started our journey by adopting various tools for our operations. As our activities started to grow, the number of tools increased. GSuite to manage user accounts, documents, calendars, etc. Github for code repositories, milestones, and kanbans. AWS for all the infrastructure needs. Buffer, Slack, Facebook, Sketch, Twitter, Laracasts, LinkedIn, Instagram and what not! Eventually, we figured that in most of these tools, the data they handle was similar. For example, the team is same in GSuite and Github organization, similar posts go on different social media platforms and many more.
Since there were so many data points, the effort in tracking an activity increased exponentially. Consolidating all project details in a central place (Google Drive) from various sources like emails, chat, Github, etc. became a cumbersome task. As our projects grew, manually sending invoices wasn’t easy as before. When more people started to apply, maintaining their HR details on Google sheets didn’t make sense anymore.
The effort to onboard/offboard someone also grew exponentially with these tools. Making sure a new developer is allocated a GSuite account, project’s requirements, wireframes, source code, server access, adding to our team page, etc. was becoming slower and hard to track.
We chose these tools as they integrate with other tools and can exchange data. All the job and internship requests from coloredcow.com come directly to the HR channel in Slack. Every social media announcement goes from the Buffer dashboard. But these tools have limits too. We could interconnect data at smaller levels but now we needed an organizational-wide integration. A platform that links everything.
This seemed like a great business need. Spending big money on enterprise SaaS solutions don’t make sense for small businesses like us. When we couldn’t find out an existing cost-effective solution that the community or other businesses like us use, we decided to build a platform to access all our organizational data.
We started off with how resource information is conventionally implemented – using an LDAP software. We checked some of the popular open-source ones. OpenLDAP or 389 Directory Server seemed likable to try with. But going a step back, we questioned ourselves, do we really need an LDAP server? Will it help us overcome our problems?
Each ColoredCow employee has an account on multiple platforms. When onboarding someone, creating GSuite, Github, Slack, AWS accounts separately is time-consuming. The processes became slower and weren’t efficient anymore. We needed a global identity. A common standard that all these platforms recognize. Create one account and access all the tools using this global identity. That meant we only need an Identity Provider (IdP) and not a complete LDAP server. Right now, all the accounts on these tools are created using an employee’s GSuite email. The best thing about Gsuite is it provides not one but two of the most popular SSO based IdPs. SAML and OpenID Connect. We needed a central place that stores resource information, provides authentication and authorization. We conceptualized an idea to utilize GSuite’s API to achieve this. Hence, it didn’t make sense for us to implement an LDAP server just for a few things that are already built and being used.
Next, we planned to create a data source that will store all the activities’ meta. Designing a scalable architecture to keep our data interlinked. For example, on any Monday, I can see what’s my plan for the week. How many attendees for a CodeTrek Bootcamp? Is there a job interview that I’m assigned to? Did I get my monthly payslip or not? Or maybe someone from our finance team wants to check if the invoices were sent on time, check last month’s revenue or see a project’s effort-sheet.
Initial planned architecture for the Employee Portal workflow
We planned the onboarding/offboarding process as well. A simple use case would be: ColoredCow hires John as a marketing expert. An admin creates a new GSuite account and forwards the credentials to John. John now logs into the Employee Portal, signs-in with his GSuite account and accesses his dashboard. What does he see? Links to all social media marketing tools, maybe access to documents the previous marketing guy has worked on, a direct link to analytics dashboard and much more. All these with just his single GSuite identity.
We believe “no idea should remain just an idea”. With that philosophy, we started building Employee Portal. We decided not to build a fully fledged application in one shot. Instead, go agile, work in iterations and automate what we do today. The team is dedicated to making the platform robust and easy to implement. We are going open-source with the aim to help other small businesses like us. Our target is to make the platform scalable from the start and easy to integrate the data with a SaaS solution if needed. Keep checking for the official release and more tech specs.