Skip to content

Repository files navigation

🕸️ Networkor

Votre OS relationnel — CRM local, privé et intelligent

Go React TypeScript PostgreSQL Ollama License Release

Networkor transforme vos contacts en intelligence relationnelle.
100% local · Aucune donnée dans le cloud · Propulsé par l'IA (Ollama)

📥 Télécharger · ✨ Fonctionnalités · 🚀 Démarrage · 🏗️ Architecture


Tableau de bord Networkor


✨ Fonctionnalités

🧠 Intelligence relationnelle

  • Score de santé 0–100 par contact (récence, profondeur, niveau)
  • Recherche sémantique — trouvez « qui connaît Kubernetes » sans mot-clé exact
  • Insights IA — narration automatique de l'état de chaque relation
  • Brouillons de messages générés par Ollama (e-mail, LinkedIn, général)

📊 Dashboard & Visualisation

  • 4 KPIs en temps réel (contacts, relances, rappels, nouveaux)
  • Graphique d'activité mensuelle (Recharts, barres empilées)
  • Graphe réseau interactif (React Flow, nœuds + arêtes pondérées)
  • Mode Opportunité — filtrez vos contacts à relancer en priorité

📥 Import multi-source

  • LinkedIn CSV (export natif LinkedIn)
  • Gmail / Google Contacts CSV
  • Tableur manuel Excel-like avec coller depuis Excel
  • Signature e-mail — coller, parser, enregistrer en 3 clics

🔒 Vie privée totale

  • 100% local — aucune donnée ne quitte votre machine
  • Ollama — LLM tournant localement (pas d'API OpenAI)
  • PostgreSQL + pgvector — base de données locale
  • Chiffrement AES-256-GCM disponible pour les données sensibles

📸 Captures d'écran

Tableau de bord
KPIs, activité mensuelle, distribution réseau & relances

Tableau de bord Networkor
Contacts
Fiches avec score de santé, niveau relationnel & tags

Liste des contacts
Recherche IA
Recherche sémantique triée par pertinence

Recherche sémantique IA
Graphe du réseau
Connexions pondérées par la force du lien

Graphe du réseau
Rappels
Relances planifiées pour ne laisser aucune relation refroidir

Rappels et relances
Import multi-source
LinkedIn, Gmail, tableur manuel & signature e-mail

Import de contacts

💡 Captures réalisées sur l'interface Networkor. Détails et conventions de nommage dans docs/screenshots/README.md.


📥 Installation rapide

Option A — Package Debian (recommandé)

# Télécharger la dernière release
wget https://github.com/nouhailler/networkor/releases/latest/download/networkor_1.0.0_amd64.deb

# Installer
sudo dpkg -i networkor_1.0.0_amd64.deb

# Démarrer
networkor-start

Puis ouvrir http://localhost:8080 dans votre navigateur.

Option B — Docker Compose

git clone https://github.com/nouhailler/networkor.git
cd networkor
cp .env.example .env        # Éditez selon vos besoins
make db-up                  # Démarre PostgreSQL + pgvector
make db-migrate-docker      # Applique le schéma SQL
make run                    # Lance le serveur (port 8080)
make web-dev                # Lance le frontend dev (port 5173)

Option C — Build depuis les sources

# Prérequis : Go 1.22+, Node 18+, Docker, Ollama
git clone https://github.com/nouhailler/networkor.git
cd networkor

# Backend
go build -ldflags="-s -w" -o ./bin/networkor ./cmd/server

# Frontend
cd web && npm install && npm run build && cd ..

# Base de données
make db-up && make db-migrate-docker

# Modèles Ollama (une seule fois)
ollama pull nomic-embed-text   # embedding (~274 MB)
ollama pull qwen2.5:7b         # génération (~4.7 GB)

# Lancer
./bin/networkor

🚀 Démarrage rapide

Prérequis

Outil Version Rôle
Go 1.22+ Compilation du serveur
Node.js 18+ Build du frontend
Docker 20+ PostgreSQL + pgvector
Ollama dernière LLM local

En 5 commandes

make db-up                        # 1. Démarre la base de données
make db-migrate-docker            # 2. Crée les tables
make run                          # 3. Lance le serveur → http://localhost:8080
make web-dev                      # 4. Lance le frontend → http://localhost:5173
ollama pull nomic-embed-text      # 5. Installe le modèle d'embedding

💡 Après l'étape 5, allez dans Paramètres → Ré-indexer tous les contacts pour activer la recherche IA.


🏗️ Architecture

┌──────────────────────────────────────────────────────────────┐
│                    Navigateur (React + Vite)                  │
│  Dashboard · Contacts · Graphe · Import · Paramètres         │
└───────────────────────────┬──────────────────────────────────┘
                            │ HTTP/JSON (port 5173 dev / 8080 prod)
┌───────────────────────────▼──────────────────────────────────┐
│              Serveur Go (Gin)  :8080                         │
│                                                              │
│  /api/v1/contacts    /api/v1/search    /api/v1/dashboard    │
│  /api/v1/import      /api/v1/settings  /api/v1/stats        │
└───────┬─────────────────────┬────────────────────────────────┘
        │                     │
┌───────▼──────┐    ┌─────────▼──────────────────────────────┐
│  PostgreSQL  │    │            Ollama (local)               │
│  + pgvector  │    │  nomic-embed-text  │  qwen2.5:7b       │
│  :5432       │    │  (embeddings)      │  (génération)      │
└──────────────┘    └────────────────────────────────────────┘

Structure du projet

networkor/
├── cmd/server/main.go          # Point d'entrée
├── internal/
│   ├── config/                 # Configuration + thread-safe model switching
│   ├── handler/                # Couche HTTP (5 handlers)
│   ├── repository/             # Accès BDD (pgx)
│   └── service/                # Logique métier + scoring + IA
├── pkg/llm/                    # Client Ollama (embed + chat séparés)
├── web/                        # Frontend React + TypeScript
└── docker-compose.yml          # Infrastructure locale

🧠 L'algorithme de score (0–100)

Chaque contact reçoit un score de santé relationnelle calculé en Go pur (sans LLM) :

┌─────────────────────────────────────────────────────┐
│  Récence du dernier échange          max  40 pts    │
│    < 7 jours  → 40  │  < 30j → 30  │  < 90j → 15  │
│  Profondeur (nb interactions)        max  25 pts    │
│    1-2 → 8  │  3-9 → 15  │  10+ → 25               │
│  Niveau relationnel                  max  20 pts    │
│    Chaud → 20  │  Tiède → 12  │  Froid → 4         │
│  Rappels (complétés/actifs/retard)   max  10 pts    │
│  Tags VIP (client, clé, important)   max   5 pts    │
└─────────────────────────────────────────────────────┘
             Total : 100 pts, clampé [0, 100]

Grades : 🟢 Excellent (≥80) · 🟡 Bon (60-79) · 🟠 Fragile (40-59) · 🔴 Critique (<40)


🛠️ Commandes Makefile

make help               # Liste toutes les commandes disponibles
make build              # Compile le binaire Go → ./bin/networkor
make run                # Build + lance le serveur
make web-build          # Build le frontend pour la production
make db-up              # Démarre PostgreSQL + pgvector
make db-migrate-docker  # Applique les migrations SQL
make db-reset           # ⚠️ Recrée la base (détruit les données)
make fmt                # Formate le code Go
make test               # Lance les tests Go
make clean              # Supprime les artefacts de build

⚙️ Configuration

Copiez .env.example en .env et ajustez :

# Serveur
PORT=8080
ENV=development            # ou "production"

# PostgreSQL
DB_HOST=localhost
DB_PORT=5432
DB_USER=networkor
DB_PASSWORD=networkor_secret
DB_NAME=networkor_db

# Ollama (LLM local)
LLM_PROVIDER=ollama
LLM_BASE_URL=http://localhost:11434
EMBED_MODEL=nomic-embed-text   # embedding (recherche IA)
CHAT_MODEL=qwen2.5:7b          # génération (messages, insights)
EMBEDDING_DIMENSION=768

# Paramètres métier
RELAUNCH_DAYS=30               # Seuil de relance en jours

Les modèles peuvent être changés à chaud depuis l'UI (Paramètres) sans redémarrage.


🔌 API REST

Contacts
GET    /api/v1/contacts               # Liste avec filtres
POST   /api/v1/contacts               # Créer un contact
GET    /api/v1/contacts/:id           # Détail contact
PUT    /api/v1/contacts/:id           # Mettre à jour
DELETE /api/v1/contacts/:id           # Supprimer
GET    /api/v1/contacts/:id/score     # Score santé 0-100
POST   /api/v1/contacts/:id/generate-message?type=email|linkedin|general
Recherche & Graphe
POST   /api/v1/search                 # Recherche sémantique
GET    /api/v1/graph                  # Données graphe réseau
POST   /api/v1/contacts/reindex       # Ré-indexation vectorielle
Dashboard & Stats
GET    /api/v1/dashboard              # KPIs + timeline + relances
GET    /api/v1/contacts/:id/insights  # Analyse relationnelle
GET    /api/v1/stats/activity         # Activité mensuelle
Import
POST   /api/v1/import/csv?source=linkedin|gmail|generic
POST   /api/v1/import/bulk            # Import JSON tableau
POST   /api/v1/import/signature       # Parse signature e-mail
Paramètres & Ollama
GET    /api/v1/settings               # Configuration courante
PUT    /api/v1/settings               # Changer modèles (à chaud)
GET    /api/v1/settings/ollama/models # Modèles installés
POST   /api/v1/settings/test          # Test connectivité

📦 Stack technique

Couche Technologie Rôle
Backend Go 1.22 + Gin API REST, logique métier
Base de données PostgreSQL 15 + pgvector Données relationnelles + vecteurs
LLM Ollama (local) Embeddings + génération texte
Frontend React 18 + TypeScript Interface utilisateur
Build Vite 5 Bundler frontend
CSS Tailwind CSS 3 Styles utilitaires
Graphe React Flow Visualisation réseau
Graphiques Recharts 2 Barres d'activité
État TanStack Query 5 Cache + état serveur
Infra Docker Compose PostgreSQL local

🤝 Contribution

  1. Forkez le dépôt
  2. Créez une branche (git checkout -b feature/ma-fonctionnalite)
  3. Committez (git commit -m "feat: ajouter ma fonctionnalité")
  4. Poussez (git push origin feature/ma-fonctionnalite)
  5. Ouvrez une Pull Request

📄 Licence

MIT — voir LICENSE


Networkor est construit avec ❤️ pour les professionnels qui prennent leur réseau au sérieux.

Votre carnet d'adresses mérite mieux qu'un tableur.

About

application "Assistant Networking" en Go + React

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages