(01) The brief
Akim sells premium food and accessories for dogs and cats in Santiago. It needed to stop selling only through Instagram and WhatsApp and get a store of its own that charges by itself, remembers the customer and alerts the owner on every order.
(02) What it does
- Catalog with brand, species and line filters, instant search and product pages with nutrition tables.
- Cart and favorites that survive closing the browser and sync when you sign in.
- Customer account with their pets, saved addresses, order history and reviews.
- Card payment through Webpay Plus and an email confirmation with the order receipt.
- Coupons, points program, support tickets with chat and real-time notifications.
- Installs as an app on iPhone and Android (PWA) without going through the app stores.
(03) How it was built
- Next.js App Router with server components: the catalog arrives rendered from the edge and the browser only hydrates what is interactive.
- PostgreSQL database with row-level access rules: each customer can only read their own orders even if they know the URL.
- Three-step payment flow with server-side verification: the order is marked paid only when Transbank confirms it, never from the browser.
- Images optimized and served over CDN in WebP, with per-device sizes.
- Transactional emails with in-house templates (order, shipping, password recovery).
(04) Security
- Strict headers: Content Security Policy, HSTS and clickjacking protection.
- Admin panel with roles and logged role promotions; admin routes blocked for search engines.
- Attempt limits on login and forms; anti-bot verification.
- Payment webhooks and callbacks validated by signature and by direct query to the gateway.
- Automatic database backups.
(05) Speed and Google
Audited with Lighthouse on mobile at every delivery. Product structured data so Google shows price and availability in the results.
(06) What it deliberately doesn’t do
- It does not manage physical warehouse inventory or integrate with electronic invoicing systems.
- Shipping is coordinated from the panel; there is no automatic courier integration.