SaaS IA sécurisé pour entreprises africaines
UNY = Système d'exploitation IA souveraineté pour entreprises africaines.
✅ Proxy IA sécurisé : anonymisation PII avant envoi à Gemini/OpenAI
✅ Conformité juridique : RGPD + Loi 09-08 Maroc intégrée
✅ Formats locaux : CIN, ICE, IBAN_MA, téléphones +212 reconnus
✅ Multi-tenant B2B : organizations, membres, quotas, facturation
✅ UI premium : glassmorphism, dark mode, responsive
- Node.js 20+
- Supabase account (cloud.supabase.io)
- Gemini API key (optional)
# Clone
git clone https://github.com/uny/Uny.git
cd Uny
# Install
npm install
# Environment
cp .env.example .env
# Edit .env with your keys
# Run
npm run dev# Required
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_anon_key
# Optional (AI)
GEMINI_API_KEY=your_gemini_key
OPENAI_API_KEY=your_openai_key
OPENROUTER_API_KEY=your_openrouter_key
# Optional (Payments)
PADDLE_API_KEY=your_paddle_key
STRIPE_SECRET_KEY=your_stripe_keyuny/
├── src/ # Frontend React
├── components/ # Composants UI
├── pages/ # Pages routées
├── hooks/ # React hooks
├── lib/ # Core libraries
│ ├── pii/ # PII detection & masking
│ ├── ai/ # AI proxy (Gemini, OpenAI)
│ ├── crypto-utils # Secure tokens, HMAC
│ └── session-store # Sessions (Memory/Redis)
├── server.ts # Backend Express
├── supabase/ # DB migrations
├── tests/ # Tests unitaires & intégration
└── docs/ # Documentation
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript + Vite |
| Backend | Express 5 + Node 20 |
| Database | Supabase (PostgreSQL) |
| AI | Gemini 2.0 + OpenAI + OpenRouter |
| Styling | Tailwind CSS + Framer Motion |
| Tests | Vitest + React Testing Library |
- Jamais injecter texte utilisateur brut dans prompt AI → toujours échapper
- Jamais utiliser
Math.random()pour tokens → utilisercrypto.randomBytes() - Jamais logger données sensibles (PII, tokens) en production
- Toujours valider inputs côté serveur avec Zod
CIN_REGEX = /^[A-Z]{1,2}\d{6}$/ // K123456
ICE_REGEX = /^\d{15}$/ // 123456789012345
PHONE_REGEX = /^(?:\+212|0)[567]\d{8}$/ // +212612345678
IBAN_MA_REGEX = /^MA\d{2}[A-Z0-9]{20,}$/ // MA64...# Unit tests
npm test
# Watch mode
npm run test:watch
# Coverage
npm run test:coveragenpm run build
vercel deploynpm run build:server
# Déployer server.jsnpm run db:migrateMIT - See LICENSE file
See CONTRIBUTING.md