August 2020 – July 2021
Work with in a team of 5 developers as part of other software development teams, UI / UXdevelopers, and QA engineers. The team focus on building and maintaining the clinical trial management platform for Longboat (was acquired by Advarra in December 2020).
The platform helps pharmaceutical companies to perform clinical trials effectively while ensuring clinical operations, monitors, site staff, and patients ability to access the platform. As depending on a user’s role in a particular study, the interface and support provided adjusts to meet their specific needs.
Ruby on Rails 6, Vuejs 2, Jest, PostgreSQL, Redis, Yarn, Tailwind CSS, Ruby Grape, Rack::App, Celluloid, Pundit, Sidekiq
Github, Codeship, Airbrake
- Web API server (v2) on Ruby on Rails 6
- VueJS front-end application (v2)
- Legacy web application (v1) on Ruby on Rails 4.2
- Gateway application: It is on Rails 6.1 and has some core functionality such as profile registration, listing, and also act as a proxy to direct requests to specific application or service
- SMS service: service to periodically fetch SMS content from a Redis queue and dispatch them concurrently
- Email Service: service to periodically fetch email content from a Redis queue, populate emails for template and dispatch them concurrently Celluliod asynchronous/multi-threaded framework
- Report Engine: Group of web APIs build on Rack::App framework to build complex SQL query reports, cache and retrieve reports
- Users Service: Group of web APIs build on Ruby Grape framework to retrieve user details across multiple organizations
- Auth Service: Group of web APIs build on Ruby Grape framework to maintain user profile and authentication related logic
Infrastructure & Tools
- Airbrake for production error logging
- Slack for communication
- JIRA for project management
- Codeship for CI/CD
We followed scrum development practices with usually one month long sprints. We use JIRA to track work progress and have morning stand up calls to discuss the usual work progress.
Depending on the feature requirement, I’d work on any of the previously mentioned applications/services. Also any new functionality is usually added on V2 based applications both back-end API and front-end Vue.JS app.
Depending on the sprint requirements, it could also be to move existing functionality from v1 to v2 architecture.
This means I have to understand how the v1 legacy code works to understand the business logic. Then break the requirements to have the functionality in web API and front-end application.
Once the work is done, we use Github Reviews to get pull-request peer reviewed by two other developers. Once approved and tests are passing on CodeShip for the branch, we merge the pull-request.
At the end of the sprint, once the QA team is happy with the main branch, the release is conducted by the IT team. Therefore the sprint duration can vary for the release.
- Upgraded the gateway application from Rails 4.2 to Rails 6.1. As a result the security and performance of gateway application has been increased.