Bokari est un moteur de recherche IA concu pour l'Afrique. Il cherche, verifie et synthetise l'information en temps reel, avec des sources citees pour chaque reponse. Pas de boite noire, pas de reponses inventees : chaque affirmation est tracable.
Le projet est ne d'un constat simple. L'acces a une information fiable et verifiee est un enjeu majeur sur le continent africain. Bokari est la pour aider les journalistes, les etudiants, les chercheurs et tous ceux qui veulent comprendre le monde avec des faits, pas des rumeurs.
- Fonctionnalites
- Architecture
- Installation
- Configuration
- Utilisation
- API
- Stack technique
- Structure du projet
- Contribuer
- Licence
- Contact
Bokari ne se contente pas de chercher sur Google. Il lance plusieurs requetes en parallele, extrait le contenu complet des pages, et synthetise une reponse claire avec des citations numerotees.
Trois modes de recherche sont disponibles :
- Rapide -- Reponse en quelques secondes, 5 a 10 sources consultees
- Standard -- Equilibre entre vitesse et profondeur, 15 a 20 sources
- Approfondie -- Investigation complete, 30 a 100 sources explorees
La recherche couvre plusieurs axes :
- Web -- Recherche generale sur internet
- Academique -- Articles scientifiques et publications
- Discussions -- Forums, reseaux sociaux, debats en ligne
Des cartes d'information s'affichent automatiquement quand c'est pertinent : meteo, cours boursiers, calculs, et d'autres a venir.
Bokari peut aussi trouver du contenu visuel en rapport avec votre question, directement dans l'interface de chat.
Envoyez un PDF, un fichier texte ou un document Word, et posez des questions dessus. Bokari indexe le contenu et repond avec precision.
Synthese vocale et reconnaissance vocale integrees via ElevenLabs, pour une experience plus naturelle.
Un onglet decouverte affiche les actualites du jour par theme (technologie, science, economie, sport...), pour rester informe sans meme chercher.
Chaque conversation est sauvegardee. Vous pouvez retrouver et reprendre n'importe quelle recherche passee.
Bokari fonctionne avec plusieurs fournisseurs de modeles IA :
- OpenAI (GPT-4o, GPT-4o-mini)
- Anthropic (Claude Sonnet, Claude Haiku)
- Google (Gemini)
- Groq (Llama, Mixtral -- gratuit et rapide)
- Ollama (modeles locaux, 100% hors-ligne)
Les modeles internes de Bokari (bokari-1, bokari-cheap) routent automatiquement vers le meilleur modele disponible.
Bokari suit un pipeline de type RAG (Retrieval-Augmented Generation) :
Question utilisateur
|
v
Classification
(faut-il chercher ? quels widgets ?)
|
v
+----+----+
| |
v v
Recherche Widgets
(TinyFish, (meteo,
SearXNG) bourse...)
| |
v v
Extraction du contenu
(HTML -> Markdown, max 4000 car.)
|
v
Generation de la reponse
(LLM + citations)
|
v
Streaming SSE vers le client
- TinyFish Web Agent -- Moteur principal, recherche Google via API
- SearXNG -- Meta-moteur open source en fallback
- DuckDuckGo -- Troisieme niveau de fallback via scraping HTML
- Supabase PostgreSQL -- Stockage des chats, messages et utilisateurs
- RLS (Row Level Security) -- Chaque utilisateur n'accede qu'a ses propres donnees
- Supabase Auth -- Inscription, connexion, gestion des sessions
- Bearer token -- Toutes les requetes API sont authentifiees
Pour plus de details techniques, voir la documentation d'architecture.
La methode la plus simple. Une seule commande :
docker run -d -p 3000:3000 -v bokari-data:/home/bokari/data --name bokari dickenai/bokari:latestCa demarre Bokari avec SearXNG integre. Ouvrez http://localhost:3000 et configurez vos cles API dans l'assistant de configuration.
Si vous avez deja SearXNG qui tourne quelque part :
docker run -d -p 3000:3000 \
-e SEARXNG_API_URL=http://votre-searxng:8080 \
-v bokari-data:/home/bokari/data \
--name bokari dickenai/bokari:slim-latestgit clone https://github.com/nicko858/bokari.git
cd bokari
docker build -t bokari .
docker run -d -p 3000:3000 -v bokari-data:/home/bokari/data --name bokari bokari-
Installez Node.js 18+ et npm
-
Clonez le projet :
git clone https://github.com/nicko858/bokari.git
cd bokari- Installez les dependances :
npm install- Construisez l'application :
npm run build- Demarrez :
npm run start- Ouvrez http://localhost:3000 et suivez l'assistant de configuration.
npm run devLe serveur demarre sur http://localhost:3000 avec rechargement automatique.
Au premier lancement, un assistant de configuration vous guide. Vous aurez besoin de :
Choisissez au moins un fournisseur de modele IA :
| Provider | Modeles recommandes | Cout |
|---|---|---|
| Groq | llama-3.3-70b | Gratuit |
| Ollama | llama3.1:8b, mistral | Gratuit (local) |
| OpenAI | gpt-4o, gpt-4o-mini | Payant |
| Anthropic | claude-sonnet-4-6 | Payant |
| gemini-2.0-flash | Gratuit (limite) |
Pour la recherche semantique et l'upload de documents :
| Provider | Modele | Cout |
|---|---|---|
| OpenAI | text-embedding-3-small | Payant |
| Ollama | nomic-embed-text | Gratuit (local) |
Pour la synthese vocale et la reconnaissance vocale. Obtenez une cle API sur https://elevenlabs.io.
La plupart de la configuration se fait via l'interface web. Voir .env.example pour les options avancees.
Tapez votre question dans la barre de recherche. Bokari va :
- Analyser votre question
- Lancer les recherches necessaires
- Afficher les etapes en temps reel (recherche en cours, sources trouvees...)
- Generer une reponse avec citations numerotees
- Afficher les sources cliquables
Cliquez sur l'icone de mode dans la barre de saisie pour choisir :
- Rapide (eclair) -- Pour les questions simples
- Standard (loupe) -- Usage quotidien
- Approfondie (couches) -- Pour les investigations
Cliquez sur le trombone pour joindre des documents (PDF, DOCX, TXT). Bokari les indexe et vous pouvez poser des questions sur leur contenu.
Accedez a l'onglet "Decouverte" dans la sidebar pour parcourir les actualites du jour par theme.
L'onglet "Bibliotheque" liste toutes vos conversations passees, triees par date.
Bokari expose une API REST pour l'integration programmatique.
POST /api/search
Corps de la requete :
{
"chatModel": {
"providerId": "uuid-du-provider",
"key": "gpt-4o-mini"
},
"embeddingModel": {
"providerId": "uuid-du-provider",
"key": "text-embedding-3-large"
},
"optimizationMode": "balanced",
"sources": ["web"],
"query": "Votre question ici",
"stream": false
}Reponse :
{
"message": "La reponse generee avec citations...",
"sources": [
{
"content": "Extrait de la source...",
"metadata": {
"title": "Titre de la page",
"url": "https://example.com"
}
}
]
}Le streaming SSE est disponible avec "stream": true.
Pour la documentation complete de l'API, voir docs/API/SEARCH.md.
| Composant | Technologie |
|---|---|
| Framework | Next.js 16 (App Router) |
| Langage | TypeScript |
| Style | Tailwind CSS 3.3 |
| UI | HeadlessUI, Radix UI, Lucide Icons |
| Animations | Framer Motion |
| Base de donnees | Supabase PostgreSQL |
| ORM | Drizzle ORM |
| Auth | Supabase Auth |
| Recherche | TinyFish API, SearXNG |
| LLM | OpenAI, Anthropic, Google, Groq, Ollama |
| TTS/STT | ElevenLabs |
| Deploiement | Docker, Node.js |
bokari/
src/
app/ # Pages et routes API (Next.js App Router)
api/
chat/ # Endpoint principal du chat
search/ # API de recherche programmatique
auth/ # Authentification (register, login, logout)
chats/ # CRUD des conversations
discover/ # Flux d'actualites
tts/ # Text-to-speech (ElevenLabs)
stt/ # Speech-to-text (ElevenLabs)
discover/ # Page decouverte
library/ # Page bibliotheque
c/[chatId]/ # Page de conversation
components/ # Composants React
Chat.tsx # Composant principal du chat
Sidebar.tsx # Navigation laterale
MessageBox.tsx # Affichage d'un message
MessageInput.tsx # Barre de saisie
EmptyChat.tsx # Etat initial (suggestions)
Settings/ # Dialogues de parametres
Discover/ # Cartes d'actualites
lib/
agents/ # Agents IA
search/ # Agent de recherche (classifier, researcher, writer)
media/ # Recherche d'images et videos
config/ # Gestion de la configuration
db/ # Schema et migrations (Drizzle + Supabase)
hooks/ # Hooks React (useChat, useAuth)
models/ # Providers de modeles LLM
prompts/ # Prompts systeme
supabase/ # Client Supabase (browser + server)
search.ts # Backend de recherche TinyFish
searxng.ts # Integration SearXNG (fallback)
public/ # Assets statiques
drizzle/ # Migrations SQL
docs/ # Documentation
docker-compose.yaml # Configuration Docker
Les contributions sont les bienvenues. Consultez le guide CONTRIBUTING.md pour les details.
En bref :
- Forkez le projet
- Creez une branche (
git checkout -b feature/ma-feature) - Codez et testez
- Soumettez une Pull Request
Toute contribution doit respecter la licence du projet. Le credit a l'auteur original (Ousmane Dicko / Dicken AI) doit etre maintenu dans tous les forks et travaux derives.
Ce projet est distribue sous une licence source-available non-commerciale.
En resume :
- Vous pouvez consulter, forker et modifier le code pour un usage personnel et non-commercial
- Vous devez crediter Ousmane Dicko / Dicken AI dans tout fork ou travail derive
- Toute utilisation commerciale necessite une autorisation ecrite
Pour les details complets, voir le fichier LICENSE.
Pour une licence commerciale, contactez ousmane@dickenai.com.
Ousmane Dicko -- Createur de Bokari
- Email : ousmane@dickenai.com
- Projet : Dicken AI
Bokari -- Mars 2026 Cree par Ousmane Dicko / Dicken AI