Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
WAFEO turns satellite data into field-level intelligence on water, crops and food security.
DataJavaScript · CSSGitHub @norbertmuzilaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
This is for my EO WebApp
Loading the full README.
Read the full README ↗Water, Agriculture & Food systems Earth Observation platform. Live: https://wafeo-webapplication.vercel.app
The home page opens first on every visit. Anyone with a Google account can sign in;
first-time users get an account automatically (role researcher). Try the demo
(next to Sign in / Sign up) opens the whole platform with no account: a 12-hour
session where nothing is saved. Admins manage roles on the Users page.
index.html, style.css, app.js Frontend (single-page app, no build step)
landing.css, landing.js Home page: pinned scroll hero, sections, hand-off to sign-in
eo.js Site Intelligence analysis UI (click a field, point + radius, or draw)
atlas.js Dashboard world map: rotating globe / flat map, 208-country atlas with flags,
country cards (World Bank statistics, hazards), click-to-select a field
compare.js Change over time: period slider and then/now swipe viewer (Dashboard, Site Intelligence)
livenews.js Live News panel (Reports): auto-refresh, date archive, region and topic filters
report.js PDF report "Analysis_Report_WAFEO_<area>.pdf" (jsPDF)
pages.js Live Dashboard and domain pages (plain + expert views, charts, maps)
assets/ Logo, images and countries.json (the 208 countries and territories)
data/users.json Local user store (development only; production uses Firestore)
server.js Local entry point: `npm start`
api/index.js Vercel serverless entry (same app)
server/
app.js Express app: middleware, routing, static files
config.js All environment settings in one place
store.js Data layer: Firestore if configured, else data/*.json
auth.js Password hashing, JWT, auth/role middleware, rate limit
routes/auth.js /api/auth/* login, google, register, demo, me, logout
routes/data.js /api/news (live and by date)
routes/platform.js AI assistant, reports, activity log, admin
routes/eo.js /api/eo/analyze, /api/eo/field, /api/eo/ndvi-series, /api/live/hazards
services/news.js Verified live news: trusted outlet feeds, Google News and GDELT search, 3-min refresh
services/eo/ Satellite analysis engine:
sentinel2.js Sentinel-2 L2A: NDVI/EVI/SAVI, red-edge N, NDMI, BSI, water, NDTI, NDCI, 24-month NDVI
planetary.js Landsat 8/9 LST, Copernicus DEM, ESA WorldCover, JRC Global Surface Water
soil.js ISRIC SoilGrids (WCS): texture, pH, SOC, N, CEC, bulk density, WRB type, AWC
climate.js Open-Meteo: weather, ET0, soil moisture, ERA5 rainfall anomaly, GloFAS rivers
analyze.js Fuses sources into scores, ranked issues, and actions for farmers/government/public
lib/firebase.js Firebase Admin initialisation
firebase-seed.js One-off: copy data/*.json into Firestore (`npm run seed`)
tests/api.test.js API tests (`npm test`)
npm install
cp .env.example .env # optional locally; see below
npm run dev # http://localhost:8080, restarts on file changes
npm test # API test suite (never touches data/)
Without a .env the server uses the JSON files in data/ and a random session
secret (you'll be signed out when the server restarts).
Demo accounts (password wafeo2024): admin, farmer, policy, researcher.
| Variable | Needed | Purpose |
|---|---|---|
JWT_SECRET | Production | Signs session tokens. Any long random string. Without it (and without Firebase), the production API refuses to run. |
FIREBASE_PROJECT_ID, FIREBASE_CLIENT_EMAIL, FIREBASE_PRIVATE_KEY | Production | Firestore storage for users, reports and activity. Without them, new accounts are not saved on Vercel. |
GOOGLE_CLIENT_ID | Optional | OAuth client ID(s), comma-separated. Defaults to the WAFEO client. |
ADMIN_EMAILS | Optional | Comma-separated Google emails that are made admin whenever they sign in with Google. |
DEFAULT_ROLE | Optional | Role for new sign-ups (default researcher). |
EARTHDATA_TOKEN | Optional | NASA Earthdata token (urs.earthdata.nasa.gov → Generate Token). Enables ECOSTRESS, SMAP, GRACE-FO and SWOT. |
ISDA_USERNAME, ISDA_PASSWORD | Optional | iSDAsoil API account. Enables 30 m soil nutrients. |
GROQ_API_KEY, GROQ_MODEL | Optional | Enables the AI assistant (free key at console.groq.com). |
CORS_ORIGINS | Optional | Extra origins allowed to call the API. |
JWT_EXPIRES_IN | Optional | Session length (default 7d). |
Set these on Vercel under Project → Settings → Environment Variables, then redeploy.
The button works with the OAuth client in GOOGLE_CLIENT_ID. For any Google
account (not just test users) to sign in, in Google Cloud Console:
openid email profile scopes, so Google does not require verification.https://wafeo-webapplication.vercel.app, http://localhost:8080, and
https://norbertmuzila.github.io if you still use GitHub Pages.All endpoints except health and auth require Authorization: Bearer <token>.
This is the beginning of the README. Read the rest at the original. Read the full README ↗