ProfiLab
← ПроєктиВласний продукт

Hourgrid — система для майданчиків, які продають годину

Знімальні та фотостудії, зали й переговорні, коворкінги, репетиційні точки, кабінети. Розклад, броні, гроші, клієнти й команда в одному місці — і публічна сторінка, де гість сам обирає вільну годину.

  • Next.js 16 · TypeScript
  • Supabase · PostgreSQL · RLS
  • Stripe · підписки та Connect
  • Anthropic SDK · Groq
  • 3 мови

У цифрах

5ролей із розмежуванням у базі, а не в розмітці
3мови інтерфейсу: англійська, російська, іспанська
16розділів застосунку плюс публічні сторінки
41таблиця бази, 84 міграції

Завдання

Майданчик, який продає годину, живе у спільному календарі та в таблиці з прайсом. Поки броні ставить одна людина, це працює; щойно їх двоє, дві броні стають на один зал одночасно, і виявляється це в день зйомки. Вечірній тариф і переробіток рахують подумки й забувають виставити, заявки розповзаються по WhatsApp, Instagram і пошті, а посилання на таблицю з телефонами й сумами бачить кожен, кому її переслали. Помилка тут коштує не часу, а залу: накладка — це скасований знімальний день.

Що вміє

Розклад, де дві броні не стануть поруч

День і тиждень: години по вертикалі, зали або дні колонками, лінія поточного моменту. Перетин заборонений самою базою — обмеженням за діапазоном, а не перевіркою у формі: другий одночасний запит таку перевірку обходить. Буфер на прибирання входить у зайнятий відрізок, заявка притримує час, скасування його звільняє.

Публічна сторінка броні

За власною адресою майданчика стороння людина без облікового запису обирає зал, день і годину, бачить зайняте закресленим і залишає заявку. Ціну рахує сервер за правилами майданчика, зайнятість віддається без імен гостей, на потік стоять стелі. Вісімнадцять перевірок зроблено від імені сторонньої людини: склад відповіді, відмови на перетин, години роботи, горизонт запису, спроба дістати таблиці напряму.

Ціна, що залежить від часу доби

55 + 55 + 90 = 200, якщо третя година потрапила у вечірній тариф: сума збирається за відрізками, а не множенням на одну ставку. Рахується переробіток із множником і округленням блоками, передоплата й застава за шкоду лежать у різних полях, правила скасування задані щаблями. Згода гостя з договором зберігається знімком тексту — суперечка буде про те, з чим людина погоджувалася тоді.

Захоплення: фото, документ і голос стають чернеткою

Надіслати можна текст, знімок чека, PDF або голосове. Розбір пропонує чернетки п’яти видів — броня, проведення, задача, звернення, клієнт — і окремі рядки додаткових послуг із сумами. Модель нічого не записує сама: запис створює людина натисканням, і помилка розбору коштує одного «відкинути». Розбір іде на сервері, тому згорнутий застосунок або мережа, що кліпнула, його не рвуть.

Гроші, які не можна задвоїти

Підсумки броні — обчислювані колонки бази, їх не можна скласти в коді неправильно; сплачене перераховується тригером з історії платежів, а не зберігається окремим полем. Дохідне проведення не може посилатися на броню — інакше одна оплата потрапила б у місяць двічі. Перелік операцій за місяць, зведення за залами, каналами та статтями, поріг беззбитковості; межі місяця рахуються в поясі майданчика, а не за UTC.

Клієнтська база, яка не лестить

Зрізи: усі, постійні, зникають, ризик, дублі. «Зник» рахується від ритму самого клієнта: той, хто ходить раз на тиждень, зник після трьох тижнів тиші, а той, хто раз на квартал, — ні. Дублі шукаються ступенем схожості: збіг телефону — 100 %, «ї» замість «і» — 95 %, різні прізвища зі спільним початком порога не проходять. Без цього виторг однієї людини поділений між двома картками.

П’ять ролей із розмежуванням у базі

Власник, керівник, адміністратор, бухгалтер, працівник. Працівник не «не бачить» гроші — вони до нього не доїжджають: політики на броні, клієнтів і проведення вимагають ролі, а власний розклад він отримує функцією, де грошових колонок фізично немає. Особисті витрати власника не побачить навіть керівник прямим запитом. Права перевірені запитами з-під справжніх токенів, а не читанням політик.

Звернення й час першої відповіді

Заявки надходять за посиланням-каналом — форма на сайті, Tilda, Make, Zapier — і через власного бота майданчика в Telegram: бот господаря, а не спільний. Система відзначає момент першої відповіді й звіряє його з нормативом майданчика. AI-ресепшн уміє запропонувати вільний час і довести до заявки тим самим шляхом, що й публічна сторінка; кожна машинна відповідь позначена як машинна.

Команда, задачі та зміни

Запрошення посиланням, а не листом: за токеном видно лише назву майданчика й роль, посилання приймається один раз. Задачі сортуються за терміновістю, виконавець рухає статус і пише наступний крок. Зміни — тижнева сітка «люди × дні» із закріпленою колонкою імен; ставка копіюється у зміну знімком, тому підвищена ставка не перераховує минулі місяці.

Екрани

Знімки зроблені на демонстраційних даних: імена, суми й броні вигадані. Розклад справжнього майданчика ми показувати не станемо — там чужі клієнти й чужі гроші. Інтерфейс перемикається на англійську, російську та іспанську.

Година, приміщення, клієнт — сітка дня замість паперового журналу на ресепшені
Година, приміщення, клієнт — сітка дня замість паперового журналу на ресепшені
Переслане голосове стає чернеткою броні — з оригіналом поруч і правом усе виправити
Переслане голосове стає чернеткою броні — з оригіналом поруч і правом усе виправити
Підсумок місяця одним числом: виторг, витрати, борги й точка беззбитковості
Підсумок місяця одним числом: виторг, витрати, борги й точка беззбитковості
Середній час відповіді на заявку — цифра, яку до нас ніхто не рахував
Середній час відповіді на заявку — цифра, яку до нас ніхто не рахував
База сама показує, хто давно не приходив і хто в зоні ризику
База сама показує, хто давно не приходив і хто в зоні ризику
Публічна сторінка броні: гість сам обирає вільну годину — без дзвінків і листування
Публічна сторінка броні: гість сам обирає вільну годину — без дзвінків і листування

Що це замінює

Ліворуч — те, як розклад залу ведуть на більшості невеликих майданчиків. Праворуч — те саме однією системою.

Як ведуть зараз

Таблиця й чат

не коштує нічого рівно до першої накладки

  • Спільний календар і домовленість «спершу спитай у чаті»
  • Прайс у голові, вечірній коефіцієнт і переробіток — руками
  • Заявки у WhatsApp, Instagram і на пошті, без обліку часу відповіді
  • Посилання на таблицю бачать усі, кому його переслали
  • Увечері все це переноситься в таблицю наново

Hourgrid

Одна підписка

реєстрація власна, демонстраційні дані всередині, налаштовувати руками нема чого

  • Розклад, броні, гроші, клієнти й команда в одному місці
  • Публічна сторінка броні на адресі майданчика
  • Ціну за часом доби, переробіток і заставу рахує сервер
  • П’ять ролей із розмежуванням на рівні рядка в базі
  • Фото, PDF і голосове перетворюються на чернетку запису

Ціну на цій сторінці не називаємо: вона змінюється, і актуальна завжди на сайті продукту.

Чим відрізняється від таблиці та спільного календаря

Календар і таблицяHourgrid
Двоє людей і один залДва адміністратори ставлять броні одночасно, накладку виявляють у день зйомкиПеретин заборонений обмеженням бази разом із буфером на прибирання; заявка притримує час, скасування його звільняє
Ціна вечора й вихідногоПрайс у голові або в таблиці, вечірній коефіцієнт і переробіток рахують руками й забувають виставитиПравила ціни за часом, переробіток із множником і округленням, доплати за послуги — суму збирає сервер за відрізками
Хто що бачитьОдна таблиця на всіх: у кого є посилання, той бачить і суми, і телефони, і нотатки про клієнтівП’ять ролей, розмежування на рівні рядка в базі; працівникові грошові колонки не надходять узагалі, а не ховаються стилями
Заявка із сайту та з месенджераПовідомлення розповзаються по WhatsApp, Instagram і пошті; відповідають коли помітять, швидкість відповіді ніхто не рахуєКанал за посиланням і власний Telegram-бот зводять заявки в один перелік, час першої відповіді фіксується й звіряється з нормативом
Занести те, що сталося за деньУвечері переносити чеки, домовленості з листування та «світло 100, трансфер 50» у таблицю рукамиФото, PDF або голосове перетворюються на чернетку броні, проведення чи задачі; людина перевіряє суму й підтверджує
Часовий пояс і переведення годинникаЗакордонний сервіс показує час браузера; у добу переведення годинника сітка розходиться з підписамиЧас зберігається з поясом і показується в поясі майданчика; доба на 23 і 25 годин перевірена окремими тестами

Порівнюємо не з конкретними програмами, а з тим, як розклад ведуть на більшості невеликих майданчиків: спільний календар, таблиця з прайсом і листування в месенджерах. Імен не називаємо навмисне — тарифи й склад функцій змінюються швидше, ніж сторінка. Якщо ваша програма щось із правого стовпця вже вміє, напишіть: виправимо. Незручна таблиця краща за неправдиву.

Як іде запуск

З усіх наших продуктів цей стартував найсильніше. За перші три дні — понад сотня заявок і перші замовлення: попит на систему для тих, хто продає годину, виявився гострішим, ніж ми розраховували.

Працює цілком, а не частинами: розклад із забороною накладок, публічна сторінка броні, гроші, клієнти, команда й розбір надісланого — усе, що описано вище, вже в ділі.

Технології

Next.js 16 і TypeScript у строгому режимі на боці інтерфейсу, Supabase і PostgreSQL на боці даних: 41 таблиця і 84 міграції. Права доступу живуть там само, у базі, а не в розмітці й не в перевірці на вході до екрана: працівник не побачить чужого, навіть якщо звернеться до даних в обхід інтерфейсу. Підсумки броней і сплачені суми теж рахує база — обчислюваними колонками й тригерами, щоб те саме число не збиралося у двох місцях по-різному.

Розбір надісланого ділять дві моделі: Anthropic для тексту й документів, Groq для розшифровки мовлення. Оформлення — Tailwind 4 і власний шар скла поверх нього, інтерфейс англійською, російською та іспанською через next-intl, підписки й приймання оплати — Stripe і Stripe Connect, помилки збирає Sentry. Час усюди зберігається з поясом і показується в поясі майданчика: доба на 23 і 25 годин перевірена окремими тестами, бо в день переведення годинника сітка розходиться з підписами саме в тих, хто про це не подумав.

Продаєте час свого приміщення?

Студія, зал, коворкінг, репетиційна точка, кабінет — якщо одиниця продажу у вас година, подивіться систему зсередини: реєстрація власна, демонстраційні дані всередині, налаштовувати руками нічого не потрібно. А якщо ваш розклад влаштований інакше, ніж у всіх, — розкажіть, і подивимося, що під нього виправити.

Заповнити анкетуВідкрити gethourgrid.com
WhatsApp