-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
Ray Fung edited this page Feb 26, 2026
·
3 revisions
A structured path from zero to production. Pick the track that matches your available time — each level builds on the one before it.
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 runapp → run /hello_world/
|
Interactive shell, route execution |
| 4 | Read each file's comments |
module.php → package.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.
Goal: Build a multi-page app with templates, a JSON API, and event communication.
| # | 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()
|
| # | 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
WRAPPERpattern - Cross-module communication via API and events
- All the core CLI commands
➡️ Next: Pick a track below based on your project's needs.
Goal: Be productive in all major framework subsystems.
| 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 |
| 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 |
| 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 |
| 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 |
| 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
| 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) |