Modern, scalable software ecosystem based on microservice architecture
- Overview
- System Architecture
- Repository Structure
- Technology Stack
- Installation and Getting Started
- Contributing
- License
OctopOS Prime is a comprehensive software platform developed using modern software development principles and microservice architecture. The system consists of independently deployable microservices that communicate via Protocol Buffers.
- 🏗️ Microservice Architecture: Independent, scalable services
- 🔐 Security: JWT-based authentication and authorization
- 📡 GraphQL API Gateway: Single point access to all services
- 📱 Cross-Platform: Web and mobile applications
- 🐳 Containerization: Easy deployment with Docker
- 📊 Observability: Centralized logging and monitoring
┌─────────────────────────────────────────────────────────────┐
│ Client Layer │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Web Client │ │ Mobile App │ │
│ │ (op-web- │ │ (op-mo-app) │ │
│ │ site) │ │ Flutter │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ API Gateway │
│ ┌──────────────────────┐ │
│ │ op-be-graphql │ │
│ │ (GraphQL Gateway) │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────┐
│ Backend Microservices │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ op-be- │ │ op-be- │ │ op-be- │ │ op-be- │ │
│ │ auth │ │ user │ │ logging │ │ book │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────────────────┐ │
│ │ op-be- │ │ op-be-shared │ │
│ │ dlr │ │ (Common Library) │ │
│ └──────────┘ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ SDK & Protocol Layer │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ op-go-sdk- │ │ op-go-sdk- │ │ op-proto │ │
│ │ srv │ │ clt │ │ (ProtoBuf) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ OS & Infrastructure │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ op-go-os │ │ op-infra │ │
│ │ │ │ │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Data & Cache Layer │
│ PostgreSQL + Redis │
└─────────────────────────────────────────────────────────────┘
| Repository | Description | Technology | Stars |
|---|---|---|---|
| op-proto | Protocol Buffers definitions - Communication protocol for all services | Protocol Buffers | ⭐ 58 |
| op-go-os | OctopOS Prime operating system layer | Go | ⭐ 57 |
| op-go-sdk-srv | Server-side SDK - Server-side development library | Go | ⭐ 58 |
| op-go-sdk-clt | Client-side SDK - Client-side development library | Go | ⭐ 56 |
| Repository | Description | Port | Stars |
|---|---|---|---|
| op-be-graphql | GraphQL API Gateway - Main API router | 18080 | ⭐ 13 |
| op-be-auth | Authentication and authorization service | 18084 | ⭐ 5 |
| op-be-user | User management service | 18082 | ⭐ 17 |
| op-be-logging | Centralized logging service | 18081 | - |
| op-be-book | Book/content management service | - | ⭐ 7 |
| op-be-dlr | DLR (Data Layer Repository) service | 18083 | - |
| op-be-shared | Backend shared libraries | - | ⭐ 14 |
| op-be-docs | Backend documentation | - | - |
| Repository | Description | Technology | Stars |
|---|---|---|---|
| op-web-site | Web application | TypeScript/CSS/HTML | ⭐ 11 |
| op-mo-app | Mobile application (Android/iOS) | Flutter | ⭐ 17 |
| Repository | Description | Technology | Stars |
|---|---|---|---|
| op-infra | Infrastructure as Code, deployment scripts | Shell Scripts | ⭐ 8 |
| Repository | Description | Stars |
|---|---|---|
| op-design | Design system and style guides | ⭐ 16 |
| octo-bot | Discord community management bot | - |
| .github | Organization profile and templates | ⭐ 8 |
- Language: Go (Golang)
- API: GraphQL
- Protocol: Protocol Buffers (gRPC)
- Authentication: JWT (JSON Web Tokens)
- Database: PostgreSQL
- Cache: Redis
- Container: Docker
- Network: Docker Network
- Web: TypeScript, CSS, HTML
- Mobile: Flutter (Dart)
- Container Orchestration: Docker
- Scripting: Shell Scripts
- CI/CD: GitHub Actions
- Logging: Centralized logging service (op-be-logging)
- Port Management: Dedicated port assignment for each service
- Docker & Docker Compose
- Go 1.21+ (for backend development)
- Flutter 3.0+ (for mobile development)
- Node.js 18+ (for web development)
- PostgreSQL 15+
- Redis 7+Required environment variables for all backend services:
# Database
POSTGRES_USERNAME=op
POSTGRES_PASSWORD=op
POSTGRES_DATABASE=op
# Authentication
JWT_SECRET_KEY=op
# Cache
REDIS_PASSWORD=op
# Testing
TEST=truedocker network create op# Logging service
docker run --pull=always -d --expose 18081 -p 18081:18080 \
--network op -e TEST=true --name op-be-logging \
ghcr.io/octoposprime/op-be-logging:latest
# User service
docker run --pull=always -d --expose 18082 -p 18082:18080 \
--network op -e TEST=true --name op-be-user \
ghcr.io/octoposprime/op-be-user:latest
# GraphQL API Gateway
docker run --pull=always -d --expose 18080 -p 18080:18080 \
--network op -e TEST=true --name op-be-graphql \
ghcr.io/octoposprime/op-be-graphql:latest
# DLR service
docker run --pull=always -d --expose 18083 -p 18083:18080 \
--network op -e TEST=true --name op-be-dlr \
ghcr.io/octoposprime/op-be-dlr:latest
# Auth service
docker run --pull=always -d --expose 18084 -p 18084:18080 \
--network op -e TEST=true --name op-be-auth \
ghcr.io/octoposprime/op-be-auth:latestdocker stop op-be-logging op-be-user op-be-graphql op-be-dlr op-be-auth
docker rm op-be-logging op-be-user op-be-graphql op-be-dlr op-be-auth| Service | Internal Port | External Port |
|---|---|---|
| GraphQL Gateway | 18080 | 18080 |
| Logging | 18080 | 18081 |
| User | 18080 | 18082 |
| DLR | 18080 | 18083 |
| Auth | 18080 | 18084 |
Each service runs in its own Docker container and can be deployed independently.
Inter-service communication is done via Protocol Buffers (gRPC), which provides:
- Type-safe communication
- High performance
- Automatic code generation
op-be-graphql serves as the single entry point for all client requests.
op-be-shared provides common functions and utilities, preventing code duplication.
op-be-logging centrally collects logs from all services.
- JWT Authentication: Token-based authentication
- Service Isolation: Each service in isolated Docker container
- Environment Variables: Sensitive information stored as environment variables
- Network Isolation: Service isolation via Docker network
OctopOS Prime is an open source project and we welcome your contributions!
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: Add amazing feature') - Push your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use
gofmtfor Go code standards - Use Conventional Commits for commit messages
- Write unit tests for every change
- Keep documentation up to date
- Website: octoposprime.com
- Email: info@octoposprime.com
- Location: United States of America
- Discord: Community bot active (octo-bot)
All repositories in this project are licensed under MIT License.
37 contributors have made 732 commits to the OctopOS Prime organization.
| Rank | Contributor | Total Commits | Repositories |
|---|---|---|---|
| 1 | husamettinarabaci | 176 | 27 |
| 2 | Sddilora | 122 | 15 |
| 3 | aleyna0f | 68 | 1 |
| 4 | Maraza25 | 45 | 8 |
| 5 | ikramylmz | 40 | 1 |
| 6 | Smnrgcl | 38 | 6 |
| 7 | akadir8 | 27 | 4 |
| 8 | suhedadogan50 | 26 | 1 |
| 9 | Feyzanrs | 23 | 9 |
| 10 | Weal1041 | 21 | 1 |
Growing community with over 300+ stars across repositories!
Making microservices development easier and scalable