Roles & Accomplishments
- I was the primary, sole designer for this product, generating 250+ screens that went through multiple iterations via feedback and usability testing
- Frontend development is my specialty, and I contributed 1,500+ Github commits to the web version of ChapterBuilder
- Covering the full stack was a new and exciting experience for me during this project, as I contributed 300+ Github commits to the API of ChapterBuilder
- This project introduced me to mobile development, as I contributed 140 commits to our React Native app
- The launch of ChapterBuilder attracted 6,000 users to the platform
Tech Stack
The goal of the architecture was to provide a framework for developing a flexible, scalable product that can support a massive feature set and expansion into new markets.
Frontend
Language: Typescript
Framework: React, with functional components and hooks
Middleware: Redux Saga, React Query
Components & Theming: Material-UI, React Final Form, React Quill
Styles: CSS-in-JS
Others: Reselect, Normalizr, Bugsnag
Backend
Language: Python
Framework: Flask, SQL Alchemy
Search: Algolia
Background Tasks: RabbitMQ, Celery
Payment + subscription feature control: Stripe
Text messaging: Twilio
Email: Send In Blue
Database: PostgreSQL
Mobile
Language: Javascript
Framework: React Native
Middleware: Redux Saga
Features
The ChapterBuilder platform boasts an impressive feature set, several of which I had the opportunity to lead and launch. Here are a few that I enjoyed building!
Events
The event management feature leverages SMS and email invitations as well as a guest management tools.
This was a great experience where I got to take ownership of the entire stack, including:
- Designing UI prototypes and conducting usability testing
- Writing technical specs
- Designing database tables and relationships
- Implementing new API endpoints
- Building out frontend functionality
Messaging
I drew inspiration from Facebook Messenger for this feature, and it was a lot of fun to develop!
Twilio's SMS API sends text messages and receives them via webhooks, and a Redux saga with a listener is set to fetch new messages every 5 seconds.