Work / Web app · 2026
Jewelry e-commerce client (via agency)
A storefront and admin panel for a jewelry e-commerce client, delivered through an agency: a supplier-fed catalog, Stripe checkout, shipping, appointments and custom requests, all in one Next.js app on MongoDB. I was tech lead, covering architecture decisions, DevOps and deployment, and client communication; teammates wrote most of the application code. My own commits set up the push-to-deploy pipeline: a GitHub Actions workflow on a self-hosted runner that builds the app and restarts it under pm2.
- client work
- web app
- client anonymized
- paused
- Client
- Jewelry e-commerce client (via agency)
- Type
- Web app · E-commerce: jewelry storefront and admin
- Built with
- GitHub Actions (self-hosted runner), pm2
- Also uses
- Next.js, React, JavaScript, MongoDB (Mongoose), Redux Toolkit, NextAuth, Stripe, Cloudinary, Tailwind CSS
- Last active
- 2026
What it does
- Storefront and admin route groups in one Next.js app.
- Supplier catalog via the Stuller API.
- Stripe checkout and saved cards.
- Shipping calculation and a scheduled cron endpoint.
How it is built
- One Next.js App Router app serves the storefront, the admin panel and the API routes, backed by MongoDB through Mongoose models with a Redux store on the client. Pushes to master trigger a self-hosted GitHub Actions runner that builds the app and restarts it under pm2. It replaced three separate backend/admin/frontend repos from January 2025.
My part
- Made the project's architecture decisions.
- Set up CI/CD: a GitHub Actions workflow on a self-hosted runner that builds the app and restarts it under pm2.
- Handled communication with the client.
- Merged teammates' pull requests and an agent-assisted product-listing API optimization.
Decisions
- Deploy with a self-hosted runner and pm2 on the production server instead of a managed platform.
Skills
- Technical leadership (architecture, client communication)
- CI/CD with GitHub Actions (self-hosted runner)
- Node.js deployment with pm2