Skip to content

Roadmap

Ray Fung edited this page Feb 26, 2026 · 3 revisions

Learning Roadmap

A structured path from zero to production. Pick the track that matches your available time — each level builds on the one before it.


⏱️ 30-Minute Quick Start

Goal: Run a working Razy module locally and understand the core loop.

| Step | What You Do | What You Learn |

|------|-------------|----------------|

| 1 | Install Razy | Composer setup, Razy.phar build |

| 2 | Copy the Hello World demo | 4-file minimal module anatomy |

| 3 | php Razy.phar runapprun /hello_world/ | Interactive shell, route execution |

| 4 | Read each file's comments | module.phppackage.php → controller — handler |

After 30 minutes you know:

  • What a module, controller, and route handler are

  • How to run a route in the interactive shell

  • The minimum file structure every module needs

👉 Next: Follow the Getting Started Tutorial to build a module from scratch.


?→?1-Day Hands-On

Goal: Build a multi-page app with templates, a JSON API, and event communication.

Morning — Core Module Development (3 h)

| # | Topic | Read | Practice |

|---|-------|------|----------|

| 1 | Tutorial | Full walkthrough | Build the app/hello module with 3 routes |

| 2 | Module Structure | File/directory conventions | Rename files, break things, fix them |

| 3 | Routing | addRoute, addLazyRoute, patterns | Add (:d), (:a), optional segments |

| 4 | Controller | Lifecycle hooks, $this context | Add __onReady, try $this->getModuleInfo() |

Afternoon — Templates & APIs (3 h)

| # | Topic | Read | Practice |

|---|-------|------|----------|

| 5 | Template Engine | Variables, blocks, modifiers | Build a layout with WRAPPER block |

| 6 | Cross-Module API | Provider / Consumer pattern | Create a second module that calls the first |

| 7 | Event System | trigger() / listen() | Fire an event from module A, catch it in module B |

| 8 | CLI Commands | runapp, scaffold, validate | Scaffold a new module with php Razy.phar scaffold |

After 1 day you know:

  • How to create modules from scratch (or scaffold them)

  • Template variables, blocks, and the WRAPPER pattern

  • Cross-module communication via API and events

  • All the core CLI commands

👉 Next: Pick a track below based on your project's needs.


🏆 1-Week Mastery

Goal: Be productive in all major framework subsystems.

Day 2-3 — Data Layer

| Topic | What You'll Build |

|-------|--------------------|

| Database | Connect to MySQL/PostgreSQL/SQLite, run queries |

| ORM | Define entities, relationships, eager loading |

| Collection | Filter, map, reduce with dot-notation selectors |

| Cache | PSR-16 cache with TTL and namespaces |

| YAML | Parse config files, dump structured data |

Day 4 — Security & Auth

| Topic | What You'll Build |

|-------|--------------------|

| Session | Secure session handling |

| CSRF Protection | Form token validation |

| Auth Manager & Gate | Role-based access control |

| Crypt | Encryption, hashing, signing |

| OAuth2 | Third-party login integration |

Day 5 — IO & Real-time

| Topic | What You'll Build |

|-------|--------------------|

| HTTP Client | Outbound requests, API consumption |

| XHR | JSON API responses with proper headers |

| SSE | Server-Sent Events for live updates |

| WebSocket | Full-duplex real-time communication |

| Mailer | SMTP email with HTML templates |

Day 6 — Architecture & Patterns

| Topic | What You'll Build |

|-------|--------------------|

| Middleware | Request/response pipeline |

| Pipeline | Stage-based data processing |

| Plugin System | Custom Template/Collection plugins |

| DI Container | Auto-wired services, interface binding |

| Validation | Input validation rules and messages |

Day 7 — Deployment & Operations

| Topic | What You'll Build |

|-------|--------------------|

| Sites Configuration | Multi-domain setup |

| Packaging & Distribution | Bundle modules as .razy packages |

| Repository & Publishing | Publish to a module repository |

| Caddy Worker Mode | Production-grade persistent worker |

| Testing | PHPUnit integration, test conventions |

After 1 week you can:

  • Build full-stack applications with database, auth, and templates

  • Set up real-time features (SSE, WebSocket)

  • Deploy to production with Caddy worker mode

  • Package and distribute your modules


Quick Reference Card

| I want to…| Start with |

|-------------|-----------|

| Just see it work | Hello World demo |

| Build my first module | Tutorial |

| Understand the file layout | Module Structure |

| Add URL routes | Routing |

| Render HTML pages | Template Engine |

| Build a JSON API | XHR + Cross-Module API |

| Store data in a database | Database, ORM |

| Add user login | Session, Auth Manager |

| Send real-time updates | SSE or WebSocket |

| Deploy to production | Sites Configuration, Caddy Worker |

| Generate a module skeleton | CLI Commands (scaffold) |


🏠 Home | Next → Installation

Clone this wiki locally