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!
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.
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.
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.
Login and persistent sessions ("remember me") are ready out of the box. Basic user functionality is already taken care of for you!
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!
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.
Give the gift of maintainability to your future self, no spaghetti code here.
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.
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.
Build beautiful dashboards for your users with the default AdminLTE theme.
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.
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.
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?
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.
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!
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'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 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 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 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 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.
withControllerTrait, as an alternative for deprecated
WithTestUserTrait returning a user with id of zero or reserve master id when a non-master user was asked. If master user already exist, will return it instead of trying to create a new one (with the same id)
Merge pull request #1 from amosfolz/update-league-csv
Update league/csv (GitHub)
Started at: 2019-06-23 11:46:42 UTC
Finished at: 2019-06-23 12:20:22 UTC
Fix Styling (Louis Charette)
Started at: 2019-06-23 03:14:33 UTC
Finished at: 2019-06-23 03:57:54 UTC
Fix issue with Symfony/Console throwing error when empty array is passed to `writeln` (Louis Charette)
Started at: 2019-06-23 02:57:11 UTC
Finished at: 2019-06-23 03:31:27 UTC
Remove nullable in down (Amos Folz)
Started at: 2019-06-21 01:06:45 UTC
Finished at: 2019-06-21 01:44:03 UTC
Merge branch 'allow-null-group-assignment' into issue-#867 (amosfolz)
Started at: 2019-06-19 19:09:33 UTC
Finished at: 2019-06-19 19:41:02 UTC