Разработка мобильного приложения для краудфандинга

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка мобильного приложения для краудфандинга
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка мобильного приложения для краудфандинга

Краудфандинг — это Kickstarter или Indiegogo в вашем смартфоне. Но если упростить техническую сторону до «пользователи платят за проект», получится нежизнеспособный продукт. Реальная сложность: условное списание средств (escrow), логика All-or-Nothing vs. Keep-it-All, система вознаграждений с разными уровнями, и регуляторные требования к публичному сбору средств.

Модели финансирования и их реализация

All-or-Nothing (AoN) — средства списываются только при достижении цели. Если кампания не собрала нужную сумму — все платежи возвращаются. Реализация: при бэкинге делаем authorization hold на карте (средства заморожены, но не списаны). При успехе кампании — capture, при провале — void.

# Stripe: создание PaymentIntent с capture_method=manual
import stripe

def back_project(user_id: str, project_id: str, amount: int, reward_tier_id: str) -> dict:
    payment_intent = stripe.PaymentIntent.create(
        amount=amount,
        currency="usd",
        capture_method="manual",  # не списывать сразу
        metadata={
            "user_id": user_id,
            "project_id": project_id,
            "reward_tier_id": reward_tier_id
        },
        confirm=False  # подтвердим на клиенте
    )
    return {"client_secret": payment_intent.client_secret}

def capture_all_backers(project_id: str):
    """Вызывается при успешном завершении кампании"""
    backers = db.get_backers(project_id, status="authorized")
    for backer in backers:
        stripe.PaymentIntent.capture(backer.payment_intent_id)
        db.update_backer_status(backer.id, "captured")

def refund_all_backers(project_id: str):
    """Вызывается при провале кампании"""
    backers = db.get_backers(project_id, status="authorized")
    for backer in backers:
        stripe.PaymentIntent.cancel(backer.payment_intent_id)
        db.update_backer_status(backer.id, "cancelled")

Проблема: авторизация на карте действует ограниченный срок — у Stripe это 7 дней для большинства карт, максимум 31 день. Кампании длиннее 30 дней — нельзя удерживать авторизацию всё это время. Решение: списывать сразу (Keep-it-All модель) или выполнять повторную авторизацию незадолго до истечения.

Keep-it-All (KiA) — средства списываются сразу при бэкинге, независимо от достижения цели. Технически проще, но менее привлекательна для бэкеров. Популярна для благотворительных и творческих проектов.

Уровни вознаграждений (Reward Tiers)

Каждый проект предлагает несколько уровней: «Поддержать» за $10, «Ранний доступ» за $50, «Эксклюзивный набор» за $200. У каждого уровня — количество доступных слотов и текущая заполненность.

// iOS: экран выбора уровня вознаграждения
struct RewardTierView: View {
    let tier: RewardTier
    let onSelect: () -> Void

    var body: some View {
        VStack(alignment: .leading, spacing: 8) {
            HStack {
                Text("$\(tier.amount)")
                    .font(.title2.bold())
                Spacer()
                if let limit = tier.backerLimit {
                    Text("\(tier.backerCount)/\(limit) поддержали")
                        .font(.caption)
                        .foregroundColor(tier.isSoldOut ? .red : .secondary)
                }
            }

            Text(tier.title).font(.headline)
            Text(tier.description).font(.body).foregroundColor(.secondary)

            if let estimatedDelivery = tier.estimatedDelivery {
                Label("Доставка: \(estimatedDelivery)", systemImage: "shippingbox")
                    .font(.caption)
            }

            Button(tier.isSoldOut ? "Разобрано" : "Выбрать уровень") {
                if !tier.isSoldOut { onSelect() }
            }
            .disabled(tier.isSoldOut)
        }
        .padding()
        .background(.regularMaterial)
        .clipShape(RoundedRectangle(cornerRadius: 12))
    }
}

Ограниченные слоты требуют pessimistic locking на сервере: при оформлении бэкинга блокируем строку reward_tier для проверки и декремента счётчика в одной транзакции.

Прогресс кампании и социальная механика

Страница проекта — центральный контент. Прогресс-бар собранных средств, обратный отсчёт до конца кампании, лента обновлений от автора, комментарии бэкеров.

Технически самый нагруженный момент: последний день кампании. Все бэкеры проверяют прогресс одновременно. WebSocket для реального времени или aggressive polling (каждые 10 секунд в последние часы) — с кешированием на CDN.

// Android: WebSocket для живого обновления прогресса
class CampaignProgressViewModel(
    private val campaignId: String,
    private val wsClient: WebSocketClient
) : ViewModel() {

    val progress = MutableStateFlow<CampaignProgress?>(null)

    init {
        wsClient.connect("wss://api.yourplatform.com/campaigns/$campaignId/live")
        viewModelScope.launch {
            wsClient.messages.collect { message ->
                val update = json.decodeFromString<CampaignProgressUpdate>(message)
                progress.value = update.progress
            }
        }
    }

    override fun onCleared() {
        wsClient.disconnect()
    }
}

Обновления проекта и коммуникация с бэкерами

Автор публикует обновления о ходе работ. Бэкеры получают push-уведомления о каждом новом обновлении. Сегментация: уведомление только тем, кто поддержал именно этот проект.

FCM topic-based messaging для этого не подходит — нужна таргетированная рассылка через серверный список получателей. Для каждого проекта хранится список device_tokens бэкеров.

Модерация и anti-fraud

Публичный сбор средств привлекает мошеннические проекты. Базовая защита:

  • Ручная модерация новых проектов перед публикацией
  • Верификация личности автора через KYC (паспорт + селфи) — обязательна для вывода средств
  • Автоматическое ограничение на вывод до подтверждения KYC

Интеграция с KYC-провайдерами: Sumsub, Veriff, Onfido. Мобильное приложение инициирует KYC через SDK провайдера — процесс полностью в нативном UI.

// iOS: Sumsub KYC flow
import IdensicMobileSDK

let sdk = SNSMobileSDK.build(
    accessToken: kycAccessToken
)
.withHandlers(
    onStatusDidChange: { [weak self] sdk, prevStatus in
        if sdk.mainState == .approved {
            self?.onKYCApproved()
        }
    },
    onEvent: { sdk, event in }
)
.assemble()

sdk.present(from: self)

Вывод средств для авторов

После успешного завершения кампании автор хочет получить деньги. Схема вывода:

  1. KYC пройден → можно запросить вывод
  2. Платформа удерживает комиссию (обычно 5–10%)
  3. Остаток выводится через Stripe Connect (payout на банковский счёт) или международным переводом

Stripe Connect — стандарт для маркетплейсов с выплатами. Каждый автор — отдельный Connected Account.

Ориентиры по срокам

Scope Срок
Базовая версия: просмотр и поддержка проектов, оплата, история 6–8 недель
Кабинет автора: создание проектов, обновления, аналитика +3–4 недели
All-or-Nothing с escrow и автоматическим capture/refund +2 недели
KYC и вывод через Stripe Connect +2–3 недели

Стоимость рассчитывается индивидуально после анализа требований.