A custom payment app, and conduct under pressure
Schooner Olad & Cutter Owl — Camden, Maine sailing tours
The engagement
Schooner Olad and Cutter Owl run windjammer day sails and charters out of Camden, Maine. They sell tickets through a Rails booking site and wanted to take card payments in person - at a dockside ticket table and a store stand - without sending customers off to a separate point of sale. David contracted directly with the business, built the app in early 2024, and has supported it across multiple seasons since - a custom product build followed by real ongoing support.
What we did
- Built a custom iPad payment app that wraps the client’s existing “Quick Add Order” checkout, so staff stay inside the booking site while taking in-person card payments on Square hardware. Keeping staff in one system instead of two is plain workflow optimization.
- Integrated Square’s card-reader SDK, including the auth-code flow, and built a companion Ruby test/admin site to generate auth codes and demonstrate how the app and website communicate. Payment-processor integration is backend work whether or not it has a screen.
- Worked around real platform friction - the Square API wouldn’t compile on Apple M1 hardware, so David bought an Intel Mac to finish the integration.
- Produced a developer’s guide and integration repo so the client’s own web developer could make the small site-side changes needed to connect. Handing over documentation the next developer can use is part of how we work.
- Handled distribution and seasonal operations - builds via Expo, fresh download links, login QR codes, and 2FA re-issues each spring. Seasonal businesses get this through a scheduled maintenance arrangement.
When Square forced an SDK rewrite mid-relationship, we absorbed the overrun rather than repricing the client. That’s the standard we hold ourselves to.
Stack
- React Native + Expo
- Square Reader SDK → Mobile Payments SDK
- Ruby (companion app on Heroku)
- Integrates with the client's Rails booking site