{"id":19081434,"url":"https://github.com/kristi11/ww-filament","last_synced_at":"2025-04-30T07:45:39.496Z","repository":{"id":251462331,"uuid":"804664200","full_name":"kristi11/ww-filament","owner":"kristi11","description":"A TALL stack foundation for niche marketplaces and small businesses.","archived":false,"fork":false,"pushed_at":"2025-04-08T16:38:17.000Z","size":29391,"stargazers_count":22,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-08T17:35:11.932Z","etag":null,"topics":["alpinejs","appointments-manager","business","customization","dashboard","e-commerce","filamentphp","laravel","livewire3","otp","roles-permission-management","stripe","stripe-api","stripe-payments","tailwindcss","tall-stack"],"latest_commit_sha":null,"homepage":"https://www.wittyworkflow.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kristi11.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"tanellaris","custom":null}},"created_at":"2024-05-23T02:59:58.000Z","updated_at":"2025-04-08T16:38:21.000Z","dependencies_parsed_at":"2024-09-12T13:33:52.440Z","dependency_job_id":"e8533f8f-f714-4962-986f-300cfaa70175","html_url":"https://github.com/kristi11/ww-filament","commit_stats":null,"previous_names":["kristi11/ww-filament"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristi11%2Fww-filament","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristi11%2Fww-filament/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristi11%2Fww-filament/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristi11%2Fww-filament/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kristi11","download_url":"https://codeload.github.com/kristi11/ww-filament/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249479070,"owners_count":21279191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpinejs","appointments-manager","business","customization","dashboard","e-commerce","filamentphp","laravel","livewire3","otp","roles-permission-management","stripe","stripe-api","stripe-payments","tailwindcss","tall-stack"],"created_at":"2024-11-09T02:35:09.032Z","updated_at":"2025-04-30T07:45:39.487Z","avatar_url":"https://github.com/kristi11.png","language":"PHP","funding_links":["https://buymeacoffee.com/tanellaris"],"categories":[],"sub_categories":[],"readme":"\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kristi11/wittyworkflow/\"\u003e\n    \u003cimg src=\"public/android-chrome-192x192.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eWitty workflow\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n    A platform for managing your business\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n \u003ca href=\"#interactive-demo\"\u003eInteractive Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/kristi11/wittyworkflow/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/kristi11/wittyworkflow/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\n\u003e # This app is in active development\n\n## **THIS REPOSITORY SHOULD BE USED ON A BRAND-NEW PROJECT**\n\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e \u003ca href=\"#interactive-demo\"\u003eInteractive Demo\u003c/a\u003e\n        \u003cli\u003e\u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#use-cases\"\u003eUse cases\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#quickstart\"\u003eQuickstart\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#command_list\"\u003eCommand list\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#configuration\"\u003eConfiguration\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#disabled-features\"\u003eDisabled features\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#panel-switching\"\u003ePanel switching\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#adding-variants\"\u003eAdding variants\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#otp\"\u003eOne Time Passwords\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#shop\"\u003eShop\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#whats-next\"\u003eWhat's next\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#known-issues\"\u003eKnown issues\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#workaround\"\u003eWorkaround\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n##### WittyWorkflow is a TALL stack (Tailwind CSS, Alpine.js, Laravel, Livewire) foundation designed for building niche marketplaces and small business management tools. Whether you’re crafting an e-commerce shop, managing appointments, or creating custom workflows, this modular platform—powered by Filament PHP—offers a robust starting point. It’s built to be forked, extended, and deployed fast, with features like role-based dashboards, Stripe payments, and customizable UI out of the box.\n\n##### Originally a demo app, WittyWorkflow has evolved into a versatile base for real-world projects. A prime example? It’s being adapted into the Artisanal Food Production Manager—a marketplace example connecting artisanal producers to customers, complete with product listings, orders, and secure payments. Developers can use it as-is for small business needs or tailor it to specialized industries like handmade goods, local services, or boutique retail.\n\n### Interactive Demo\n\n**Watch a guided tour of Witty Workflow's key features and intuitive interface.**\n\n\u003ca href=\"https://app.arcade.software/share/h1IWCpnFk0tsYB0N8bIz\"\u003e\n  \u003cimg src=\"public/demo-thumbnail.png\" alt=\"Interactive Demo\" width=\"100%\"\u003e\n\u003c/a\u003e\n\n### Key Features\n\n\u003e * **Dynamic Hero:** Capture attention with a visually stunning, admin-customizable hero section—fully editable via Filament for a seamless experience.\n\n\u003e * **Role-Based Access:** Leverage Filament PHP for flexible, role-based dashboards—admins control all, team members and customers (e.g., producers/retailers) get tailored views, powered by Shield.\n\n\u003e * **SPA-Like Navigation:** Enjoy smooth transitions with Livewire’s `wire:navigate`—enhances UX across panels and public pages.\n\n\u003e * **Customizable Contact \u0026 Footer:** Boost engagement with a public email form and admin-editable footer for terms, help, or business details.\n\n\u003e * **E-commerce Module:** A TALL stack shop with Stripe integration, product management, and admin control—perfect for niches like artisanal food.\n\n\u003e * **Appointment Management:** Schedule and manage appointments with email notifications—optional for service-based apps.\n\n\u003e * **Security Suite:** Protect accounts with 2-Factor Authentication (2FA) and One-Time Passwords (OTP)—toggleable for your needs.\n\n\u003e * **Theme Customization:** Tailor the app’s look with admin-controlled themes and section visibility—swap styles without code.\n\n\u003e * **Application Health:** Monitor performance and server status with Spatie Laravel Health—actionable insights from the dashboard.\n\n\u003e * **Business Settings:** Manage announcements, visibility, and niche-specific data—adaptable for any small business or marketplace.\n\n\u003e * **Developer Tools:** Demo seeds, and modular structure—fork and extend with ease.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Built With\n\nThis section lists all major frameworks/libraries used to bootstrap this project.\n\n* Laravel 10.x\n* Filament 3.x\n* PHP 8.1\n\n\n* ![Laravel](https://img.shields.io/badge/laravel-%23FF2D20.svg?style=for-the-badge\u0026logo=laravel\u0026logoColor=white)\n* ![Livewire](https://img.shields.io/badge/livewire-%234e56a6.svg?style=for-the-badge\u0026logo=livewire\u0026logoColor=white)\n* ![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white)\n* ![Filament](https://img.shields.io/badge/Filament-FFAA00?style=for-the-badge\u0026logoColor=%23000000)\n* ![Alpine.js](https://img.shields.io/badge/alpinejs-white.svg?style=for-the-badge\u0026logo=alpinedotjs\u0026logoColor=%238BC0D0)\n* ![Stripe](https://img.shields.io/badge/Stripe-5469d4?style=for-the-badge\u0026logo=stripe\u0026logoColor=ffffff)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Use Cases\n\n#### WittyWorkflow powers niche apps—here’s how:\n\n- **Artisanal Food Marketplace**: Producers list products, customers order, payments via Stripe.\n- **Local Service Hub**: Book appointments for craftspeople, manage team schedules, customize the public page.\n- **Boutique E-commerce**: Run a standalone shop with themed UI, secure logins, and order insights.\n- **Creative Freelancer Platform**: Artists and designers showcase portfolios, clients request quotes and track project milestones.\n- **Pop-up Event Manager**: Coordinate vendors, sell tickets, and create dynamic event pages with real-time updates.\n- **Fitness Studio Management**: Schedule classes, process memberships, and enable instructor/client communication.\n\nFork it, tweak it—build your vision fast.\n\n\u003c!-- GETTING STARTED --\u003e\n\n### Getting Started\n\nGet WittyWorkflow running in minutes—perfect for prototyping or building your next niche app.\n\n#### Quickstart\n1. Clone the repo:\n   ```\n   git clone https://github.com/kristi11/ww-filament.git\n   ```\n   \n2. Cd into project\n    ```\n    cd ww-filament\n    ```\n   \n2. Install NPM dependencies\n\n   ```\n    npm install\n   ```\n\n3. Install the composer dependencies.\n\n   ```\n   composer install\n   ```\n4. Create a copy of your .env file.\n\n   ```\n    cp .env.example .env\n   ```\n5. Generate an app encryption key.\n\n   ```\n   php artisan key:generate\n   ```\n\n   if using laravel [forge](https://forge.laravel.com/) there's no need to generate key since when creating the\n   server [forge](https://forge.laravel.com/) will take care of the key generation.\n6. Create an empty database for your application. I personally like using [TablePlus](https://tableplus.com/), but you\n   can\n   use whatever you like.\n7. In the `.env` file, add database information to allow Laravel to connect to the database. The default database name\n   is `ww_filament`. If you are using a different name, you'll need to edit the `DB_DATABASE` variable in the `.env`\n   file with your database name.\n8. Migrate and seed the database.\n\n   ```\n   php artisan migrate:fresh --seed\n   ```\n9. WittyWorkflow uses [Shield](https://filamentphp.com/plugins/bezhansalleh-shield) plugin\n   to provide proper user roles. We need to set up the plugin and generate the permissions for that package\n\n   ```\n   php artisan shield:setup --fresh\n   php artisan shield:generate --all --panel=admin\n   ```\n\n   and define the super admin of the system\n\n   ```\n   php artisan shield:super-admin --user=\"1\"\n   ```\n\n   `--user=1` is the `id` of the user that will be the `super admin`. You can change it to whatever user you want to be\n   the `super admin`.\n10. Link the storage folder.\n\n    ```\n    php artisan storage:link\n    ```\n11. Run the application.\n\n    ```\n    php artisan serve\n    ```\n12. Visit your application in the browser.\n\n    ```\n    http://localhost:8000\n    ```\n\n### Command list\n\n```\ngit clone https://github.com/kristi11/ww-filament.git .\nnpm install\ncomposer install\ncp .env.example .env\nphp artisan key:generate\nphp artisan migrate:fresh --seed\nphp artisan shield:setup --fresh\nphp artisan shield:generate --all --panel=admin\nphp artisan shield:super-admin --user=\"1\"\nphp artisan storage:link\n```\n\nDon't forget to run `npm run dev` and `php artisan serve`\nafter the above commands are ran.\n\n\u003e [!NOTE]\n\u003e\n\u003e Don't forget to update your Mail settings to reflect your production server's needs\n\nI use [Mailtrap](https://mailtrap.io/) for local email testing. You can use whatever you like. If you want to\nuse [Mailtrap](https://mailtrap.io/),\ncreate an account and add the credentials to the `.env` file. If you are using [forge](https://forge.laravel.com/) you\ncan add the credentials to the server environment variables.\n\nIf you decide to use [Mailtrap](https://mailtrap.io/), you can use the following credentials:\n\n```\nMAIL_MAILER=smtp\nMAIL_HOST=smtp.mailtrap.io\nMAIL_PORT=2525\nMAIL_USERNAME=your_username\nMAIL_PASSWORD=your_password\nMAIL_ENCRYPTION=tls\nMAIL_FROM_ADDRESS=your_email\nMAIL_FROM_NAME=\"${APP_NAME}\"\n```\n\n\nIf you are using [forge](https://forge.laravel.com/) you can add the credentials to the server environment variables.\n\n\u003c!-- SHOP --\u003e\n\n## Shop\n\nAdd the Stripe credentials:\n\n```\nSTRIPE_KEY=your-stripe-key\nSTRIPE_SECRET=your-stripe-secret\nSTRIPE_WEBHOOK_SECRET=your-stripe-webhook-secret\n```\n\nIn your local server (for testing purposes only) use [stripe-cli](https://docs.stripe.com/stripe-cli) and run `stripe login` to log in into stripe and then `stripe listen --forward-to {your url here}/stripe/webhook --format JSON` to listen to Stripe's webhook.\nAfter running the `stripe listen` command you will be provided with the `STRIPE_WEBHOOK_SECRET` that you need to paste into your `.env` file for the webhook to function properly. Installation instructions for your local development environment will be in the stripe-cli link above\n\nTo make test purchases in your local environment you can enter card nr. `4242 4242 4242 4242`. Any 4 numbers for expiration date for example `03/11` and any 3 numbers for CVC code for example `111`. This is stripe's testing card numbers\n\n#### To enter Stripe's live mode you need to complete your business profile in [Stripe's dashboard](https://dashboard.stripe.com/test/dashboard) and change the API keys from _test_ to _live API keys_. Also after running `php artian cashier:webhook` in your production server you need to go to the [webhooks page](https://dashboard.stripe.com/webhooks) click on the newly created webhook and copy the `Signin secret` to your `STRIPE_WEBHOOK_SECRET` in your `.env` file. Also, I noticed that the `php artian cashier:webhook` doesn't generate the `checkout.session.completed` so you will have to do that manually in order for the purchase to go through. To do that click on the newly created webhook and as of `11/13/2024` you can go to the `...` button on the right side of the page, choose `update details` and on the `events to send` click `select events...` and enter `checkout.session.completed`. This way stripe will start listening for the event and proceed the payment.\n\n# Your application is now ready for use. Enjoy! To install it in production follow your servers specific needs.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Configuration\n\n### **Disabled features:**\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e #####  Switch the `canEdit()` function in `CRUDSettingsResource.php` to `true` ose `false` to enable or disable choosing whether the admin should be able to edit content or not.\n\n### **Side note:**\n\n#### If the `canCreate()`, `canEdit()` or `canDelete()` functions return anything other than a `true` or `false` value is best not to mess with that value because that value is supposed to be that way.\n\nWittyWorkflow uses [filament-breezy](https://filamentphp.com/plugins/jeffgreco-breezy) to\nmanage user profiles. Change the following value to `shouldRegisterUserMenu: true/false` depending on your app's needs,\nto `enable/disable` profile editing on `AdminPanelProvider.php` and `TeamPanelProvider.php` for the `Admin` and `Team member`\nroles\n\n```\n-\u003emyProfile(\n    shouldRegisterUserMenu: false, // Sets the 'account' link in the panel User Menu (default = false)\n    shouldRegisterNavigation: false, // Adds a main navigation item for the My Profile page (default = false)\n    navigationGroup: 'Settings', // Sets the navigation group for the My Profile page (default = null)\n    hasAvatars: false, // Enables the avatar upload form component (default = false)\n    slug: 'profile' // Sets the slug for the profile page (default = 'my-profile')\n\n)\n-\u003eenableTwoFactorAuthentication(\n    force: false, // force the user to enable 2FA before they can use the application (default = false)\n)\n```\n\n### Role configuration\n\nWittyWorkflow used the [Shield](https://filamentphp.com/plugins/bezhansalleh-shield)\npackage to manage roles as stated above. In order to give permissions to manage appointments go on the `Roles` section of the dashboard, inside the `Settings` sidebar menu group and for both `team_user` and `panel_user` choose `select all` on\nthe `Appointment` model permissions and to give the `panel_user` view permissions on the gallery choose  `view`\nand `view any` under the `Gallery` model permissions. Also give the `panel_user` all permissions on the `Order` model permissions.\n\n### Role explanation\n\n#### In order to use the Team role you need to create the role from the admin panel and the name of the role should be 'team_user' as it doesn't exist by default and then assign that role to a desired user. Multiple roles can be assigned to a user\n\n* `super_admin` = The super admin of the system\n* `team_user` = The team members of the system assigned by the Super Admin\n* `panel_user` = The panel for the customers\n\n### Panel switching\n\n\u003e [!NOTE]\n\u003e\n\u003e In order to properly switch user panels for different roles the admin of the system must be assigned all the available roles (`super_admin`, `team_user` and `panel_user`) in the user resource. That way the admin will not be prompted with a `403` code when trying to access a panel that he doesn't have access to.\n\n\u003c!-- Adding variants --\u003e\n\n### Adding variants\n\n**There are quite a few steps you need to take to add/edit/delete variants, and I'll walk you through all of them:**\n\n* Create migration to `add/edit/delete` database variants.\n* Update the `ProductVariant.php` factory if needed. As of now only the `size` and `color` variants are assigned on the initial database seed just to keep things simple.\n* Add the`Enum` for the newly created variant in `App/Enums`. To keep things simple, the enum can be named the same name as the database column, but you can name it whatever you want.\n* Update the `getForm()` function in `ProductVariant.php` model, add/edit/delete the desired variants.\n* Update the `$table` function in `ProductVariantResource.php`, add/edit/delete the desired variants.\n* Update the `$table` function in `VariationsRelationManager.php`, add/edit/delete the desired variants.\n* Add/Update/Delete the newly created Enum name inside `config/enums.php`.\n* Update '$casts' on the `ProductVariant.php` model\n\n**If the above steps have been implemented, your newly created variant is ready for use throughout the app.**\n\n\u003e [!NOTE]\n\u003e\n\u003e **The App comes preloaded with some general variants and some tech variants. You should add the variant types that fit the type of store you're building.**\n\n\u003c!-- One Time Passwords --\u003e\n\n\u003e [!Important]\n\u003e\n\u003e OTP is now available for an extra added layer of security. To enable OTP just go to your desired panels and uncomment  `//FilamentOtpLoginPlugin::make(),`. The available panels are `AdminPanelProvider.php`, `CustomerPanelProvider.php` and `TeamPanelProvider.php`. If you're going to enable OTP is advisable to enable it on all panels but that depends on your app's needs.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\nTo access the `super-admin dashboard, go to the [Super-admin dashboard](https://wittyworkflow.com/admin/login) and enter the following\ncredentials::\n```\nEmail: admin@example.com\nPassword: password\n```\n\nTo access the `team dashboard` go to the [Team dashboard](https://wittyworkflow.com/team/login) and enter the following\ncredentials:\n\n```\nEmail: team@example.com\nPassword: password\n```\n\nTo access the `customer dashboard` go to the [Customer dashboard](https://wittyworkflow.com/dashboard/login) and create\nan account\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ROADMAP --\u003e\n\n## Roadmap\n\n1. [X]  Create separate dashboards for each user role\n2. [X]  Add Filament [Shield](https://filamentphp.com/plugins/bezhansalleh-shield) for managing user roles and\n   permissions\n3. [X]  Create business information resources (appointments, services, users etc. )\n4. [X]  Add socials resource for referencing business's social profiles\n5. [X]  Add CRUD functionality to sections of the public page for a more controlled and customizable experience\n6. [X]  Add Hero animations\n7. [X]  Add footer resources to give users an easy way to add their policies, FAQ and other business related information\n8. [X]  Add flash notifications and email notifications for appointment changes\n9. [X]  Add shop for purchases\n11. [X]  Improve visuals (**ongoing effort**)\n15. [X]  Add [Announce](https://filamentphp.com/plugins/rupadana-announce) package to announce different messages to\n    system users\n16. [X]  Add [Themes](https://filamentphp.com/plugins/hasnayeen-themes) package to give users more options on system\n    layout and design\n17. [X]  Add [Filament Breezy](https://filamentphp.com/plugins/jeffgreco-breezy) for 2-factor authentication and better\n    profile updating\n18. [X]  Add [Language-switch](https://filamentphp.com/plugins/bezhansalleh-language-switch) to support different\n    languages\n19. [X]  Add [Spatie Laravel Health](https://filamentphp.com/plugins/shuvroroy-spatie-laravel-health) to check how the\n    app is running.\n22. [X]  Add One Time Passwords (OTP) for an extra added layer of security\n23. [X]  Add [Panel switch](https://filamentphp.com/plugins/bezhansalleh-panel-switch) so the administrator switches between the panels for each of the available roles to see what's available for that particular panel and make the necessary changes if needed\n24. [X] Add [auto logout](https://filamentphp.com/plugins/niladam-auto-logout) plugin where you can set an auto logout timer to bump up security\n\n### Whats-next\n### WittyWorkflow is evolving—here’s what’s next:\n\n- [ ] **Niche Marketplace Features**: Add producer/retailer panels, delivery tracking for projects like artisanal food hubs (Help Wanted).\n- [ ] **Enhanced E-commerce**: Stripe Connect payouts, shipping integrations (e.g., USPS API).\n- [ ] **Core Polish**: Improve visuals, optimize dashboard data (Ongoing).\n- [ ] **Dev Tools**: Add Laravel Reverb for live order tracking, Excel export for orders.\n- [ ] **User Experience**: Theme switcher UI, email template builder (Help Wanted).\n- [ ] **Analytics**: Basic admin stats (e.g., sales, user growth).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ISSUES --\u003e\n\n\u003e [!NOTE]\n\u003e\n\u003e ## Known issues\n\u003e\n\u003e The following are the known issues that need addressing and I hope that the community will step in and work on them:\n\u003e\n\u003e * Cart items don't get sent from `session id` to `user_id` if the user was logged out when placing the order but after filling out the cart logs in/registers for an account to continue with the order.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Workaround\n\n* For now as a workaround only logged-in users can add to cart.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nLove open source? Help shape WittyWorkflow:\n\n1. Fork the repo.\n2. Create a branch: `git checkout -b feature/your-idea`.\n3. Commit changes: `git commit -m \"Add cool thing\"`.\n4. Push: `git push origin feature/your-idea`.\n5. Open a PR to `main`.\n\nCheck [Issues](https://github.com/kristi11/ww-filament/issues) for tasks (e.g., cart bug)—email tanellari@gmail.com with questions.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\n## Connect with Me\n[\u003cimg src=\"https://simpleicons.org/icons/github.svg\" alt=\"GitHub\" width=\"30\"/\u003e](https://github.com/kristi11)\n\nProject Link: [https://github.com/kristi11/ww-filament/](https://github.com/kristi11/wittyworkflow/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n\n## Acknowledgments\n\nI've included a few of my favorite links to kick things off!\n\n* [Laravel](https://laravel.com)\n* [Filament](https://filamentphp.com/)\n* [Livewire](https://livewire.laravel.com)\n* [Tailwind CSS](https://tailwindcss.com)\n* [README Template](https://github.com/othneildrew/Best-README-Template/)\n* [Markdown Badges](https://github.com/Ileriayo/markdown-badges)\n* [Choose an Open Source License](https://choosealicense.com)\n* [GitHub Pages](https://pages.github.com)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#about-the-project\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkristi11%2Fww-filament","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkristi11%2Fww-filament","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkristi11%2Fww-filament/lists"}