TGViewer
Prefire iOS Prefire iOS @prefire_ios · 980 subscribers
Post #118 745
🧾 Как я заменил Supabase на свой сервер с FastAPI + Docker

В ScreenCat можно покупать скины, и раньше это работало через Supabase Edge Functions. Но теперь у нас свой сервер: FastAPI + PostgreSQL внутри Docker, и это стало огромным апгрейдом.


🐣 Немного контекста
Supabase - альтернатива Firebase:
- PostgreSQL + генерация API
- Storage, Auth
- Edge Functions на Deno

Работало, но были проблемы:
- 💤 Функции «засыпали» -> первый запрос после простоя - 3+ сек
- 🔌 Иногда Robokassa не могла достучаться (cold start)
- 🤯 Невозможно нормально логировать
- 🧱 Всё чёрным ящиком


🐳 Почему я перешёл на Docker + FastAPI
Решил развернуть свой backend (GPT мне подсказала что нужно выбирать 😀):
• FastAPI - простой и быстрый Python-сервер
• PostgreSQL - та же база, но у себя
• Docker - магия! Поднял всё одним docker-compose up
• Robokassa бьёт в /result endpoint


⚙️ Пример кода: проверка подписи и UPSERT
signature = md5_upper(f"{OutSum}:{InvId}:{password2}:Shp_email={Shp_email}:Shp_skin={Shp_skin}")
if SignatureValue.upper() != signature:
raise HTTPException(403, detail="Invalid signature")

stmt = insert(Purchase).values(
invoice_id=InvId,
skin=Shp_skin,
status="paid",
email=Shp_email,
).on_conflict_do_update(
index_elements=["invoice_id"],
set_={"skin": Shp_skin, "status": "paid", "email": Shp_email}
)
await db.execute(stmt)
await db.commit()



✨ Что работает сейчас
✅ POST /payment/robokassa/result — принимает оплату
✅ GET /payment/robokassa/status — проверка покупки по email и скину
✅ 🔐 Проверка MD5-подписи от Robokassa
✅ 📬 Уведомление в Telegram о каждой оплате
✅ 🧠 Вся база под контролем — можно смотреть, фильтровать, восстанавливать покупки


📚 Документация API (Swagger, пж не дудосьте)
👉 https://pay.prefire.ru/docs

(Работает сразу из коробки благодаря FastAPI ❤️)

PS: Такой простой сервер оказалось написать проще чем простое приложение)
PS2: Docker вообще супер простая и удобная штука, теперь использую во всех своих скриптах)
  • 🔥 10
  • ❤ 6
  • 👍 3
More from @prefire_ios
  1. Sep 16, 2026☺️ Prefire в требованиях к вакансиям Где-то месяц назад поставил ежедневную задачу на Chat…
  2. Sep 5, 2026🧭 Podlodka iOS Crew: разработка с AI С 14 по 18 сентября пройдет новый сезон Podlodka iOS…
  3. Aug 26, 2026Кажется, мой кот начал жить своей жизнью. Сначала друзья просто закинули Mewmori в несколь…
  4. Aug 18, 2026Нахождение текста котом Mewmori в уникальных приложениях Что бы кот видел, я снимаю скринш…
  5. Aug 17, 2026Начал готовить к релизу ScreenCat - 🐈 Mewmori - Переименовал проект в Mewmori (типо memor…
  6. Aug 5, 2026Сделал систему скинов для котиков 🐈 В ScreenCat уже много скинов, и я прям сильно устал р…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →