UserFrosting
Modern user management for php

Chances are you're here because you have a great idea for a user-oriented website.

Whether it's a private forum for your gaming community, an employee management system for your business, or the next big social network, you want to get started on your awesome new idea as quickly as possible. You don't want to spend your time reinventing user sign-in and management features for the millionth time. Lucky for you - UserFrosting delivers all of this and more!

Screenshot of a login page

A framework and an application.

UserFrosting is a web framework for PHP. Like other web frameworks, it offers a complete toolbox of programmatic components for building your application.

Unlike other PHP frameworks, it's a fully-functioning user management application, right out of the box. And, it's fully extendable so that you can easily create the custom features you need.

Screenshot of the user management table

Step up your game.

UserFrosting is designed to bring new and returning developers up to speed with the modern PHP community. You'll be comfortably introduced to Composer (the dependency manager), object-oriented design patterns, and the PHP Standards Recommendations (PSR), making your code better structured and easier to manage.

Screenshot of the manage user permissions modal

What's more, you'll learn how to use Node.js and Bower to cleanly manage client-side packages (Javascript and CSS). Transform yourself from a code monkey into a software engineer.

Features

Modern Specs

90's fashion might be back in style, but 90's development practices are not. Our detailed installation guide painlessly introduces you to the modern developer's toolkit.

Sign-in System

Login and persistent sessions ("remember me") are ready out of the box. Basic user functionality is already taken care of for you!

Fully extendable

New in version 4, the modular Sprinkle system lets you implement your application without ever modifying UF's core codebase. Sprinkles can also be used to implement themes, plugins and more - see what our community has to offer!

Admin user management

Built-in user management page lets you view, search, and sort your users, create new user accounts, and edit existing ones. Also provides tools to disable or delete users, manage permissions, and issue password resets.

Separation of concerns

Give the gift of maintainability to your future self, no spaghetti code here.

Roles and permissions

Powerful role-based access control (RBAC) allows you to define fine-grained, programmatic rules for user access, then manage those permissions through the role management page.

Optimization

Define and compile asset bundles with Node.js, leverage caching for template rendering and route resolution, or use Laravel's caching service to cache arbitrary resources. Just about every component can be optimized for production.

User dashboards

Build beautiful dashboards for your users with the default AdminLTE theme.

Documentation

Clear, jargon-free guides for every aspect of the framework. More than just the "how" and "what" - we explain the "why", too. Get answers fast.

FAQ

  • What's the difference between a login script and a framework?

    At least 90% of the time spent on a software project is spent not on writing new code, but reading and debugging existing code. Therefore, it is important to put a lot of care into producing a well-designed application.

    Starting with a framework like UserFrosting is a good way to ensure that you (or others) will be able to understand and maintain your code months or years after the initial work is completed. Anything you find online that bills itself as a "login script" is probably not going to help you produce a piece of software that is built to last.

    While a framework involves a bit of a learning curve compared to "plain PHP," you'll come out a better, more mature developer with a finished project that won't need to be constantly rewritten.

  • Why should I use this? The other options seem easier.

    It may seem simpler to integrate one of the thousands of PHP login scripts that show up in a Google search - and perhaps it would be, at first! But over time, a purely procedural approach tends to leave you with a big ball of mud - a project that is poorly structured and nearly impossible to maintain.

    Furthermore, many of these "user scripts" tend to lack proper maintenance and long-term community support. Bugs and other issues in their codebase can easily end up being your problem, and you may end up needing to significantly rewrite these scripts when major design and security issues come up.

    UserFrosting does take a little more work to set up and learn at first, but it's worth it and we're here to help. The concepts and design principles you'll learn as you write (or rewrite) your project with UserFrosting go far beyond this framework, and even PHP itself! You'll come out a stronger software developer with a more robust application - how many other login scripts can say that?

  • Can I integrate this with my existing scripts?

    Sort of. Actually, you will integrate your existing PHP scripts into a new UserFrosting installation, by implementing a custom Sprinkle. The Sprinkle system helps you keep your code completely separate from the core UserFrosting codebase. This makes it easy to upgrade when a new version of UserFrosting comes out. And, since UserFrosting builds on well-known and widely supported components like Slim, Twig, and Eloquent, much of your code will still be usable even if you decide to move away from UserFrosting in the future.

  • How much does UserFrosting cost?

    UserFrosting is completely free and open source under the MIT license. You can use it for any type of project, even commercial applications - all you need to do is include a copy of the license in any code you distribute that is built with UF. That being said, we always welcome contributions of time, code, and/or money!

Contributors

Louis Charette


Louis is a civil engineer from Montréal, Québec who has a passion for coding. Over the last 10+ years, he has worked on many small projects, learning everything on his own before getting involved with bigger projects. Louis created UserFrosting's Internationalization module, a module crucial to him as a multi-lingual software developer in Canada, where software requires support for both official languages, English and French, as well as UserFrosting's Bakery CLI interface. Overall, he likes to share his knowledge by helping others, the same way he was helped when he first started coding. Louis is one of the main contributors for SimpsonsCity.com.

Jordan Mele


Jordan's a developer at Mayvin Training and a student studying Computer Science at the University of Wollongong. His passion is creating software-based solutions to overcomplicated problems, without taking control away from the user. He's also Australian.

Sarah Baghdadi


Sarah toils behind the scenes to make our website and documentation friendlier and more usable. She's a rising web designer who writes HTML and CSS. Sarah completed her BFA in photography from Indiana University in 2017.

Josh Norris


Josh is a wrongly titled digital marketing assistant who is responsible for everything from IT through to social media management. His passion for web development was sparked back in 2011 when trying to access a hidden function on a website due to it's terrible UI. Josh manages the UserFrosting Facebook presence providing updates to the community and extending the reach of UserFrosting. He is often stalking chat at 'weird' hours due to his east coast Australian timezone where he is often the first person to respond. Currently a Computer Science student at the University of Wollongong, he gets way less sleep than he should.

Srinivas Nukala


Srinivas is a web applications architect, with a passion for open source technologies. He is experienced in building SaaS (software as a service) web applications and enjoys working on open source projects and contributing to the community. He has a Masters in Computer Science from Pune University, India.

Abdullah Seba


Abdullah Seba is an electronic engineering hobbyist and noob developer who is into networking, mining and any cool tech. He also helps out with UserFrosting's testing and support in chat.

Latest Release

v4.1.21
10/21/18

Latest Builds

userfrosting/UserFrosting Build #358
12/04/18

Fix issue where migrate would prevent build-asset to run in bake command (Louis Charette)
State: passed
Started at: 2018-12-04 02:09:41 UTC
Finished at: 2018-12-04 02:16:13 UTC

userfrosting/UserFrosting Build #357
12/04/18

Fix issue with test, change in Resource ctor (Louis Charette)
State: passed
Started at: 2018-12-04 01:57:29 UTC
Finished at: 2018-12-04 02:03:53 UTC

userfrosting/UserFrosting Build #356
12/01/18

The PHP container has composer and uses it via bakey (GitHub)
State: passed
Started at: 2018-12-01 14:53:58 UTC
Finished at: 2018-12-01 14:59:57 UTC

userfrosting/UserFrosting Build #355
12/01/18

Fix Docker instructions (GitHub)
State: passed
Started at: 2018-12-01 14:50:41 UTC
Finished at: 2018-12-01 14:55:22 UTC

userfrosting/UserFrosting Build #354
12/01/18

Fix PHP Docker container See https://github.com/davidk132/processwire-docker-compose/commit/b5097e250472bd27c4d184b29c787939274f05ce for further details about the change. (GitHub)
State: passed
Started at: 2018-12-01 13:53:34 UTC
Finished at: 2018-12-01 13:57:56 UTC