Web Stack and Explanation
The project was built using the Shopify embedded app workflow, which uses the Remix framework with Polaris React components, alongside a GraphQL API for accessing Shopify-specific data. I also set up a custom MongoDB database for storing planner page data, as well as another GraphQL layer and Google Cloud Storage buckets to host page layout PDFs and images.
Challenges and Process
One challenge I faced during this project was learning how to integrate data from multiple sources. The app uses data from both the Shopify GraphQL API, as well as a custom MongoDB database I set up, which contains page layout and customer design data. Shopify provides limited flexibility for adding custom data to its API and I wanted to ensure I could design my schema in a way that suited its application.
Working with Google Cloud was another learning curve — learning how to upload files remotely and connect to protected storage buckets.
Ensuring planner page files are accurate when uploaded was also a critical part of this project. I implemented multiple checks, including cross-referencing uploaded file metadata with layout information in the database. Layouts cannot be marked as 'active' on the website until all conditions are met. The app also automatically deactivates layouts that don’t have at least two years of pages available, ensuring that customers always have a complete selection of pages for their planner.
Lessons Learned
This project taught me a lot about Remix and working with Shopify as a developer. It also enhanced my skills in database design and management, particularly working with MongoDB, Mongoose, and GraphQL. Iterating on the schema design multiple times helped me achieve a clean structure that met my current business requirements. Overall, it was a challenging but satisfying full-stack project that will make managing my business a less stressful experience.