Skip to content

doochman/data-forge

Repository files navigation

You got it! Here's a professional and developer-friendly README.md for your data ingestion stack. It includes setup instructions, key commands, and helpful tips to get your whole stack running locally with Docker, Jenkins, Mage, Kafka, Flink, Beam, and more.


📦 Data Ingestion Stack

This monorepo contains a modular data ingestion stack powered by:

  • 🧠 Mage – data pipeline orchestration
  • 🌀 Apache Kafka & Zookeeper – real-time messaging
  • ⚡ Apache Flink – real-time stream processing
  • 🛠 Apache Beam (with Flink runner) – unified batch & stream pipelines
  • 📓 Jupyter – data exploration
  • 🧾 Kafka Schema Registry
  • 🔌 Kafka Connect – external source/sink connectors
  • 🏦 PostgreSQL – example storage layer
  • 📊 Grafana + Prometheus – monitoring and observability
  • 🧪 Jenkins – CI/CD pipeline
  • Airflow - Pipeline Orchestration
    

🚀 Quick Start

1. Clone the Repo

git clone https://github.com/your-org/data-ingestion-stack.git
cd data-ingestion-stack

2. Set Environment Variables

Create a .env file:

cp .env.example .env

Customize as needed (Postgres credentials, ports, etc.)


🐳 1. Start the Full Stack

With Docker Compose:

make up

This command builds and starts all core services defined in the docker-compose.yml:

  • Mage
  • Kafka
  • Flink (JobManager and TaskManager)
  • Beam
  • Jenkins
  • Airflow (Webserver, Scheduler)
  • Postgres
  • Zookeeper

2. Initialize Airflow (Run Once)

make airflow-init

This sets up the Airflow database and creates an admin user. Run this only the first time after the stack starts.

🚪 Access Ingestion Bridge

A beautiful status dashboard for your data stack:

make bridge

View Logs

make logs

🔧 Useful Commands

Task Command
🆙 Start all containers make up
🛑 Stop all containers make down
🧼 Rebuild everything make rebuild
🔍 Show logs make logs
🐚 Shell into Mage container make shell
🌐 Open Mage UI http://localhost:6789
🌐 Open Flink UI http://localhost:8081
🌐 Open Grafana http://localhost:3000
📓 Open Jupyter http://localhost:8888

🧪 CI/CD with Jenkins

This project includes a Jenkins pipeline defined in Jenkinsfile.

To test locally:

docker-compose up jenkins

Then visit: http://localhost:8080


📁 Project Structure

.
├── docker-compose.yml         # Stack definition
├── Makefile                   # Easy CLI commands
├── Jenkinsfile                # CI/CD pipeline
├── mage/                      # Mage project
├── flink/                     # Flink job manager/task manager
├── beam/                      # Beam SDK + pipeline
├── jupyter/                   # Jupyter environment
├── grafana/                   # Dashboards and config
├── postgres/                  # Init scripts
├── kafka/, zookeeper/         # Custom Kafka/Zoo setup (optional)
├── .env                       # Environment config
└── README.md                  # You're here

✅ Next Steps

  • 🧪 Add your Mage pipelines in /mage
  • 🔁 Add Beam jobs to /beam/pipeline
  • 🔌 Connect Kafka Connect to external sources (PostgreSQL, S3, etc.)
  • 🚢 Extend Jenkins to push images or deploy to a cluster

📦 Available Examples

  • Stock Price Streaming – Collects live market data, publishes to Kafka, processes with Beam, writes to Iceberg

🙌 Contributing

Feel free to fork this stack or submit pull requests! All feedback is welcome.


📜 License

MIT License – do what you want, just give credit where it's due. ❤️


Would you like me to create the actual .env.example, a sample pipeline, or add instructions for pushing to Docker Hub?

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors