尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Main Repo for Mkulima Forum
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Multivendor marketplace, farmers forum, AI plant disease scanner, wallet/escrow payments, weather advisories, and admin operations — built for Tanzanian (and later EAC) smallholder farmers.
Start here:
REDESIGN.md— full platform audit, redesign decisions, and phased roadmap. Target architecture and requirements live inMkulimaForum_ Modern Agri Hub/.
| Path | What it is | Stack |
|---|---|---|
/ (root) | Backend API | Laravel 13, Sanctum, Spatie Permission, PostgreSQL only |
mkulima_app/ | Farmer mobile app | Flutter ≥3.5, Provider, drift (offline-first), dio |
admin-dashboard/ | Legacy React admin (not served). Live staff panel is Filament at /admin | React 18, Vite, Tailwind |
MkulimaForum_ Modern Agri Hub/ | Architecture & requirements docs | — |
PostgreSQL is the only supported database. Create a role and two databases
(the second is what php artisan test migrates; it must not be the application
database):
sudo -u postgres psql -c "CREATE USER mkulima WITH PASSWORD 'secret' CREATEDB;"
sudo -u postgres psql -c "CREATE DATABASE mkulima_forum OWNER mkulima;"
sudo -u postgres psql -c "CREATE DATABASE mkulima_test OWNER mkulima;"
composer install
cp .env.example .env && php artisan key:generate
# .env.example is already DB_CONNECTION=pgsql. Set DB_PASSWORD, then:
php artisan migrate --seed
php artisan serve # http://localhost:8000
php artisan test # uses mkulima_test, from phpunit.xml
Production is the Ubuntu VPS in DEPLOYMENT_RUNBOOK.md.
Before a deploy: php artisan mkulima:preflight. To count users and content
without changing them: php artisan mkulima:census.
Required .env keys for full functionality (all currently empty — features degrade honestly without them):
GEMINI_API_KEY — plant disease scanner (returns 503 without it)OPENWEATHER_API_KEY — weather (serves stale cache / unavailable without it; never fabricates data)MPESA_CONSUMER_KEY/SECRET/PASSKEY, TIGOPESA_API_KEY/SECRET — payments (sandbox mode)Route files: routes/api.php (core), api_kyc.php, api_notifications.php, api_seller.php. Health check: GET /api/health.
cd mkulima_app
flutter pub get
flutter run --dart-define=API_URL=http://10.0.2.2:8000/api # Android emulator → local API
flutter build apk --dart-define=API_URL=https://mkulimaforum.com/api
The API base URL is injected via --dart-define=API_URL (defaults to production). No hardcoded hosts.
Staff sign in at /admin (Filament). Publish assets after install:
php artisan filament:assets
admin-dashboard/ is the previous React app. It is not deployed, and its
build must not be written to public/admin.
All clients target https://mkulimaforum.com/api in production. Change it in one place per client: --dart-define=API_URL (Flutter), .env.production (admin), APP_URL in .env (backend).
Phase 0 (make it run) is in progress — see REDESIGN.md §4 for the roadmap and §6 for the fix list.
Most operational settings are managed from Admin → System → Configuration rather than
by editing .env on the server: SMTP credentials, SMS and IVR provider settings, webhook
secrets, short-link allowed hosts, and application URLs.
Settings resolve database → .env → default, and are overlaid onto Laravel's runtime
config on every request, so they work correctly under php artisan config:cache and take
effect with no cache clear and no deploy.
Secrets are encrypted at rest, never returned to the client, restricted to superadmins, and audit-logged as a rotation rather than a value.
Verify any environment with:
php artisan mkulima:preflight
Full detail — including which settings must stay in .env and why, the security model,
and queue worker setup — is in docs/CONFIGURATION.md.