What is Petal Pro?
Petal Pro is a Phoenix boilerplate template with the goal of drastically reducing your time from a new project to a production-ready web application.
We’ve worked on web applications for over a decade now. PHP, Ruby on Rails, Backbone JS, React, Meteor JS, Ember JS, and now Phoenix. Having built and deployed a number of Phoenix apps into the wild (Kindly, Travel Massive and Talentbookr) we realised that the mix phx.new generator it produces a very lean web application and leaves a lot of decision-making to the developer.
To the more experienced developer, this can be liberating, however, it’s also great to have more of a turnkey solution with a sensible set of defaults that get you fully up and running. A solution that, out of the box provides:
- a component library so you don’t have to think too much about the design
- working authentication and user management so users can register and change their settings right away
- admin functionality allowing the basic management of users
- a way of logging user activity so you can see how users use the application
- some email templates that are ready to go and easily editable
- a cheap and reliable email service provider chosen for you (but easily changeable) to send transactional emails
- a CRUD generator that produces a clean and deployable interface
- a way to deploy to production in less than 10 minutes
Having not found the above solution, me and my business partner Nic decided to build it - the result is Petal Pro.
ℹ️ Information: Not an Elixir developer?: Phoenix web apps now compete with Javascript single-page applications thanks to its impressive web socket abilities via LiveView. We hope more Javascript developers will see the immense time-saving abilities of using Phoenix (along with Petal Pro). Imagine having a web application that feels like a SPA, but is all server-side code. You still can create reusable components and don't need to worry about an API. It really can cut your development time in half.
What’s included in v4
v4 is the biggest release yet. Here’s a summary of what’s new on top of the existing foundation:
GDPR compliance
A “Your Data” settings page (/app/users/your-data) lets users download all their personal data as a JSON file and submit account deletion requests. Deletions run as background jobs via Oban, with soft-delete and anonymization cascade across related records.
AI admin chat (Jido-powered)
The admin chat interface is now powered by Jido with a clean tool behaviour pattern. Built-in tools cover user management, org management, changelog operations, and AI cost stats. Adding your own tools is straightforward — implement the PetalPro.Ai.Tool behaviour and register in the tool registry.
Admin MCP server
Connect Claude Code or Claude Desktop directly to your running app. The MCP server at POST /api/mcp exposes admin tools via JSON-RPC 2.0 with bearer token auth. Set MCP_ADMIN_TOKEN and add the server to your .mcp.json — then your AI assistant can query users, manage orgs, publish changelog entries, and more without leaving your editor.
Per-type notification preferences
Users can now control in-app and email delivery independently for each notification type. Security-critical notifications (like password change alerts) are forced-on and cannot be disabled. Use Notifications.notify/3 as the single entry point — it handles preference checks automatically before dispatching.
Rate limiting and error tracking
Auth endpoints are now protected by Hammer-based rate limiting out of the box. Sentry error monitoring auto-activates when you set the SENTRY_DSN environment variable — no code changes needed.
Production Dockerfile
A production-ready Dockerfile is included for containerized deployments. No more rolling your own from scratch.
22 Claude Code recipe commands
.claude/commands/recipes/ ships with 22 slash commands for common customizations: removing billing, switching auth methods, adding integrations, structural changes, and more. Run /recipes:help to see the full list.