mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 19:12:54 +00:00
Docker: - Add production-ready Dockerfiles for all microservices - Optimize for multi-stage builds and minimal image sizes Kubernetes: - Add namespace and service manifests - Include MongoDB and Redis deployment configurations - Configure API server and charging engine deployments Documentation: - Add comprehensive README with platform overview - Include technology stack and quick start instructions - Provide prerequisites and setup guidance
214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
# Telecom-as-a-Service (TaaS) Platform
|
|
|
|
> **Sovereign, Full-Stack Cellular Connectivity Platform**
|
|
> Built with Go 1.26, Rust 1.94, TypeScript, eBPF, and 5G Core Network Technologies
|
|
|
|
## Overview
|
|
|
|
This is a production-ready Telecom-as-a-Service platform that enables developers to programmatically provision and manage cellular connectivity through a clean API. The platform implements 3GPP standards using modern open-source technologies.
|
|
|
|
**Technology Stack:**
|
|
- **Go 1.26**: Core network integration, BSS API, carrier connector
|
|
- **Rust 1.94**: eBPF packet gateway, real-time charging engine
|
|
- **TypeScript/Next.js**: Developer dashboard and SDK
|
|
- **free5GC**: Open-source 5G core network
|
|
- **MongoDB**: Subscriber data and authentication
|
|
- **Redis**: Real-time credit control
|
|
- **eBPF/Aya**: High-performance packet processing
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- **Go 1.26+**: [Download](https://go.dev/dl/)
|
|
- **Rust 1.94+**: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`
|
|
- **Node.js 22+**: [Download](https://nodejs.org/)
|
|
- **pnpm**: `npm install -g pnpm`
|
|
- **Docker**: [Install](https://docs.docker.com/get-docker/)
|
|
- **MongoDB 7.0+**: [Install](https://www.mongodb.com/docs/manual/installation/)
|
|
- **Redis**: `sudo apt-get install redis-server`
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/nutcas3/telecom-platform.git
|
|
cd telecom-platform
|
|
|
|
# Build all components
|
|
make all
|
|
|
|
# Start services (requires separate terminals)
|
|
# Terminal 1: API Server
|
|
./dist/api-server
|
|
|
|
# Terminal 2: Carrier Connector
|
|
./dist/carrier-connector
|
|
|
|
# Terminal 3: Charging Engine
|
|
./target/release/charging-engine
|
|
|
|
# Terminal 4: Web Dashboard
|
|
cd apps/web-dashboard && pnpm dev
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
telecom-platform/
|
|
├── apps/
|
|
│ ├── api-server/ # Go: Developer BSS API
|
|
│ ├── carrier-connector/ # Go: eSIM ES2+ Provisioning
|
|
│ ├── charging-engine/ # Rust: OCS Real-time Credit Control
|
|
│ ├── packet-gateway/ # Rust: eBPF UPF Data Plane
|
|
│ └── web-dashboard/ # TypeScript: Next.js Frontend
|
|
├── libs/
|
|
│ ├── shared-ts-sdk/ # TypeScript: Drop-in Widget SDK
|
|
│ └── proto/ # Shared Protobufs
|
|
├── deployments/
|
|
│ ├── kubernetes/ # K8s manifests
|
|
│ └── docker/ # Dockerfiles
|
|
├── docs/ # Architecture & API docs
|
|
├── scripts/ # Automation scripts
|
|
├── Makefile # Master build orchestrator
|
|
├── Cargo.toml # Rust workspace config
|
|
├── go.work # Go workspace config
|
|
└── pnpm-workspace.yaml # TypeScript workspace config
|
|
```
|
|
|
|
## Development
|
|
|
|
### Build Commands
|
|
|
|
```bash
|
|
# Build everything
|
|
make all
|
|
|
|
# Build specific language
|
|
make build-go # Go services
|
|
make build-rust # Rust components
|
|
make build-ui # TypeScript dashboard
|
|
|
|
# Run tests
|
|
make test
|
|
|
|
# Clean artifacts
|
|
make clean
|
|
```
|
|
|
|
### Working with Specific Components
|
|
|
|
**Go Services:**
|
|
```bash
|
|
cd apps/api-server
|
|
go run main.go
|
|
```
|
|
|
|
**Rust Components:**
|
|
```bash
|
|
cd apps/charging-engine
|
|
cargo run --release
|
|
```
|
|
|
|
**TypeScript Dashboard:**
|
|
```bash
|
|
cd apps/web-dashboard
|
|
pnpm dev
|
|
```
|
|
|
|
## Documentation
|
|
|
|
- **[Complete TODO List](./todos.md)**: Comprehensive development roadmap
|
|
- **[API Documentation](./docs/api-spec.yaml)**: OpenAPI 3.0 specification
|
|
- **[Architecture Guide](./docs/architecture.md)**: System design and data flows
|
|
- **[Deployment Guide](./docs/deployment.md)**: Kubernetes and Docker setup
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
# Unit tests
|
|
make test
|
|
|
|
# Go tests
|
|
go test ./apps/...
|
|
|
|
# Rust tests
|
|
cargo test --workspace
|
|
|
|
# TypeScript tests
|
|
pnpm -r test
|
|
```
|
|
|
|
## Deployment
|
|
|
|
### Docker
|
|
|
|
```bash
|
|
make docker-build
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Kubernetes
|
|
|
|
```bash
|
|
kubectl apply -f deployments/kubernetes/
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Create `.env` files in each service directory:
|
|
|
|
**API Server** (`apps/api-server/.env`):
|
|
```env
|
|
MONGODB_URI=mongodb://localhost:27017/free5gc
|
|
REDIS_URI=redis://localhost:6379
|
|
API_PORT=8000
|
|
JWT_SECRET=your-secret-key
|
|
```
|
|
|
|
**Charging Engine** (`apps/charging-engine/.env`):
|
|
```env
|
|
REDIS_URI=redis://localhost:6379
|
|
SERVER_PORT=8080
|
|
```
|
|
|
|
**Web Dashboard** (`apps/web-dashboard/.env.local`):
|
|
```env
|
|
NEXT_PUBLIC_API_URL=http://localhost:8000
|
|
```
|
|
|
|
## 📖 Key Resources
|
|
|
|
- **free5GC**: [https://free5gc.org/](https://free5gc.org/)
|
|
- **Aya eBPF**: [https://aya-rs.dev/](https://aya-rs.dev/)
|
|
- **GSMA eSIM Specs**: [https://www.gsma.com/esim/](https://www.gsma.com/esim/)
|
|
- **Go 1.26 Docs**: [https://go.dev/doc/go1.26](https://go.dev/doc/go1.26)
|
|
- **Rust 1.94 Blog**: [https://blog.rust-lang.org/2026/03/05/Rust-1.94.0/](https://blog.rust-lang.org/2026/03/05/Rust-1.94.0/)
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
5. Open a Pull Request
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Support
|
|
|
|
- **Issues**: [GitHub Issues](https://github.com/yourorg/telecom-platform/issues)
|
|
- **Discussions**: [GitHub Discussions](https://github.com/yourorg/telecom-platform/discussions)
|
|
- **Email**: support@yourcompany.com
|
|
|
|
## Acknowledgments
|
|
|
|
- **free5GC Team**: For the open-source 5G core implementation
|
|
- **Aya Community**: For the pure-Rust eBPF framework
|
|
- **GSMA**: For standardizing eSIM technology
|
|
- **Go Team**: For the amazing Go 1.26 release
|
|
- **Rust Team**: For continuous language improvements
|
|
|