One% is a global volunteering platform that encourages people to donate 1% of their time to a good cause. The platform allows volunteering organizations to create events and tasks via their group (like Meetup for volunteering) free of charge. Furthermore, the time volunteers spent tracked by the system as a gamification component. Before my involvement, the team released the first mobile app with basic functionality.
The MVP version had a successful launch. There were many ideas to try out. However, the architecture and the team size wasn't ready for it.
- The initial short term goal was to develop the web version for the platform.
- It was crucial to keep the development team as small as possible to reduce the development costs until the platform starts monetizing.
- Another important goal was to set up analytics properly to validate the experiments.
- The primary goal was to improve the solution as a volunteering management solution for non-profit organizations.
Before making any significant changes, I concentrated on short term goals to keep the buzz going. I believe that user traction comes before technical improvements. I picked Next.js for the web application due to its performance and SEO advantage. Set up a small development team for a quick initial release.
After the first release of the web version, I move on to improving user acquisition. Added a blog post to attract potential volunteers via content marketing. I used Contentful as a headless CMS solution. This implementation allowed the marketing team to write posts via the contentful interface. An automated build system builds and deploys the new articles after approval.
The codebase was a bit beat up due to old experiments. It was hard to add new features, maintain or debug. It was hard to implement the enterprise solution on top. The mobile and web applications almost share the same functionality. However, the development of each application was in isolation.
My first step was to turn the codebase into a monorepo and share the business logic and data layer between web, mobile, and serverless backend. The modular architecture provided consistency between the different apps and significantly improved the release pace.
The data architecture was not scalable. Due to coupled relationship design, it was hard to improve individual features. I designed a new data architecture that emphasizes the shared functionality between different entities while keeping each entity separate.
One of the biggest challenges for the solution was to migrate all these new changes to production. I planned and executed a 0 downtime migration.
My first step for better analytics was to decide what is crucial for the platform to track. I picked the tools to track the flows that I planned. Furthermore, for each experimentation, I designed analytics strategies to validate the idea.
I sync the data with Elasticsearch for both analytics and improving the search capabilities of the platform. Elasticsearch gave the team ability to dig into data and provide valuable insights about the platform and its users. I created dashboards using Kibana and share my insights on the data. Same time, volunteers using the platform gain more powerful search capabilities.
The product release lifecycle was pretty rudimentary. It was causing delays and bugs in production. I implemented a simple but effective product release strategy to improve this. Also introduced CI/CD and testing to the codebase for higher quality code and operations.
The documentation about the product was missing. During our collaboration, I created documents for the product, internal processes and introduced the code documentation concept to the codebase.
I introduced the team analysis techniques such as MoSCoW for better product management. After each feature release, I joined product meetings and help out with the next steps.