Skip to content
Naoufal Andichi
Projects/web-app

TelFixer

Refurbished phones with warranty — webshop, repair and trade-in from Ede.

No image

A real shop, not a template

TelFixer is not a Shopify skin. It's a full Next.js application for a real workshop in Ede that sells refurbished phones, repairs broken ones and accepts trade-ins. Three different flows with one common thread: everything works without an account, but you receive a reference number so you can track later.

Building for a physical shop means every customer interaction has to flow through one dashboard without noise.

Three flows, one database

Buying runs through a product catalogue with filters, a cart, Mollie checkout and email confirmation. Repair and trade-in flows require a form, return a TF-reference, and store the request in the same Supabase database. On the tracking page a customer can follow the status with that reference without logging in. With an account, everything bundles into /account.

The admin dashboard

Admin lives under /admin with its own layout: sidebar with Work and Manage sections, top bar with global search (Ctrl/Cmd+K) and a main canvas. Access via Supabase: only users present in the admins table (linked to their Supabase user_id) get in, with role Administrator or Support. Not logged in? Redirect to /login?redirect=/admin.

The home dashboard shows live KPIs: revenue last 30 days (paid orders only), trend vs the 30 days before, order count, customer total, new customers in 30 days, and open actions. Above that a daily bar chart, below that four counters linking directly to orders 'pending', repairs 'received' or 'in progress', trade-ins 'evaluating', and active products that are out of stock. That's the day's working queue.

Not only for humans — also for AI

TelFixer ships an MCP endpoint (Model Context Protocol) at /api/mcp for AI clients such as Claude Desktop. Server name: telfixer-mcp. Three tools: track_repair (look up status by reference), get_product_categories (active categories + product count), and create_repair_request (submit a new repair request, with Dutch phone-number validation). Plus public OpenAPI 3 docs at /api/v1/public/docs for regular external integrations.

What it is

TelFixer is a real shop with a real admin, a real payment provider and a real customer journey. It's my most 'product-mature' project: from pixel-pushing on the homepage to designing a SQL schema that's safe under RLS, to designing an MCP interface that an AI agent can usefully invoke. One codebase, three audiences: customer, owner, agent.

Highlights

  • 01Full webshop with Mollie checkout, stock tracking and email confirmations via Resend.
  • 02Repair and trade-in flow with reference numbers (TF-…) and a public tracking page.
  • 03Admin dashboard with live KPIs: 30-day revenue, AOV, customer growth and 'action needed' counters.
  • 04Access control via Supabase admins table; Administrator or Support role per user.
  • 05Global admin search with Ctrl/Cmd+K across orders, repairs, trade-ins, products and customers.
  • 06MCP endpoint (telfixer-mcp) with track_repair, get_product_categories and create_repair_request tools for AI clients.
  • 07Public OpenAPI documentation at /api/v1/public/docs for external integrations.
  • 08Stack: Next.js 16 (App Router), Supabase with Row Level Security, Mollie payments, Resend email.

Related projects.