Six weeks ago I was helping a friend who runs a beauty salon. She was manually texting appointment reminders to every client every evening, tracking inventory in Excel, and paying 20%+ commission to a booking platform for clients she'd spent years building relationships with herself.
So I built Pronto — an open-source POS, CRM, booking system, and omnichannel notification tool for service businesses. Self-hosted or cloud. Zero commission. One command install.
The problem I kept running into
Every open-source business management tool I found fell into one of two categories: either too complex (ERPNext, Odoo — you need a dedicated admin), or too simple (basic POS with no notifications). Nothing in between had Telegram and WhatsApp baked in natively.
That gap is the whole point of Pronto.
What I actually built:
POS — complete a sale in 3 clicks, works offline via PWA
CRM — full client history, tags, visit patterns, birthdays
Appointment booking calendar — drag & drop, no double-bookings (enforced at PostgreSQL level via trigger, not just app logic)
Public booking page — clients book with name + phone only, no registration
Notifications — Email, Telegram, WhatsApp (Meta Cloud API), Viber — all four channels, all firing automatically on booking confirmed / 24h reminder / 1h reminder / thank-you / reactivation / birthday / low-stock
The credential architecture: each self-hoster brings their own API keys (Telegram token, WhatsApp phone number ID, Viber token). Platform owner pays nothing to the messenger providers.
The hardest technical problems
Double-booking was subtle. I had app-level checks but they had a race condition under concurrent load. Fixed it with a PostgreSQL trigger — atomic check at the database level. HTTP 409 on conflict, UI refreshes the slot grid automatically.
WhatsApp has a constraint nobody mentions clearly: Meta Cloud API only allows free-form messages within a 24-hour window after the client initiates contact. Business-initiated messages (reminders, birthday greetings) require pre-approved Message Templates (HSM) submitted to Meta Business Manager. I had to document this honestly — it's a real limitation.
Docker install was the other challenge. The app worked locally but the auth callback broke inside the container because request.url resolved to 0.0.0.0 instead of the real hostname. Fixed by reading NEXT_PUBLIC_SITE_URL explicitly instead of origin detection. Made the whole thing truly one-command after that.
The numbers
18 database migrations
4 notification channels live in v1.0
~$20–25/month total hosting cost at zero customers (existing DigitalOcean server)
1 paying Starter customer ($19/mo) covers hosting. 2 Pro customers ($39/mo) puts it in the green.
MIT license — full code on GitHub
What I'm not sure about
Payment processing as a solo founder based in Georgia (country, not the state) is genuinely hard. LemonSqueezy and Polar.sh both showed "bank payouts not available in your country." Paddle has been pending review for two weeks. Currently testing Dodo Payments. If you've solved this from a non-Stripe-supported country, I'd genuinely love to know what worked.
Also: zero GitHub stars after two weeks. I haven't promoted it anywhere yet — this is literally post #1. I'm curious whether anyone here has found channels that worked specifically for self-hosted tools vs. SaaS.
What's next
v1.5 (Q3 2026): Analytics dashboard, loyalty program, LINE messenger (Japan/Thailand/Taiwan market).
v2.0 (Q4 2026): Staff scheduling, payroll/commissions, AI insights, full i18n.
GitHub: github.com/SGrappelli/pronto
Live demo: trypronto.app
If you run a service business (or know someone who does), I'd love feedback on whether the "no client registration required" angle actually matters to real owners — or whether I'm solving a problem people don't care about.
I know a few founders in non-Stripe countries and indie hackers who might be willing to answer your questions about payment processing and promoting self-hosted tools. Happy to pass some questions along if you'd like.
Hello! Please tell me what these services are.
I'm part of a community called "replyz" where people genuinely help each other out, and I think you'll find the right people there. You can post your question, specify who you'd like answers from, and get detailed responses from members with relevant experience. The only ask is that everyone contributes back by helping others too. Let me know if you want to know more!