UPEO Academy
AdvancedUSD 46Early-bird 47% off🏆 Certificate

ERPNext as a Platform

Build a real field-service product on Frappe and ERPNext - a backend, a technician app and a customer portal - and learn the patterns behind every app you will ever build on ERPNext.

⏱ 13h when complete🎬 4 of 26 lessons live🏆 Certificate of completion♾️ Lifetime access

Part of ERPNext Developer learning path

Today's jobsFridge not coolingBookedAC serviceIn progressGenerator checkDoneStart visit/apiliveDeskfieldproFrappe · ERPNextJobsVisitsInvoicesMy jobsAC serviceTechnician on siteDesk

What You'll Learn

  • ✓Designing Frappe apps as backends for web and mobile clients, not just Desk.
  • ✓Building versioned, well-shaped APIs that a frontend team can rely on.
  • ✓The right sign-in method for each client: tokens, OTP, OAuth2 and sessions.
  • ✓Permissions as API security, so one user can never reach another's data.
  • ✓Workflows, background jobs, realtime updates, push notifications and webhooks.
  • ✓Files, PDFs, reports and offline sync for mobile clients.
  • ✓Connecting a real Next.js frontend to all of it, and how the same patterns apply to Flutter, React Native or any other client.
  • ✓Testing, versioning and hardening the API.

Course Content

26 lessons when complete · 4 live now

  1. 1
    Module 0 - What We Are Building: The Problem and the Full fieldpro Demo

    Why field-service businesses lose jobs, time and money, and a complete demo of fieldpro: technician app, customer portal and ERPNext Desk working together.

    Live
  2. 2
    Module 0 - Running fieldpro Yourself: Bench, the Two Repos and Demo Data

    A Frappe v16 bench, the complete fieldpro backend with a one-command demo data seed, and the complete Next.js app connected to it.

    Live
  3. 3
    Module 0 - Architecture: One Backend, Three Clients

    Where business logic lives, thin endpoints, Desk as just another client, and how a request travels from the phone to Frappe and back.

    Live
  4. 4
    Module 1 - Designing the Data Model for API Consumers

    Technician, Service Job, Job Visit and Parts Used: naming, child tables, links to ERPNext stock and the indexes your API will need.

    Live
  5. 5

    Module 1 - Extending ERPNext From Your App

    Custom fields, fixtures and patches, so jobs, technicians and parts flow onto the Sales Invoice and survive every upgrade.

    Coming
  6. 6

    Module 1 - Building a Versioned API

    Whitelisted methods, versioning, response shapes, errors, cursor pagination, and dates, time zones and currency in JSON: an API contract a frontend team can rely on.

    Coming
  7. 7

    Module 2 - How the Two Apps Talk to Each Other

    The three channels between fieldpro and the Next.js app: request and response over HTTP and JSON (/api/method and /api/resource), live updates from server to browser over Socket.io, and push notifications to the phone. Plus the API contract, how every request proves who it is, the one error format both sides agree on, and where the proxy sits.

    Coming
  8. 8

    Module 2 - The Next.js App: Structure, API Client and the Proxy to Frappe

    How the app is organised, the one file that talks to the backend, what is fetched on the server versus in the browser, and routing /api to Frappe so the browser stays on one origin.

    Coming
  9. 9

    Module 2 - Authentication for Every Client

    Tokens, phone OTP, OAuth2 and sessions on the backend: the right sign-in method for each kind of client.

    Coming
  10. 10

    Module 2 - Technician Sign-In: OTP and Token Storage (the Mobile Pattern)

    Phone code login, storing the technician's own key and sending it on every call. The same pattern any Flutter or React Native app uses.

    Coming
  11. 11

    Module 2 - Customer Portal Sign-In: Sessions and CSRF

    Cookie login for the browser and passing Frappe's CSRF check.

    Coming
  12. 12

    Module 2 - Permissions as API Security

    Roles, permission hooks and the endpoint review checklist, so a technician sees only their jobs and a customer only their company's.

    Coming
  13. 13

    Module 3 - Today's Jobs and Job Detail

    The list and detail endpoints and their screens: paging, loading states and errors on slow networks.

    Coming
  14. 14

    Module 3 - Visits and Parts Used

    Starting and ending visits, recording parts from stock, and keeping the rules in a services layer.

    Coming
  15. 15

    Module 3 - Workflows as API State Machines

    Booked to Done, manager approval for big jobs and customer sign-off, with the server owning the state.

    Coming
  16. 16

    Module 3 - Workflow Buttons From the Server

    The client shows only the actions this user may take, and captures the customer's sign-off on the phone.

    Coming
  17. 17

    Module 3 - Booking a Job From the Portal

    The customer books, sees their jobs and approves or rejects finished work.

    Coming
  18. 18

    Module 4 - Realtime and Push Notifications

    Socket.io, FCM and the Notification DocType on the backend; live job status in the portal and new-job alerts on the technician's phone.

    Coming
  19. 19

    Module 4 - Background Jobs and Scheduled Work

    Invoices, summaries and reminders off the request path, written to be safe to run twice.

    Coming
  20. 20

    Module 4 - Webhooks In and Out

    Sending jobs to a partner's accounting system and receiving SMS or payment callbacks: signatures, retries and idempotency.

    Coming
  21. 21

    Module 5 - Photos and PDFs

    Uploading visit photos from the app, private files, and the job card PDF downloaded safely from the portal.

    Coming
  22. 22

    Module 5 - Reports and Dashboards as API Data

    Jobs and hours by technician in Desk, and the same numbers, fast, in the technician's "my week" screen.

    Coming
  23. 23

    Module 6 - Offline Sync on the Backend

    Pull by server cursor, push in small batches with client IDs, per-record results and server-wins conflicts.

    Coming
  24. 24

    Module 6 - Offline Mode in the Client

    A local queue, background sync and a clear sync status: nothing lost, nothing duplicated.

    Coming
  25. 25

    Module 7 - Proving It Works: Testing, Debugging and Versioning

    Tests that prove one user can never reach another's data, CI, and changing the API without breaking the app.

    Coming
  26. 26

    Module 7 - Hardening the API

    CORS, rate limits, caching and API governance, and how every pattern in this course maps to a Flutter or React Native app.

    Coming

About This Course

The problem

Thousands of businesses send people to their customers: AC and refrigeration repair, solar installers, CCTV and security installers, generator servicing, plumbers and electricians, internet installers, pest control, borehole and pump servicing, printer and copier servicing, lift and medical equipment maintenance.

Most of them run that work on phone calls, WhatsApp and memory. The result is the same everywhere:

  • Jobs get lost. Bookings sit in a chat or a notebook.
  • There is no proof of work. The office cannot see whether the technician went, when, or what was done.
  • Customers keep calling. "Where is your technician?" fills the day.
  • Invoices are late and disputed. Accounts hears about a finished job days later, and the customer argues about the hours and parts.
  • Big jobs close without approval. Expensive work is done and billed before a manager has seen it.
  • There is no data. Nobody knows which technician performs best or how long jobs really take.

Many of these businesses already use ERPNext for customers, stock and accounts. What ERPNext does not give them is the field: a technician app, a customer portal and proof of every visit.

What we are building: fieldpro

fieldpro runs field work from booking to invoice, on top of the ERPNext a business already uses.

  • Customers book jobs on a web portal, watch the status change live, approve the finished work and download the job card.
  • Technicians sign in with a password or a one-time code sent by email or SMS, see today's jobs, start and end visits, record parts used and photos, get the customer's sign-off, and keep working with no signal.
  • Managers assign jobs, approve big ones and see performance by technician, in their own app or in ERPNext Desk.
  • Accounts gets an invoice for every completed job, with the job, the technician and the parts on it. No re-typing.

One Frappe app is the backend for all of them. One Next.js app is the technician app and the customer portal.

A day with fieldpro

  1. Wanjiku Clinic books "fridge not cooling" on the portal at 8am.
  2. The manager assigns it to Achieng in Desk; her phone gets a notification.
  3. She starts the visit in a basement with no signal. The app records it anyway, along with the parts she uses.
  4. Back in signal, everything syncs. The clinic sees the job move to Done without calling anyone, and signs off.
  5. The invoice is ready in ERPNext with the job, the hours and the parts on it.

How the course works

  • You get the complete product. fieldpro is fully built: the Frappe backend and the Next.js technician app and customer portal. You receive the full source code for both and run it on your own machine from the first lesson.
  • We start with the demo. The first lesson shows the whole application working end to end, so you always know where each piece fits.
  • Every lesson explains the code that matters. We take one feature at a time, see it working, then walk through the key functions behind it and why they are designed that way - and the common mistakes that break apps in production.
  • The patterns apply to any client. We use Next.js, but every backend pattern works the same for Flutter, React Native or any other frontend.

Deployment is not part of this course; it is covered in a separate course.

The source code

Everything is in one public repository on GitHub, fieldpro-course: the Frappe backend, the Next.js technician app and customer portal, and the scripts that set them up on your machine. Anyone can clone it, before or after buying the course. Its README walks you through setup.

A fieldpro installation does not let anyone sign in until it is activated with an access code. When you pay for this course, your personal access code is emailed to you, and your course page has a button to send it again. You enter it once.

Each app also has its own repository: fieldpro-frappe (the backend) and fieldpro-nextjs (the technician app and customer portal).

Questions

Call 0116888777 or email hello@upeo.academy.

Prerequisites

  • •A machine (or server) running Ubuntu 22.04 or 24.04 with at least 8 GB RAM.
  • •Frappe and ERPNext v16, Node.js and Git.
  • •Bruno or Postman and a code editor.

Who This Course Is For

  • →Developers who already know Frappe and ERPNext well and want to build real products on top of them: web apps, mobile apps and integrations.
  • →This is not an introduction to Frappe: we assume you can create DocTypes, write controllers and use bench.
USD 46USD 86
🐦 Early-bird price - you save 47%

One-time enrollment · lifetime access

4 of 26 lessons live15%

22 more lessons are being recorded and the full course is expected by Nov 17, 2026. You get every new lesson as it is added.

Early-bird price: 47% off today. The price goes up a little with every new lesson and reaches the full price when the course is complete, so the sooner you join, the less you pay.

This course includes

  • ⏱About 13h of video when complete
  • 🎬26 lessons, 4 live now
  • ♾️Full lifetime access
  • 📱Access on all devices
  • 🏆Certificate of completion

Your Instructor

Karani Geoffrey

Karani Geoffrey

ERPNext Architect & Implementation Consultant · 17+ Years in ERP

Karani Geoffrey is the founder of UPEO Academy and a leading authority on ERPNext implementation in East Africa. With over 17 years of hands-on experience deploying ERP systems across manufacturing, healthcare, retail, and financial services, Karani has guided hundreds of organisations through complex digital transformation journeys.

He is a certified Frappe/ERPNext developer and has built custom Frappe applications for multinational clients. His practical, no-nonsense teaching style bridges the gap between business strategy and technical execution - helping learners not just understand ERPNext, but master it.