Skip to content
项目

Victor-Kipruto-Rop/TELIXO has 48 GitHub stars and 0 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-13 08:38 UTC. Last push 2026-10-26.

这些数字如何统计

Real-Time M-Pesa Transaction Streaming Pipeline built using modern data engineering technologies to ingest, process, stream, and analyze transaction data in real time. Demonstrates event-driven architecture, stream processing, data pipelines, and scalable analytics for fintech applications.

实测星标增长

24小时
0
7天
正在收集历史
15天
正在收集历史
1个月
正在收集历史

各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。

README.md

原文

TELIXO

TELIXO is a multi-language fintech streaming and infrastructure platform for ingesting, validating, processing, and analyzing M-Pesa transaction events. It does not treat callback receipt as proof of payment, and this repository does not itself initiate, reverse, refund, or settle payments.

Repository layout

The application and platform code is organized into six top-level platform directories:

Directory Responsibility
Python/ Callback ingestion, event normalization, Kafka streaming, data quality, dbt/analytics, risk research, and Python tests
Java/ Java enterprise and core service scaffolds
Elixir/ Concurrent delivery and workflow service scaffolds
Infrastructure/ Local dependencies, deployment assets, Kubernetes/Terraform, observability, shared event contracts, and platform documentation
frontend/ Web applications and frontend build/deployment configuration
Go/ Event relay, quota engine, and infrastructure monitoring services

GitHub automation remains in .github/ because GitHub Actions requires that path. Repository-level configuration and entry-point files (for example .env.example, compose.yaml, Dockerfiles, and Makefile) remain at the root; they are not additional application platform directories.

Legacy Python runtime and data-engineering paths have been grouped under Python/. Shared contracts, operational documentation, and infrastructure tooling have been grouped under Infrastructure/. When changing these locations, update imports, Docker build contexts, Compose mounts, workflow paths, and deployment manifests together.

Local development

Use Docker Compose v2.20.3 or newer for the combined platform configuration, which uses Compose include.

Validate the complete Compose model before starting containers:

docker compose -f compose.yaml config

Build and start the combined local stack:

docker compose -f compose.yaml build
docker compose -f compose.yaml up -d
docker compose -f compose.yaml ps

Stop the stack:

docker compose -f compose.yaml down

Individual platform stacks can be started from the repository root:

docker compose -f Infrastructure/compose.yaml up -d
docker compose -f python-compose.yaml up -d --build
docker compose -f Java/compose.yaml up -d --build
docker compose -f Elixir/compose.yaml up -d --build
docker compose -f Go/compose.yaml up -d --build
docker compose -f frontend/compose.yaml up -d --build

The existing root Dockerfiles use the repository root as the Docker build context and explicitly copy the relevant code from Python/. Do not change the build context without updating the corresponding Dockerfile paths.

Event delivery and financial safety

  • Use durable acceptance and retry/recovery semantics for callbacks and published events.
  • Describe delivery as at-least-once unless stronger guarantees are proven end-to-end; downstream consumers must be idempotent.
  • Persist malformed-message dead letters before advancing a consumer offset.
  • Do not treat validation callbacks as confirmation of a financial transaction.
  • Do not trust an unverified callback field as tenant identity.
  • Never commit production credentials, access tokens, or customer payloads.
  • Do not deploy structural changes to production until CI, migration compatibility, and staging smoke tests pass.

Validation status

A repository reorganization is not proof that all services build or are production-ready. Run the relevant CI workflows and Compose validation after structural changes, review failures, and record which integration tests were skipped because dependencies or provider test credentials were unavailable.

探索相关项目