A beginner-friendly path from zero to building real Frappe apps. Every topic links to documentation, and each phase has a hand-picked video course.
Build a terminal game: the program picks a random number, the player keeps guessing with "too high / too
low" hints until they win. Uses variables, loops, conditions, functions and the random module —
the whole Basics section in one small app. Then level up: a To-Do list app that saves tasks to a file
(file handling + exceptions).
Design a small database with three tables: books, members, and loans (with primary & foreign keys). Then write queries: list all borrowed books with the member's name (JOIN), count loans per member (GROUP BY), and find members with more than 3 active loans (HAVING). This mirrors exactly how Frappe stores linked data.
Take the guessing game from Phase 1: create a repo, commit it, add a README.md, create a
feature branch, make a change, and open a Pull Request to merge it back. That's the exact
workflow you'll use on every Frappe app.
أهم حاجة في الـ phase دي هي الـ JavaScript — تعرف بس تكتب بيها لوجيك زي أي لغة، وشوية حاجات تخصها زي اللي مكتوبين في جزء الـ advanced بتاعها.
جزء الـ HTML & CSS متطوّلش فيه أوي — اعرف بس إزاي تبني صفحة، والـ AI شاطر في الحتة دي أوي. المهم إنك تبقى عارف إن الـ JavaScript هي المحرك والمسؤولة عن الـ interactivity في الصفحة.
Build a to-do app with plain HTML, CSS & JavaScript: add tasks, delete them, mark them done, and update the DOM live on each event. It exercises the whole Advanced JS section (DOM + Events).
The key project for backend-style JS: a user types a city, you fetch live data from the free OpenWeatherMap API, await the response (a Promise), then render temperature, humidity and conditions to the DOM — with error handling for a wrong city. This is exactly the pattern you'll use to call Frappe's REST API later, so treat it as essential, not optional.
لحد هنا أنت أصلًا تقدر تدخل على Frappe مرتاح جدًا وتبدأ تبني Apps وتعدّل على ERPNext. لكن الـ Phase دي هي اللي هتفرّق بين واحد بيعرف يستخدم Frappe، وواحد فاهم هو بيحلّ مشكلة إيه أصلًا.
لو خلّصت المرحلة دي هتبقى مميّز في أي شركة، لأن أغلب الـ Developers للأسف بيعدّوها — يا كسل، يا إنهم شايفين Frappe مجرد Framework بيتبني بيه Apps ومش بيحاولوا يفهموا الـ Business Domain اللي النظام معمول عشانه.
المشكلة الحقيقية بتظهر أول ما ياخد Task من العميل: هتلاقيه واقف مش عارف يبدأ منين — مش لأنه مش بيعرف يكتب كود، لكن لأنه مش فاهم الـ Business Process. والمقصود بالـ Business هنا هو طريقة شغل الشركة نفسها: المخازن بتتحرك إزاي، المشتريات، المبيعات، المحاسبة، التصنيع، الموارد البشرية.
مثال: العميل قالك: «لما أعمل Sales Invoice، الكمية لازم تتخصم من المخزن، ولو العميل رجّع البضاعة في Return Invoice ترجع الكمية تاني.»
لو فاهم Python وFrappe بس، هتقعد تسأل: أخصم منين؟ وإمتى؟ الـ Sales Order بيخصم ولا الـ Delivery Note ولا الـ Invoice؟ وطب لو في Partial Delivery؟ ولو في Reserved Stock؟
لكن لو فاهم أساسيات الـ Inventory Cycle في الـ ERP، هتعرف إن السؤال مش عن الكود — السؤال عن Business Rules. ساعتها هتسأل العميل الأسئلة الصح، وتفتح كود ERPNext وتفهم ليه النظام متطبّق بالطريقة دي بدل ما تخمّن.
No coding here — use the system as a business user. Get a free ERPNext trial, create an Item with stock, then run a full cycle: Sales Order → Delivery Note → Sales Invoice, and watch the stock quantity drop. Next, do a Return and watch it come back. Now you'll feel the business rules behind every DocType you'll later customize.
Build the classic Frappe starter: a Library app where a librarian manages Articles (books), Members, Memberships and Transactions (issue / return). It walks you through Apps, DocTypes, Child Tables, Naming and the ORM. When you can do full CRUD end-to-end, clear the phase — then repeat with a School Management and an Employee Tracker app.
Extend the app from Phase 6 with server-side rules: a document event that blocks issuing a book when stock is 0, a whitelisted method that returns a member's currently-borrowed books to the frontend, and a scheduled job that emails members with overdue books every morning. This is exactly the kind of task a client will hand you.