Social care insurance system for the elderly and disabled
|Backend||Ruby on Rails|
|Version Control||Git, Gitlab|
Brief project overview
An administration system for healthcare workers and social care companies to provide treatments and careplans for elderly and disabled people all across the country of Japan. The system provides many features for the whole process including treatment planning, scheduling, staff resource allocation, official document generation / download / upload, cost calculation, and official document submission to the government social care benefits branch.
Skills and Input
My main role for this project was mainly in developing a manageable and maintainable code base. I joined this project while it was already in development, however the monolithic size of the application was causing problems for the team, as the code base was very quickly becoming unmaintainable, and with no test suite, small changes required a lot human testing. This meant that the overhead for small changes to the system were disproportianate in time and human-resource costs, and the dev to release rollout period for new features or updates was long. The dev team were new to both Ruby and Rails, and some new to development entirely, and my main role was to redesign the system, DRY up the system, and help create a more maintainable code base, as well as providing the team with the knowledge to do it themselves as well. Some of my accomplishments in this project include:
- Creating several custom made modules using metaprogramming to provide the base for several design patterns and clean up the code, make logic reusable, easily testable, and more maintainable:
- Decorators (link to blog post)
- Service Objects
- Query Objects
- Complete refactoring of entire system, to improve maintainability, improve readbility, and allow for clearer more precise tests to be written.
- TDD and test suite creation using RSpec.
- Writing a test suite including unit tests for all the new design patterns and models, as well as behaviour tests.
- Implementing a wide range of new features for the application, just a few including:
- A real-time chat application using web sockets with ActionCable.
- A system-wide tag feature for easy filtering on all index pages.
- Ajax filtering on index pages for faster response times to user filter requests.
- Mailing system for interaction with customers, and password reset.
- Social Care news system with realtime alerts, file uploads and downloads.
- Scheduling / timetable planning system to organise staff schedules with the users careplan requirements.
- Document creation to calculate the service usages, with the different service costs, and output a document with the final monetary cost, amount covered by insurance, and amounts needed to be paid by users, for submission to government bodies.
- Introducing team to more Object Oriented design practices, DRY design practices, and AJAX / Web Socket use.
- Introducing team to Git version control and Gitlab Issue tracking with Continuous Integration for automated testing.
- Working to move the application from a monolithic app, to a set of microservices to improve performance on resource heavy elements, improve rollout speeds, and work towards providing a public API.
As well as this I took part in the day-to-day development, production and bugfixing along with the rest of the team, as well as giving a few presentations on the Ruby language, Rails practices, and alternative design patterns.
Attended Kansai Ruby Kaigi 2017
A Ruby conference in the kansai region of japan, held in Osaka. Listened to a variety of presentations from many people in the Ruby community. This years theme was Community and Business.
Bottled observers gem release
The first production version of bottled_observers has been released (v0.1.0)
New blog post!
A blog about more advanced decorating concepts in ruby.
New blog post!
A blog post about the concept of class-instance variables
Website Design Update
johnhayesreed.com has had a makeover with Bootstrap 4
New blog post!
A new blog about design patterns in rails - Decorators
Bottled decorators gem release
The first production version of bottled_decorators has been released (v0.1.4)
New blog post!
A new blog about desing patterns in rails - Services
Bottled services gem release
The first production version of bottled_services has been released (v0.1.3)
Ruby Rampage 2016
Took part in 2016's Ruby Rampage 48 hour Hackathon.