Shopify that will not bend
The theme held until the catalog grew. Now six apps fight each other, a discount only half works, and nobody can touch the checkout.
CMS / Shopify / Stripe
I am Angel Mora, a senior Ruby on Rails developer. I build three things: the back office that runs your content and catalog, the Shopify store that behaves like your actual operation, and Stripe billing with idempotent webhooks reconciled against your database. Not a payment button held together with tape.
The theme held until the catalog grew. Now six apps fight each other, a discount only half works, and nobody can touch the checkout.
A plugin defined your content model, not your business. Publishing takes fifteen clicks and nobody on the team enters the admin unsupervised.
Extra steps, card errors with no message, 3D Secure breaking the mobile flow, and payments charged in Stripe but never recorded in your database.
A monolith became three services. Now changing one line of copy needs a deploy, the source of truth lives in two places, and maintenance cost doubled.
It is almost never a platform problem. The platform simply never learned how your business works.
Where every discovery starts
Three fronts. Hire them separately or as one piece: catalog, storefront and billing are usually the same problem seen from three sides.
A back office shaped like your operation, not like a 2009 blog.
Rails 8 / Hotwire / PostgreSQL / Active Storage
Teams updating catalog or content every day who already know the plugin is never going to get there.
A five-page site that barely changes. You want something off the shelf, and I will say so.
Make the platform behave like your business, not the other way around.
Liquid / Admin GraphQL API / Functions / Storefront API
Stores already selling that keep hitting the ceiling of the theme or of this month's app.
Anyone validating the product this week: start on a standard theme and come back when it hurts.
Charging is easy. Making the money and your database agree is the work.
Payment Elements / Billing / Connect / Webhooks
Anyone billing recurring revenue, running a marketplace, or whose support team hunts orphan payments.
If you sell three things a month and need a button, Payment Links is enough.
I have spent six-plus years shipping production Rails monoliths: Hotwire, background jobs, PostgreSQL at scale and third-party API integrations. I do not subcontract the work: whoever runs your discovery is the one writing the code and the one answering the day something breaks.
| Layer | What runs there |
|---|---|
| Framework | Ruby on Rails 8.0 on Ruby 3.4. A monolith, not microservices without a reason. |
| Interface | Hotwire (Turbo + Stimulus), Tailwind v4 and importmap. No JavaScript build, no SPA. |
| Data | PostgreSQL 17, Active Storage, background jobs for anything slow. |
| Deploy | Kamal over Docker on Hetzner servers. One-command rollback. |
| This page | Runs on exactly that stack. The proof is the site you are reading. |
40% page load reduction Turbo Frames lazy loading · Inktavo / Printavo
120 hrs/month saved 30+ Rake automation tasks · SEPROBAN
Test suite 45 -> 38 min TestProf profiling · Info-Tech Research Group
Four phases. Each one ends with something you can open, read or click.
One call and read access to what already exists: repo, store, Stripe dashboard, analytics. I go through the data model and every point where money changes state.
Deliverable: Scope document: entities, integrations, risks and what is out.
Short branches, staging from week one and a working demo every week. Tests go where the money moves: webhooks, totals, taxes and order states.
Deliverable: A staging environment you can click through, plus a weekly demo.
Kamal to your server or mine. Reviewed migrations, backups and monitoring before opening the tap. Payments run in test mode first, then live with small amounts.
Deliverable: Production with one-command rollback.
The repository is yours from the first commit, with no dependency on my infrastructure. I document the operation and record the handover session.
Deliverable: Operations README, incident runbook and a recorded session.
Next step
One email with context beats three discovery calls. The button opens your mail client with a short template already written: what you sell, what stack you run, what is breaking today. If the project is not for me, I will say so right away.
Timezone
UTC-6
Mexico City
CMS / Shopify / Stripe
Email me Tell me your project