Skip to content
Surendra1341Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

🌐 OmniNet

A production-grade distributed microservices platform

Notes · Storage · AI Chat · Real-Time Chat · Authentication · Events

📚 Documentation · 🐛 Report Bug · 🚀 Quick Start




✨ What is OmniNet?

OmniNet is a full-featured, cloud-native polyglot microservices platform (Java + Go) built with independently deployable services communicating via gRPC, Apache Kafka, and WebSocket.

Features

Module Language Capabilities
🔐 Auth Java JWT, OAuth2 (Google/GitHub), Email OTP, multi-device refresh token rotation
📝 Notes Java Rich CRUD, categories, todos, file attachments, recycle bin, pin/favourite, search
🗂️ Storage Java S3/MinIO, presigned URLs, folder hierarchies, per-user quotas
🤖 AI Chat Java Gemini streaming, multi-session, web search, voice input, Ollama fallback
💬 Chat Go Real-time WebSocket, DM/Group, typing indicators, reactions, read receipts, Redis Pub/Sub scaling
⚡ Events Java Kafka-driven user provisioning, storage auditing, reminder scheduling

🏗️ Architecture

Client (React + Vite)
        │ HTTP / SSE              │ WebSocket ws://
        ▼                         ▼
API Gateway (:8080)        Chat Service Go (:8085)
        │ JWT · Rate Limit · Routing   │ JWT · Hub · Redis Pub/Sub
        ├──────────────────────┐
        ▼                      ▼
auth-service (:8081)    notes-service (:8083)
storage-service (:8082) ai-service (:8084)
        │
Kafka · Redis · PostgreSQL (per service) · MinIO

Full architecture diagrams and service documentation: docs.omninet


🚀 Quick Start

Prerequisites

  • Docker 24+ & Docker Compose v2
  • Node.js 18+ & npm 9+

1. Clone & configure

git clone https://github.com/Surendra1341/Omninet.git
cd Omninet/omninet-microservices
cp .env.example .env
# Edit .env with your OAuth2 credentials, Gemini API key, and mail settings

2. Start all services

docker compose up --build -d

3. Start the frontend

cd ../omninet-security-web
npm install && npm run dev

Open http://localhost:5173 🎉


📁 Project Structure

Omninet/
├── omninet-microservices/       # Backend services
│   ├── omninet-proto/           # Protobuf + gRPC stubs (Java)
│   ├── omninet-common/          # Shared DTOs, filters, events (Java)
│   ├── api-gateway/             # Reactive gateway (:8080) — Java
│   ├── auth-service/            # Auth & OAuth2 (:8081) — Java
│   ├── storage-service/         # S3/MinIO (:8082) — Java
│   ├── notes-service/           # Notes, todos, categories (:8083) — Java
│   ├── ai-service/              # AI chat & voice (:8084) — Java
│   ├── chat-service/            # Real-time WebSocket chat (:8085) — Go
│   ├── docker-compose.yml       # Full dev stack (all 6 services)
│   ├── docker-compose.infra.yml # Infrastructure only
│   └── docker-stack.yml         # Production Swarm
├── omninet-security-web/        # React frontend (:5173)
├── Omninet-Core/                # Original monolith (reference)
└── docs/                        # VitePress documentation

🛠️ Tech Stack

Layer Technology
Backend (Java) Spring Boot 3.5, Spring Cloud Gateway, Spring Security
Backend (Go) Go 1.22, go-chi, gorilla/websocket, pgx/v5, go-redis
Inter-Service RPC gRPC + Protobuf
Events Apache Kafka (KRaft)
Real-Time WebSocket + Redis Pub/Sub
Cache Redis 7
Database PostgreSQL 16 (one DB per service — 5 total)
Storage MinIO (S3-compatible)
AI Google Gemini + Ollama (fallback)
Frontend React 18, Vite, TailwindCSS, DaisyUI, Zustand, GSAP, Lenis
Container Docker Compose + Docker Swarm

📚 Documentation

Full documentation: https://surendra1341.github.io/Omninet/

Section Description
Introduction What is OmniNet, tech stack, repo structure
Quick Start Get up and running fast
Architecture System diagrams and design principles
Chat Service Go WebSocket service — hub, events, scaling
AI Service Gemini streaming, tool calling, SSE
Deployment Docker, Swarm, and local development
Troubleshooting 17 documented issues and fixes

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes
  4. Push and open a Pull Request

📄 License

MIT License — see LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages