Pro Roadmap

Roadmap

Request new functionality and vote for what you want
Proposed
Yet to be confirmed
API using Ash Framework
Setup Ash Framework with some example APIs. See ash-elixir.org
36
36
Open telemetry setup
Open telemetry tracing
23
14
Rich collaborative text editor
Similar to https://livebook.dev/ and https://tiptap.dev/ which enables users to enter rich text that can be used to build blogs/wikis ( with collaboration ).
22
15
Video series building a web application from start to finish
A step by step video series. It will assume you know the basics of Phoenix. Similar to the walkthrough in the docs but go into more detail and build a different application.
15
19
Add phx_live_storybook support
You've already provided all these wonderful components, but it would be great to be able to view them within our applications using phx_live_storybook - this would be handy as to not have to constantly refer to the online documentation or if we override the components provided with our own customizations on the comonents. https://hexdocs.pm/phx_live_storybook/PhxLiveStorybook.html
10
13
Paddle subscription support
As an alternative to Stripe membership, support paddle too (makes accounting much easier!!)
11
5
Add feature flags
Recommend integrating the 'Fun with Flags' package. It would be helpful for our project to have feature flagging available for both website within the admin panel and org admin levels within the org settings. Such granularity can streamline our development process and enhance user flexibility.
11
4
Add affiliate links
Add ability to create unique links which provide discount for the buyer and small fee for the affiliate. this would mean 3 features: 1. Ability to associate a affiliate link or get parameter for a registered user which is persisted in the browser cookie when they use the site. It can also be just a coupon which is used in the checkout or both. 2. When user uses the coupon they'll get percent or absolute amount of discount. 3. Small fee is collected to the user who created the affiliate link. 4. These fees can be manually paid to the PayPal account which is also collected from the same user. This would be useful for the Petal Pro itself as well and I would be happy to drive more customers for you from my blog and social accounts. This is also typically more cheaper than buying ads.
9
3
User registration optional
It would be awesome if we had a switch for enable_user_registration. Even if it's just before the launch so nobody except the beta users log in or if it's because it's an admin backend and no users would need to register.
9
3
Improve Test Coverage
As of v1.5.0, test coverage is rated at 52.2%. Improving test coverage would be easier for maintainability-minded devs and managers. Gist of coverage results: https://gist.github.com/Rio517/c16d8b82ad62e743a8601537389cfc0f
8
2
SAML SSO Authentication
Be able to provide option for SAML single sign-on authentication (SSO) between the app (a service provider) and an identity provider.
6
6
SQLite (via Litestream) option in starter template
Some of the cool kids are now using Litestream (https://litestream.io) as part of their Phoenix setup instead of Postgres. It'd be great if this was provided as an out-of-the-box option for setting up a new phoenix site with the Petal Pro template.
5
8
Video series / articles about the implementation of new features
Since upgrading Petal isn't so simple right now, an alternative would be to educate the user base on how to incorporate the new features in an existing Petal-based app.
4
9
Passkey support
Support authentication with Passkeys
5
4
AWS S3 with authenticated bucket
Enable S3 uploads to an authenticated bucket. The current implementation of S3 enables read/write to S3 without dependencies but uses a method that forces the access control list read access permission to be completely open, enabling anyone to view bucket contents without authenticating.
5
2
CloudFlare for file uploads
Support CloudFlare R2 for file uploads, similar to the current support for S3 and Cloudinary.
4
2
Honeybadger for error monitoring in production
Errors are hard to track in production - Honeybadger will record any production errors and give you the context. See https://www.honeybadger.io/
3
5
Square integration
Like Stripe, but cheaper in many use cases.
3
3
Embedded multimedia support for videos with cloud integration
Ability to easily embed videos from S3 or similar with FFmpex support and optimisation for mobile devices. Should include hot-linking prevention, time limited access to URLs.
3
3
Responsive image resizing (with blur up)
Make it easy to add responsive images. Ideally with optional lazy loading (e.g. blur-up placeholder). Solution sketch: - Resize at compile time via macros using `Image` library - Heex components that handle srcset boilerplate and lazy-loading with placeholder. References: - https://developers.google.com/search/docs/appearance/google-images#responsive-images - https://www.gatsbyjs.com/plugins/gatsby-plugin-image - https://imagekit.io/blog/lazy-loading-images-complete-guide/ - https://hexdocs.pm/phoenix_live_view/bindings.html#scroll-events-and-infinite-stream-pagination - https://web.dev/browser-level-image-lazy-loading/
3
2
Send email campaigns from within your app
A basic email builder to send marketing or or update emails to your users. Include a filter to send to select user groups. Show the open rates for each email (if possible). This will mean you don't need something like Mailbluster or Sendgrid.
3
2
Switch from SES to Postmark
https://postmarkapp.com/ seems easier to setup than SES.
3
1
Quantity field for Stripe Billing
In the billing page, users can choose between various options to create a Stripe subscription. Each option represents a Stripe Product. However, there is no means to select quantity (e.g. seats). Quantity does exist, but it is hard coded to "1". Update the Stripe Billing page to allow users to nominate a quantity in the user interface. This should be an option that can be enabled - the default UI should remain as is (without quantity selection)
3
0
Web3 Wallet Integration
It would be nice to see some Web3 wallet integration like Metamask
2
3
Phosphor icons library
Add Phosphor icons as an alternative to Heroicons. https://phosphoricons.com/
2
1
Default UUID as primary keys in main branch
It would be nice to enable support for UUID as primary keys by default, instead of patching the main branch with the uuid branch.
2
0
File upload integration with FileStack
Allow users to upload avatars/files with filestack.com
1
1
Request for a "Light" Version of Petal Pro
I'd like to suggest a "light" version of Petal Pro that includes only the essentials: user login/registration, admin login, and basic UI components. This version would omit advanced features like organizations, billing, and subscriptions. This simplified version would cater to users who need just the core functionality for quick setup and development without the added complexity of refactor/ strip out not needed things.
1
0
Beacon CMS integration
Would be great to ship with Beacon CMS for non-technical users to add content to the page. There are some current hex lock issues that prevent this from happening seamlessly today.
1
0
Use resend.com for emails
Resend bills itself as "The best API to reach humans instead of spam folders. Build, test, and deliver transactional emails at scale." https://resend.com/
1
0
Add a file upload configuration for Tigris, expand the S3 example to support update and delete.
Tigris is a globally distributed S3-compatible object storage service natively integrated with Fly.io. Tigris runs on Fly.io hardware and is fully integrated with flyctl. See https://www.tigrisdata.com/ It would be cool to for instance have things like delete of the uploaded image on change or removal of the avatar.
0
1
Tauri based Native applications
Tauri Based Native application Mac .dmg and Windows .exe file generation
0
0
Add extra features in 'data table' component
1. CRUD functionality: Add a header button to insert additional rows and two columns for delete and modify. 2. The option to be CRUD operations if you are admin. 3. Cache the data to be reused for other components.
0
0
Planned
Will be implemented in a future version
Basic CMS supporting markdown
Create content with markdown and display it. Support code blocks and make it easy to add images. Take inspiration from https://fly.io/phoenix-files for the look and feel of a blog posts page.
22
14
Announcements / Changelog
Ability to create announcements / changelog updates for users. New updates appear in the navbar with a little red dot and the number of new unread announcements. Use https://changelog.announcekit.app as inspiration.
13
14
Add physical MFA like yubikey via webauthn, or passkey
It should be possible to login using a physical 2FA token or smartphone passkey via: hardware tokens: - https://yubikey.com/ - https://www.nitrokey.com/#comparison - https://solokeys.com/ passkeys: - passkey overview https://www.tomsguide.com/news/what-are-passkeys & https://arstechnica.com/information-technology/2022/10/passkeys-microsoft-apple-and-googles-password-killer-are-finally-here/ - https://support.apple.com/guide/iphone/sign-in-with-passkeys-iphf538ea8d0/ios - https://developers.google.com/identity/passkeys - fido summary https://fidoalliance.org/passkeys/ This is especially useful for admin accounts, or customer organisational admins. There is significant increase in attacks on sites, where the website is spoofed, and the TOTP style token stolen in real time. The only trusted defence against this is physical h/w tokens and/or webauthn support. update: https://github.com/liveshowy/webauthn_components is making great progress.
10
7
Provide a Feature Request functionality like this one
This page is very useful for new products to help developers understand customer needs. This page looks pretty simple to be done (and probably is done using Petal) so it would be just a matter of providing the code/components/migrations for those who wants to add it in their systems.
7
4

Done
This feature is in the current code
Stripe membership functionality
It would be great to have the ability to take membership payments from users/members out of the box. This would complete the experience from sign up to purchase.
43
27
JSON API
API Account tokens, Swagger / OpenAPI Specification
30
22
Admin dashboard with graphs/stats
Admins usually want to see KPIs in a visual format - display charts using live view - components for displaying stats
25
14
LiveView file uploads - store in Amazon S3
Give an example of a file upload using LiveView and S3.
21
23
Persistent Notifications Management
In many apps, it is common to have persistent notifications for purposes like a new event/message, missing billing info, unpaid invoices, incomplete profile, etc. These notifications usually manifest themselves with a few features: (1) a notifications menu option with a superscript badge to show that there are unread/new notifications (2) a dropdown from the menu to show a list of notifications (3) archivable/dismissable notifications (4) A component for Flash-like messages with call-to-action buttons, e.g., for important pending tasks like providing billing info. (5) Some such notifications might be dismissable, others not.
23
9
Make Sidebar Layout Collapse-able
Add a "hamburger" icon to sidebar layout so when you toggle it, the sidebar collapses to show only the menu icons, rather than the menu icon plus the textual description of the menu item. This way, the main content area can be wider if you have a lot of columns to display. Thanks!
21
15
Admin can see current users (using Phoenix Presence)
Show active users to admins by using Phoenix Presence (https://hexdocs.pm/phoenix/Phoenix.Presence.html).
19
18
User Impersonation
Add the ability to "impersonate" another a user in the application as a super admin. (ex: (ex: https://github.com/ankane/pretender)) This would allow the developer to debug and trouble shoot production issues more easily.
17
19
A combobox component
A combination of a search and select input implemented in a live view. See https://tailwindui.com/components/application-ui/forms/comboboxes.
15
21
Sortable Tables
A component that gives you a sortable, filterable and paginated table out of the box.
8
12
Add 2FA layer to the auth login flow
Add an optional 2FA layer (using nimble_totp?) to the auth login flow, so people can opt to use the 2FA app of their choice (Google Authenticator, Authy, LastPass, etc.).
8
6
Multi-org schema: Org <- OrgsUsers -> Users
A common practice is to have a personal account but then also be a part of an organisation or company. - organisation schema - an org can have multiple users - a user can have an admin role in the org - org admins can invite more users, or remove them - an org can have a Stripe payment method
8
3
Official Figma design kit
Any component we make will be added to the Figma design kit to allow easy screen design mockups.
8
2
Improved upgrade process
Make it possible (if possible) to upgrade Petal versions more easily, then make the service a subscription, so we can continue to get the benefits in our apps. I know this would be hard, but as a solo developer, being able to leverage the improvements in Petal would be huge.
7
7
Convert all auth pages to live view
Convert sign up and register pages to live view.
4
10
Avatar/photo uploads with Cloudinary
Implement user avatars and store them on Cloudinary (cloudinary.com) - a storage service that allows you to resize/modify images simply by altering the URL. This means you don't need to use a tool like ImageMagick to resize/crop/compress your images.
4
6
Set/show times in a users local time zone
4
6
Support UUIDs
It's pretty easy to set up the app to use UUID by default for ids and foreign keys, however, there are places in the code that break, for example, HashId. I'm removing the HashId.encode/decodes but I'm not sure if that is "safe"? It'd be nice if the code supported UUID or ints in these places out of the box. What I've found so far: 1. HashId 2. Passing the ID into an Echo Query (user_id = user_id |> Ecto.UUID.dump!())
4
2
Allow instant deployments to Fly.io
Add a working dockerfile and ensure all the config is correct for fly.io deployments right off the bat
4
2
Passwordless auth
A user can register/sign in with just their email address - they get sent a 4 digit code to enter.
3
6
Install Oban
Make it easy to create background jobs with the state saved in your db
2
2
Oauth2 SSO social logins like Google / Facebook / Apple
Handy for easy sign up/log in
1
4
A Petal version of phx.gen.live
Same as phx.gen.live but the templates output uses Petal Pro's layouts and the form components from Petal Components
1
4
i18n
Use gettext in non-admin areas.
0
5
VSCode snippets for petal_components
Components can be annoying to type with the dot syntax <.blah>. It would be nice to have snippets like button => <.button label="" />
0
3
Upgrade to Phoenix 1.7
Upgrade Petal Pro to Phoenix 1.7
0
1
Use Heroicons v2
Version 2.0.0 was released on 23rd Aug 2022 https://github.com/tailwindlabs/heroicons/releases/tag/v2.0.0 and has a bunch of new icons, renames etc. It would be nice to migrate to it. Until then, the link at https://petal.build/components/heroicons should be updated to https://v1.heroicons.com/ to avoid confusion.
0
1
Add petal.gen.html generator
It would be great to add a petal.gen.html generator to generate controller, views, and context for an HTML resource using Petal Components. Petal Components can be used in regular HEEx templates and not everything should be a LiveView.
0
0
Make LiveView feel faster with a delayed loading indicator
As described in this blog article: https://fly.io/phoenix-files/make-your-liveview-feel-faster/
0
0