Profile
Fatih
Profile

Fatih

Contact
  • fatihaljabar@gmail.com
  • fatihaljabar.com
Languages
🇬🇧 English
🇮🇩 Indonesia
Home
About
Achievements
Projects
Contact
Back

Intansari Farm

A portfolio and storefront for an agricultural consultant, showcasing land-management projects while selling fertilizer, seed, and educational materials through one real Indonesian checkout.

Tech Stack :
Intansari Farm

Timeline: January – March 2026

Overview

Intansari Farm is a client website for an agricultural consulting business, part portfolio, part storefront. It shows off the consultant's completed land-management and irrigation projects the way a services business needs to, and sells the fertilizer, seed, and educational materials the business actually deals in, in one site rather than two.

Live in production. This one is a real client deployment, not a demo, which is also why there's no public repository or separate demo link here.

Two Businesses, One Site

The homepage reads like a consultancy's front page: services (precision land management via satellite/drone mapping, smart irrigation systems, training & consultation), a portfolio of completed projects, and an about section. Then, without feeling bolted on, a working shop sits right alongside it:

Completed projects portfolio, shown the way a services business needs to present its work

  • Toko Pupuk & Nutrisi: a proper e-commerce catalog covering fertilizer, seed, plant protection, and growing media, organized by category, with stock, variants, and pricing.
  • Materi: downloadable educational products (e-books, video courses, slide decks, PDF modules) sold the same way physical products are, through the same cart and checkout.

Both product types share one cart, one checkout, and one order history, so a customer can buy fertilizer and a growing guide in the same transaction.

Real Indonesian Checkout, Not a Placeholder

Two integrations do the work that's easy to fake in a demo and easy to get wrong for real:

  • Address & shipping, api.co.id. Cascading province → city → district → village selection backed by Indonesia's official administrative regions, plus live shipping cost calculation (courier, service level, ETA) for whatever address the customer lands on. Origin city/village and postal code are resolved server-side, not hardcoded.
  • Payment, Midtrans. Server-side payment token creation, a redirect/verify flow, and a webhook that updates order status from Midtrans's own notification, rather than from the client trusting its own redirect, which is the usual way payment status ends up wrong.

Order Lifecycle, Modeled Properly

Orders move through pending → paid → processing → shipped → received → completed (or cancelled), and the schema tracks the details that make each stage mean something: courier and service name, tracking number, shipped/delivered timestamps, and, after delivery, a rating and review tied back to the order. Guest checkout is supported alongside registered accounts, with guest name/email/phone captured directly on the order rather than forcing an account first.

Admin Console

A full back office behind authenticated admin routes: CRUD for products and materials (with image upload), an order list with a detail view for updating status and tracking info, and user management. Session handling uses NextAuth with a JWT-backed flow (jose) rather than rolling custom token logic.

Tech Stack

LayerChoice
FrameworkNext.js, TypeScript
StylingTailwind CSS
DatabasePostgreSQL via Prisma, hosted on Supabase
AuthNextAuth, JWT sessions
PaymentMidtrans
Address & shippingapi.co.id
EmailResend, React Email for templates
StateZustand (cart), TanStack Query (server state)
AnimationFramer Motion

Links

Private client project. No public repository or demo link.