Frontend Development at Spigit Inc

Project Summary
I worked for Spigit Inc, a small company focused on idea management software, based in San Francisco, CA from Mar 2017 to Sept 2018.

Technologies Used
JavaScript was the main programming language I used. I used Webstorm as my main IDE.
Part of my duties on the team was to help the migration from the old jQuery / CSS / JSP based web application to a newer faster version using Angular2+ and NodeJS.
We used Github to maintain a source code depository and also for continuous integration purposes. Travis was used for builds and testing. Our API backend used NodeJS for the new part of the application and Java/JSP for the old part. Rendering was done using a mix of Angular2+ templates, Bootstrap and JSRender.
We also used SASS for CSS, Jasmine for unit tests, GulpJS, for automation testing and some other third party libraries.

Responsibilities/Roles
I was mainly responsible for:
-Refactoring and removing old Technical code debt (spaghetti JS/jQuery/CSS) from the codebase.
-Migrating old Mustache and JSRender templates and jQuery to using Angular2+ instead, last I was working on it we were up to Angular5.
-Existing parts of the application deemed too big of a task to migrate in a short time, we had to migrate the old jQuery to at least 1.7+ to fix security issues
-Lead the unit test development for all the Angular2+ components, using Jasmine testing.

Most notable/challenging project

Driving the development of the search and advanced search features. There’s a lot of complicated stuff going on behind the scenes, even though it seems like simple features. For example, datepicker component has to be properly formatted, encoded and sent to the backend and properly re-parsed when it comes back. Tags have to be properly saved and remembered. Usernames and displayed names could be different, and used an autocomplete mechanic. Saved searches would have to remember and re-populate all the fields when selected. Refreshing the page with local storage (non guest account) would have to re-populated and remember all the fields as well. In addition I wrote over 90% of the unit testing framework, which was not easy given that unit testing guides for Angular 2+ was sparse. I even did a Youtube video about it:

(keep in mind its deprecated though since as of Angular 7 alot of unit testing methodology has changed, we were using Angular 4 at the time of the video).

Screenshots

Spigit View Ideas page

Here is an example of the Spigit Pairwise page in action – where users vote on competing ideas