Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/25/2026 in all areas

  1. Hi ProcessWire community! πŸ‘‹ I'm excited to share a new module I've been working on: TeleWire - a Telegram notifications module that brings instant messaging capabilities to your ProcessWire sites. The Problem with Current Notification Solutions After running several e-commerce sites and experimenting with different notification systems, I've encountered these recurring issues: πŸ“§ Email (SMTP/WireMail): Requires SMTP server configuration (WireMailSMTP) Google App Passwords setup complexity Emails constantly landing in spam folders Delayed delivery (sometimes 5-10 minutes) No guarantee the recipient will see it quickly πŸ“± SMS (Twilio, etc): Monthly fees just to keep a phone number active (~$1-15/month) Per-message charges (can add up quickly) US compliance requirements (verification, regulations) Not everyone wants to share their phone number πŸ’¬ WhatsApp Business API: Requires business verification Complex setup process API fees and restrictions Limited to business accounts πŸ”” Push services (Pushover, etc): Requires purchasing apps ($5-10 per platform) Recipient needs to install and configure the app Additional barrier to entry Why Telegram? πŸ†“ Completely free - No monthly fees, no per-message charges, no app purchases 🌍 Widely available - Free to download on any platform, 900+ million users worldwide ⚑ Instant delivery - Messages arrive in 1-2 seconds, not minutes 🎯 Low barrier to entry - Just "install the free app and start a chat with the bot" vs "pay $5" or "give me your phone number" πŸ”’ Reliable - No spam filters, no deliverability issues, no carrier restrictions πŸ“± Multi-platform - iOS, Android, Web, Desktop - works everywhere 🎨 Rich features - HTML formatting, emojis, photos, documents, links Key Features πŸš€ Send text notifications with HTML/Markdown formatting πŸ“Έ Send photos and documents πŸ‘₯ Support for multiple recipients (users and groups) πŸ”§ Simple admin interface with test button πŸ“Š Optional logging and debug mode ⚑ Optimized performance with configurable timeouts 🎯 Easy to integrate with hooks Real-World Use Cases E-commerce order notifications: $wire->addHookAfter('FormBuilderProcessor::processInputDone', function($event) { $form = $event->object; if($form->name === 'order-form') { $telewire = $this->modules->get('TeleWire'); $message = 'πŸ›’ <b>New Order</b>' . "\n\n"; $message .= 'πŸ‘€ Customer: ' . $form->get('customer_name')->value . "\n"; $message .= 'πŸ’° Total: $' . $form->get('total')->value; $telewire->send($message); } }); Failed login attempts monitoring: $wire->addHookAfter('Session::loginFailed', function($event) { $telewire = $this->modules->get('TeleWire'); $name = $event->arguments(0); $message = '⚠️ <b>Failed Login Attempt</b>' . "\n\n"; $message .= 'Username: ' . $name . "\n"; $message .= 'IP: ' . $this->session->getIP(); $telewire->send($message); }); Content updates: $wire->addHookAfter('Pages::saved', function($event) { $page = $event->arguments(0); if($page->template == 'article' && !$page->isNew()) { $telewire = $this->modules->get('TeleWire'); $message = 'πŸ“ <b>Article Updated</b>' . "\n"; $message .= 'Title: ' . $page->title . "\n"; $message .= 'By: ' . $this->user->name; $telewire->send($message); } }); Send photos with captions: $telewire = $modules->get('TeleWire'); // Product photo when new product added $telewire->sendPhoto( $page->images->first()->httpUrl, "New product: {$page->title} - \${$page->price}" ); Send documents (invoices, reports): $telewire = $modules->get('TeleWire'); // Send generated PDF invoice $telewire->sendDocument( '/site/assets/invoices/invoice-123.pdf', 'Invoice #123 for Order #456' ); Installation Get a bot token from @BotFather on Telegram (takes 30 seconds) Install the module from GitHub Configure your bot token and chat IDs Click "Send Test Message" to verify everything works Requirements: PHP 8.2+ and ProcessWire 3.0.210+ Admin Interface Features The configuration page includes: βœ… Real-time connection status indicator πŸ§ͺ One-click test message button (AJAX, no page reload) βš™οΈ Configurable parse mode (HTML/Markdown/MarkdownV2) πŸ“ Optional logging with debug mode for troubleshooting ⏱️ Adjustable API timeouts πŸ”‡ Silent mode option (no notification sound) πŸ“Š Message length handling (auto-split long messages) Production Ready This module is currently running on several production sites: 🍫 E-commerce shop - order notifications, stock alerts 🍷 Wine/liquor business - order confirmations, delivery updates πŸ“° News portal - content publishing notifications Average response time: ~150-300ms per notification Getting Your Chat ID Find @userinfobot in Telegram Send any message - it will reply with your Chat ID Important: Start conversation with your bot by sending /start Enter the Chat ID in module configuration For groups: Add the bot to your group, make it admin, and use the negative Chat ID API Documentation // Get module instance $telewire = $modules->get('TeleWire'); // Simple text message $telewire->send('Hello from ProcessWire!'); // HTML formatted message $message = '<b>Bold</b> <i>italic</i> <code>code</code>'; $telewire->send($message); // Send with custom options $telewire->send('Silent notification', [ 'disable_notification' => true, 'parse_mode' => 'Markdown' ]); // Send photo $telewire->sendPhoto('/path/to/photo.jpg', 'Optional caption'); // Send document $telewire->sendDocument('/path/to/file.pdf', 'Document caption'); Feedback Welcome! I'd love to hear your thoughts, use cases, and suggestions. If you've been frustrated with email deliverability or SMS costs for notifications, give this a try! GitHub: https://github.com/mxmsmnv/TeleWire Thanks to the ProcessWire community for the inspiration and all the great modules that helped me learn the PW module system!
    2 points
  2. @adrian You're absolutely right, poor choice of words. I should have said "universally available and free" rather than "already installed". The point was about accessibility vs paid solutions, but I'll fix the wording. Thanks! @Gideon So πŸ˜„ Fair enough! Though getting them to install a free app is still easier than explaining monthly SMS fees to the client!
    2 points
  3. Included are more than 70 issue fixes and 175 commits. Here we’ll zoom in on the numerous new features and improvements to the core for one of our best new versions yet! https://processwire.com/blog/posts/pw-3.0.255/
    1 point
  4. Warning, this module is "vibe coded" and still lightly tested by me, but planning on launching it into production soon. Please test with caution. Think it should be something pretty useful? Sometimes I have options that would be better shown as images/labels, this sets a new Fieldtype that can be used with to new Inputfields that render either checkboxes or radio but tons. https://github.com/elabx/InputfieldRadiosImageLabel You should be able to change the type of any FiletypeOptions to this field and its data should stay consistent. Also inspired by @kixe's FieldtypeSelectColorOptions
    1 point
  5. It was my fault. You have to uninstall and reinstall the module as you have hinted on github. Then the new fields are added to your language templates. So I did not not change anything in the code and it works
    1 point
  6. Good day, @bernhard! First of all, I have to thank you for being who you are. A lone talented enthusiast trying to build a sustainable living on top of our beloved CMS. But not just making sites like the rest of us. But creating your little module-selling empire))) Taking on every hard problem ever put in front of a PW developer and solving it in no time. You have leaded the way for us for some many years. Everyone here has been following you in one way or another. And thus I feel sad about you taking this decision. Yet in the same time I can imagine the freedom you should feel after it. I really wish you good luck in any place your future journey will take you! I sounds like I am saying goodbye to someone leaving, but I am not. I am just saying that every end is the new beginning. What else I would love to invite you into doing is to analyze why this path of yours (creating a bunch of super cool module) didn't lead you to the place expected. Recently @kongondo, the only other prominent paid module creator I can remember, has done the same exit as you. Why is this? This question is of interest to me because I have many times thought about how I myself could build my income upon what I love and know - ProcessWire. Could it be, that PW is so much a DIY kind of thing, that most of us want to build something of our own and are not ready to subdue to modules authors' way of doing things (other than @ryan himself)? Or does everyone here enjoys opensource so much that proprietary is something to avoid? Or is it just simply not enough of target audience?
    1 point
  7. Thank you @bernhard for all the help and support you've given PW devs, including me, over the years. I did notice drop off in your forum posts recently and wondered what was going on. Appreciate you sharing your thoughts and decisions. Wish you well in your new ventures and hope this isn't the end of your PW connection.
    1 point
  8. https://processwire.recipes/ I think this could be a good place.
    1 point
  9. Thank you for all of that @bernhard! Quick question, I noticed the Download button of your RockPDF module goes to a 404 on Github: https://github.com/baumrock/RockPdf There is of course the old open source version but that has been archived and points back to the one on your site. Thanks!
    1 point
  10. We recently launched the digital home for the TECH.LAND Xperience, a cross-border innovation festival. The project required a robust system capable of handling complex schedules and providing a seamless, app-like user experience. Technical Stack & Advanced Techniques: ProcessWire CMS & RockMigrations: The flexible backbone for managing dynamic content. We used RockMigrations for a completely code-driven development workflow, ensuring that all fields, templates, and configurations are version-controlled and easily deployable. Modern Frontend Workflow: Built with RockFrontend and Vite, we utilized the Latte template engine for clean, secure, and maintainable markup. This setup allowed us to use a modern build pipeline with HMR (Hot Module Replacement) during development. Tailwind CSS & DaisyUI: For a rapid, modern, and futuristic UI. DaisyUI provided the foundation for complex UI components like the Side-Panel drawers. AJAX, Fetch API & HTMX Integration: To keep the user experience fluid, we implemented a decoupled approach for session and speaker details. Instead of traditional page reloads, content is fetched dynamically from dedicated ProcessWire endpoints (/ajax/speaker/, /ajax/event/). Interactivity with Alpine.js: We leveraged Alpine.js for lightweight frontend logic, managing the state of the program filters and the dynamic drawer UI without the overhead of a heavy framework. Dynamic Drawer UI: Speaker biographies and session details are presented in a modern Side-Panel component. This allows visitors to explore details without losing their position on the interactive timeline. Hash-URLs & Deep Linking: We implemented Hash-based URLs for the drawers. This ensures that every session and speaker has a unique, shareable link that opens the corresponding drawer automatically on page load, while also supporting the browser's "back" button functionality. Interactive Program Timeline: A high-performance schedule with four parallel stages. Modular Content with RockPageBuilder: For editorial flexibility, we used RockPageBuilder, allowing the team to create complex landing pages with modular, reusable components. Performance Optimization: Fast loading times were achieved through WebP delivery, lazy loading are integrated into our Vite build process (custom module). Key Modules used: RockMigrations: Code-first field and template management. RockFrontend: Vite integration and Latte support. RockPageBuilder: Modular content blocks for editors. SeoMaestro: Comprehensive SEO management. TracyDebugger: Indispensable for rapid development and debugging. Key Success Metrics: 5,000+ Visits shortly after launch. High Engagement: Seamless navigation through complex datasets with zero layout shifts. Editorial Efficiency: Automatic session-to-speaker assignment and drag-and-drop scheduling. complete case-study in german: Explosives Wachstum: Über 5.000 Besucher für die TECH.LAND Xperience kurz nach Launch Visit our website for more insights: dotnetic.de techland-xperience-dotnetic-referenz.mp4
    1 point
  11. As some of you might know from my monthly newsletter I have been struggling with how to proceed with my commercial modules. It's a long story, but last year I reached a point were something had to change. The main problem is that building and selling modules for ProcessWire has never been sustainable for me. Not even close. It has been a lot of work to build the shop. It has been a lot of work to provide proper docs. It has been a lot of work to create videos about the modules so that interested people can get an idea of my modules. That's fine. I knew it would probably not be easy. But I wanted to try πŸ™‚ You never know if you don't try. And I've had hope that it is possible. Unfortunately I don't have this hope any more and that's why I have to draw a line under it. That's also fine. I've learned a lot and I'm really thankful for anybody that has sent some Euros to a stranger that they have never met in person and that excludes any refund πŸ˜„ So for me the decision was taken. It took me quite some time to get there, but here we are. There was just one problem left: My clients. They have put trust in me and I didn't want to disappoint them. Just drawing a line might be a good solution for myself but might be a terrible solution for them (and their clients as well). Just not providing updates and keeping selling them is also not my style. With open sourcing my modules I try to find the best solution for everybody involved and I want to especially thank @FireWire for helping me get there πŸ™‚ What does that mean? I'm using my modules in many of my own projects, which means that I will likely keep them alive for some time. On the other hand I don't plan to develop a lot of websites any more and many modules are somewhat feature complete as @FireWire helped me to realise, so there are no bigger updates planned for any of my modules at this time. Also, none of my modules is tested with the new admin theme. If you want to help out on that front, I'll be happily merging PRs, but as I'm not using it myself I'm not going to fix any issues or adding support for it in my spare time. So if you want to keep using my modules: Go ahead and have fun! πŸ™‚ If you find the modules helpful it's always nice to let me know. Hope this is a good solution for everyone! Thx for reading and all the best.
    0 points
Γ—
Γ—
  • Create New...