Eyvro: optical e-commerce built from zero
From a landing page to a working commerce system
I started with a simple idea: put a local optical business online. What began as a visual experiment became a complete e-commerce application as I found the real problems behind digital commerce: product management, backend architecture, order workflows, notifications and payments.
The interesting part wasn't building the first version. It was learning why the first version wasn't enough.
- Project type
- E-commerce / web application / digital product
- Role
- End-to-end developer and product builder
- Timeline
- 2021, then iterative development
- Live site
- eyvro.in ↗
- Stack and services
- Sanity CMSNode.jsExpress.jsPostgreSQLEmail notificationsPayment gateway

The problem
The business had a physical presence but no effective digital storefront. Customers had no simple way to:
- browse the product catalog online
- understand individual products
- compare frames
- follow a structured buying journey
- place an order online
- make a payment digitally
From the business side there was another problem: even after products were online, there was no reliable way to know when an order had been placed.
So the real problem was not "build a website". It was: how do I turn an offline optical business into a functioning digital commerce experience?
My first assumption
My first approach was heavily focused on the visual side. I believed a polished UI and a premium-looking landing page would be enough to create a useful online presence.
It wasn't. The first version looked more like a digital showcase than an actual commerce product.
A good-looking website is not automatically a useful product. The user needs a complete journey.
- Discover
- Explore
- Evaluate
- Select
- Checkout
- Pay
- Confirmation

Iteration 01: content and product catalog
I introduced a CMS-based product catalog using Sanity CMS, so product information and content could be managed separately from the frontend, with structured product data in place of hardcoded markup.
But having products online did not automatically create a usable buying experience. The site still lacked the underlying flow commerce needs, which pushed me to focus less on individual visual sections and more on the complete user journey.
Iteration 02: backend and data
The project then grew from a mostly frontend experiment into a proper web application. I learned how APIs work, how frontend and backend communicate, how databases store application data, how server-side logic handles requests and how e-commerce systems process orders.
I explored PostgreSQL for persistent storage and later moved to a Node.js backend using Express.js.
The frontend is only one layer of a commerce application.
- Frontend
- API
- Backend logic
- Database
- External services

Iteration 03: rebuilding the product experience
With the technical side understood, I rebuilt the experience around the customer's journey and rebranded the project as Eyvro, an optical e-commerce brand. Instead of a landing page, it became a complete shopping experience, designed to reduce friction between discovering a product and completing a purchase.
- Landing page
- Browse frames
- Product details
- Understand the frame
- Select product
- Checkout
- Payment
- Order confirmation


The product experience
The redesign focused on making product discovery useful. A customer can:
- browse the frame catalog
- open individual products
- understand product information
- move through a structured shopping flow
- reach checkout without leaving the website
It follows familiar e-commerce patterns while keeping the visual identity of the optical brand.
Business-side problem: order notifications
A new operational problem appeared: if someone places an order, how does the owner know? The CMS could store the order, but storage alone is not a notification workflow.
I added an email service that fires whenever an order is submitted, which connected the customer-facing site to the business's day-to-day operations.
- Customer places order
- Order stored
- Notification triggered
- Owner receives email
Payment integration
The last gap was closing the commerce loop. Customers needed to pay digitally rather than just submit an order request, so I evaluated Indian payment gateway options and integrated one into the application.
- Catalog
- Checkout
- Payment
The final system
Customer experience
- Branded storefront
- Product catalog
- Product detail pages
- Structured shopping flow
- Checkout
- Online payment
Content
- Sanity CMS
- Structured product management
Application
- Frontend
- Node.js
- Express.js
- API layer
- PostgreSQL
Operations
- Order storage
- Order notifications
- Email integration
- Payment integration
The real problem I solved
The biggest value was not the website itself. Over several iterations I solved a chain of connected problems, each one discovered only after the last was fixed:
- Problem 1
The business had no effective online presence.
- Problem 2
A visual landing page was not enough to support commerce.
- Problem 3
The product catalog needed structured content management.
- Problem 4
The application needed backend and database infrastructure.
- Problem 5
Orders needed to reach the business owner.
- Problem 6
Customers needed an actual online payment flow.
Building software is often less about knowing everything upfront and more about identifying the next bottleneck and solving it.
What I learned
- 1
UI is not the product
A polished interface is useful only when the underlying user journey works.
- 2
Build around user flows
Design the complete journey, not isolated pages.
- 3
Backend matters
Real applications need APIs, persistent data and server-side logic.
- 4
Integrations are product work
CMS, email and payments are not add-ons. They solve real business problems.
- 5
Iteration is engineering
The first architecture does not have to be perfect. What matters is learning from what doesn't work and improving the next version.
Why this project matters
This project was my move from "I can create a website" to "I can understand a business problem and gradually build the system required to solve it." It taught me to think across UX, frontend, backend, data, integrations and business operations, and that mindset became the foundation for the projects that followed.
Have a similar problem? Let's talk.
Kartik Saxena - open to remote roles, contract work and new projects.