UserFrosting
Features
Demo
Docs
Forums
Chat
Github
Donate
6.0 Beta
6.0 Beta
Features
Demo
Docs
Forums
Chat
Github
Donate
6.0 Beta
6.0 Beta
Documentation
01.
Quick Start Guide
02.
Web Dev, the Right Way
Introduction
The Client-Server Conversation
Develop Locally, Serve Globally
Don't Reinvent the Wheel
Security
Server Misconfiguration
CSRF Protection
XSS Prevention
SQL Injection Prevention
Authentication & Password Security
Search Engine Optimization
03.
App Structure
Your Application
Built on the shoulders of giants
The Framework
Sprinkles, what are they?
04.
Installation
Requirements
Basic Stack Requirements
Essential Tools for Modern PHP
Dev Environment
Native Installation
Installing Requirements
Installing UserFrosting
Docker
Basic CLI Usage
05.
Sprinkles
Basic concept
Contents
The Sprinkle Recipe
Customizing Your Sprinkle
Community Sprinkles
06.
Dependency Injection
Understanding Dependency Injection
The DI Container
Default Services
Adding Services
Extending Existing Services
07.
Routes and Controllers
Introduction
RESTful Design
RESTful Endpoints
RESTful Responses
Front Controller
Controller Classes
Registering Routes
Client Input
Validation
CSRF Protection
Throttling
AJAX Requests
08.
Pages & Layout
Why use Twig?
Rendering Templates
Templates Inheritance
Twig Filters and Functions
09.
Assets & Vite
Introduction
Getting Started
Vite Configuration
Using Assets in Templates
10.
JavaScript & Vue
The Modern JavaScript Stack
Vue Framework
Vue Basics
Your first component
Building Vue 3 Components
Passing Data from Server to Client
Pinia State Management
TypeScript
11.
UI Framework & Theming
UIkit Introduction
Common UI Components
Building Forms with Vue 3
Data Tables with Vue 3
Managing Collections with Vue 3
Alerts and Notifications
Sprunjes
Customizing Themes
12.
Configuration
Environment Variables
Configuration Files
13.
Users
User Accounts
Authorization
Groups
Activity Logging
14.
Database
Overview
Default Tables
Migrations
Database Seeding
Data Sprunjing
15.
Mail
The Mailer Service
16.
Internationalization
Introduction
Setting up the site language
Using the translator
Advanced translation features
Creating a custom locale
17.
Bakery CLI
Built-in Commands
Custom Commands
Extending Aggregator Commands
18.
Advanced Features
Using Custom Data Models
Application Lifecycle
Exceptions and Error Handling
Sessions
Cache
What, Why, and When?
The Cache Service
The Alert Stream
Locator Service
Logging
File Storage
Events
Middlewares
Webpack Encore
Referencing static assets
Entrypoints
Enabling Sass, Less, Vue and React
19.
Testing
Why Use Automated Testing?
Running Tests
Writing Your Own Tests
Sprinkle Test Case
Helper Traits & Class
Factories
Frontend Testing with Vitest
Testing Vue Components
Mocking & Stubbing
Advanced Testing
Best Practices
20.
Recipes
Creating a new page
Extending the User model
Extending templates and menus
Customizing the login page
Changing user permissions
Adding a 3rd party Javascript package
Advanced tutorial
Setting up the basics
Integrating the Database
Adding the page to the menu
Adding custom authorization
Adding localizations
Customizing the Skeleton
Going further
21.
Troubleshooting
Debugging
Getting Help
Common Problems
22.
Going Live
Hosting Your Site
Mail Providers
VPS Production Environment
Server Setup
Using Git for Deployment
Application Setup
SSL/HTTPS
Additional Recommendations
Backing up Your Data
Unix Primer for Ubuntu
23.
Upgrading
5.1.x to 6.0.x
What's New in 6.0
Step-by-Step Migration Guide
What to Expect After 6.0
24.
Giving Back to UF
Supporting UserFrosting
JavaScript & Vue
Pinia State Management
Edit this page
Pinia State Management
Work in progress
This page is a work in progress. Help complete it by
contributing on GitHub
!
TODO