Funds for NGOs
Mobile App2024

FUNDSFORNGOS

Grant discovery and AI chat on the go — companion mobile app to the RAG platform.

8
Grant content domains
2
Mobile platforms
1K+
Daily active users
SCROLL
Client
FundsForNGOs.org
Domain
Mobile / Grants
Platform
Flutter
Duration
Jan 2024 — Present
Core Stack
Flutter · Dart · Rust API
The Brief

THE
PROBLEM

NGO professionals discover grants on the go across seven content domains — opportunities, deadlines, donor news, sample proposals, eBooks, articles, and profiles — with parity to the WordPress-powered web experience, not a stripped “mobile lite” catalog.

Flutter Provider architecture calls mobapi.fundsforngospremium.com for catalog APIs and the shared Rust backend for streaming AI — Launch/credentials flows mirror web so one membership story spans surfaces.

Core Engineering Challenge

Eight paginated Provider domains, OTP and session restore via SharedPreferences, cached PDF proposals, flutter_html rendering for long grant bodies, and SSE chat that enforces the same JWT and subscription tiers as the Rust RAG backend.

2
Platforms
Shared
Auth
Extended stack
mobile
Flutter
mobile
Dart
mobile
Provider
FFN
FFN
How we built it

THE ARCHITECTURE

01
Eight Provider domains

ChangeNotifiers for each catalog slice with lazy init and infinite scroll listeners.

FlutterProvider
02
OTP & session

Email OTP, password flows, and JSON session blobs in SharedPreferences with secure wipe on logout.

FlutterAuth
03
PDF & downloads

flutter_cached_pdfview and flutter_downloader with progress surfaces matching NGO expectations for proposals.

PDFDownloads
04
HTML grant bodies

flutter_html + cached_network_image for rich descriptions offline-tolerant where cached.

flutter_htmlFlutter
05
Search & routing

Full-site search with type filters pushing to the correct detail routes.

FlutterNavigation
06
SSE AI chat

Streams from Rust backend with the same rate limits and tier headers as web SSE proxies.

SSERust API
System Data Flow
Ingestion
CrawlerContent Hash10K+ pages
Processing
ChunkerDeduplicatorEmbedding API
Storage
pgvectorPostgreSQLRedis Cache
Auth
Identity ProviderJWT BridgeSessions
Query
HNSW SearchRe-rankerLLM Stream
Delivery
Web AppMobile AppUsers
What we delivered

THE RESULTS

2

iOS and Android builds share widgets, download pipelines, and search — reducing duplicate QA while still passing store review for background downloads and push where enabled.

2
Platforms

iOS and Android builds share widgets, download pipelines, and search — reducing duplicate QA while still passing store review for background downloads and push where enabled.

Shared
Auth

Same WordPress→JWT→Rust session semantics as the Next.js client — tier limits and daily message caps enforced server-side so the mobile app cannot bypass premium gating with a forked API.

Visual documentation

SCREENS &
INTERFACES

FFN2
FFN2
FFN3
FFN3
Engineering decisions

TECH
DEEP DIVE

PROV
Provider over heavier DI

Eight parallel domains needed straightforward ChangeNotifier boundaries without boilerplate explosion.

Shared auth with web avoided a second identity system that would drift subscription state.

DL
System downloader

flutter_downloader gave NGO users visible progress for large proposal PDFs on slow connections.

SSE parity with web meant mobile could ship AI without WebSocket complexity.

Next Case Study
Blockchain
ElevateProtocol

DeFi landing & dashboard

Next.jsFirebaseRadix UI
Start a project

LET'S
BUILD
SOMETHING.

We take on a small number of projects at a time. If the problem is hard, we're interested.

Email
hello@techmusketeers.com
Response time
Within 24 hours
Availability
Open for new projects · 2025