Stack Orchestra

A flexible Docker Compose orchestration tool for managing multiple technology stacks

View the Project on GitHub tjandrayana/stack-orchestra

🎼 Building Stack Orchestra: From “I Can’t Code” to “I Built This”

Ever spent 3 hours setting up a database just to test a 5-minute feature?
Yeah, me too. That’s why I built Stack Orchestra.


🎬 The Moment Everything Changed

Picture this: It’s 2 AM. You’re learning to code. You need PostgreSQL for your project. You Google “how to install PostgreSQL,” follow 15 different tutorials, mess up your system, spend hours fixing it, and finally—FINALLY—get it working.

Then you realize you also need Redis. And Elasticsearch. And maybe Neo4j.

Sound familiar?

I just started learning to code, and I was drowning in setup hell. Every time I wanted to try a new technology, I’d spend more time configuring it than actually learning it. That’s when I had my “enough is enough” moment.

What if there was a way to spin up any tech stack with one command?

That question led me to build Stack Orchestra—and it changed everything.


😤 The Problem That Drove Me Crazy

Let me paint you a picture of my life before Stack Orchestra:

The Old Way (The Painful Way) 😰

Monday: "I need PostgreSQL"
  → 2 hours installing PostgreSQL
  → 1 hour configuring it
  → 30 minutes troubleshooting
  → Finally working! ✅

Tuesday: "Now I need Redis"
  → 1 hour installing Redis
  → 30 minutes configuring
  → Conflict with PostgreSQL port
  → Fix conflict, restart everything
  → Finally working! ✅

Wednesday: "Let me try Elasticsearch"
  → 3 hours of Docker Compose hell
  → Memory issues
  → Port conflicts
  → Give up, use cloud version 😢

Total time wasted: 8+ hours
Actual coding time: Maybe 2 hours

The New Way (The Stack Orchestra Way) 🚀

# Need PostgreSQL? 
make postgres-up
# Done in 30 seconds ✅

# Need Redis too?
make redis-up  
# Done in 30 seconds ✅

# Want Elasticsearch + Kibana?
make kibana-up
# Automatically starts Elasticsearch too!
# Done in 1 minute ✅

Total time: 2 minutes
Actual coding time: The rest of your day!


💡 The “Aha!” Moment

I was sitting there, frustrated, thinking: “Why does this have to be so hard?”

Then it hit me: What if each technology was a separate, independent service? What if I could start just what I need, when I need it?

That’s when Stack Orchestra was born.


🎯 What Stack Orchestra Actually Does

Think of Stack Orchestra as your personal tech stack butler. You tell it what you need, and it handles the rest.

🎪 Try This Right Now (Seriously, Do It!)

Open your terminal and run:

git clone https://github.com/tjandrayana/stack-orchestra
cd stack-orchestra
make help

Boom! You just saw all 14 available services. That took 10 seconds.

Now try this:

make postgres-up

Wait 30 seconds…

make ps

Look at that! PostgreSQL is running. No configuration. No headaches. Just… working.

That feeling? That’s what I wanted to give to every developer.


🎨 The Magic: How It Actually Works

1. 🎯 Run Only What You Need

Before Stack Orchestra:

# Start entire docker-compose with 14 services
docker-compose up -d
# Your laptop: 💻🔥🔥🔥 (overheating)
# Your RAM: 📈📈📈 (maxed out)
# Your sanity: 😵 (gone)

With Stack Orchestra:

# Just need PostgreSQL? 
make postgres-up
# Only PostgreSQL runs. Your laptop: 😌 (happy)

Real talk: How many times have you started a full docker-compose just to use one service? Stack Orchestra fixes that.


2. 🧠 Smart Dependency Management (It’s Actually Smart!)

Here’s where it gets cool. Watch this:

make kibana-up

What just happened?

  1. Stack Orchestra saw you want Kibana
  2. It checked: “Does Kibana need anything? Yes, Elasticsearch!”
  3. It started Elasticsearch first
  4. Then it started Kibana
  5. You did nothing. Just one command.

Try it yourself:

make kibana-up
make ps
# See both Elasticsearch AND Kibana running? 
# That's the magic! ✨

The best part? You don’t need to remember dependencies. Stack Orchestra does.


3. ⚡ Choose Your Speed

Feeling patient? Start services one by one:

make up
# Services start sequentially, nice and calm

Feeling impatient? Start them all at once:

make up-parallel
# Everything starts simultaneously
# Your laptop: "Challenge accepted!" 💪

Want to control the chaos?

PARALLELISM=3 make up-parallel
# Start 3 services at a time
# Perfect balance of speed and sanity

🎁 What’s in the Box? (Spoiler: It’s Awesome)

Stack Orchestra comes with 14 battle-tested technology stacks:

🎯 Technology 💡 What It’s For 🚀 Try It
Elasticsearch + Kibana Search & Analytics make kibana-up
Neo4j Graph Databases make neo4j-up
PostgreSQL Relational DB make postgres-up
MySQL Relational DB make mysql-up
ArangoDB Multi-model DB make arangodb-up
Redis Caching & Queues make redis-up
MongoDB Document DB make mongodb-up
Nginx Web Server make nginx-up
OpenResty Nginx + Lua make openresty-up
Prometheus Metrics & Monitoring make prometheus-up
Grafana Visualization & Dashboards make grafana-up
ScyllaDB High-Performance NoSQL make scylla-up
Qdrant Vector Database (AI/ML) make qdrant-up
Milvus Vector Database (Large Scale) make milvus-up

Each one:


🎬 A Day in My Life (With Stack Orchestra)

Let me show you how I actually use this:

🌅 Morning: Learning Graph Databases

make neo4j-up
# Opens Neo4j Browser at http://localhost:7474
# Learning Cypher queries
# Building my first graph

Time spent: 30 seconds to start
Time learning: The rest of the morning! 🎓


🌞 Afternoon: Building a REST API

make elasticsearch-up
make postgres-up  
make nginx-up
# Full stack running in 2 minutes
# Now I'm coding, not configuring!

Time spent: 2 minutes
Time coding: The rest of the afternoon! 💻


🌙 Evening: Experimenting with Lua

make openresty-up
# Testing Lua scripts at http://localhost:8081
# Building custom endpoints
# Having fun! 🎉

Time spent: 30 seconds
Time experimenting: All evening! 🚀


🌃 Night: Monitoring Your Stack

make grafana-up
# Automatically starts Prometheus too!
# Access Grafana at http://localhost:3000 (admin/admin)
# Prometheus pre-configured as data source
# Creating beautiful dashboards! 📊

Time spent: 1 minute
Time monitoring: All night! 📈


🌌 Late Night: Building AI Features with Vector Databases

# Need vector search for RAG or semantic search?
make qdrant-up
# Access REST API at http://localhost:6333
# Perfect for Go apps with official client library
# Building AI-powered features! 🤖

# Or for large-scale vector operations?
make milvus-up
# Automatically starts etcd and MinIO too!
# Access gRPC at localhost:19530
# Enterprise-grade vector database ready! 🚀

Time spent: 1 minute
Time building AI features: All night! 🧠


😴 Bedtime: Clean Shutdown

make down
# Everything stops cleanly
# No orphaned processes
# Good night! 😴

Time spent: 5 seconds
Peace of mind: Priceless ✨


🎓 What I Learned (And You Can Too!)

Building Stack Orchestra wasn’t just about solving my problem—it was a crash course in:

1. 🐳 Docker Compose Architecture

I learned how to structure multi-file compose projects. Each service is independent, but they share a network. It’s like having separate apartments in the same building.

2. 📝 Makefile Mastery

Makefiles aren’t just for compiling C code! I learned to create reusable, parameterized build systems. It’s like having a personal assistant that remembers all your commands.

3. 🎼 Service Orchestration

Managing dependencies and startup order taught me how real orchestration tools work. It’s the same concepts used in Kubernetes, just simpler.

4. 👥 Developer Experience

The best tool is the one you actually use. I focused on making Stack Orchestra so simple that using it is faster than not using it.


🎯 Try It Yourself (No, Really!)

Right now, in the next 2 minutes:

  1. Clone the repo:
    git clone https://github.com/tjandrayana/stack-orchestra
    cd stack-orchestra
    
  2. See what’s available:
    make help
    
  3. Start your first service:
    make redis-up
    
  4. Check it’s running:
    make ps
    
  5. Test it:
    redis-cli ping
    # Should return: PONG
    

Congratulations! You just started a service in under 2 minutes. No configuration. No headaches. Just… working.

That’s the power of Stack Orchestra.


📊 The Impact: Before vs. After

Before Stack Orchestra:

After Stack Orchestra:

The math is simple: More time coding = More learning = Better developer


🎁 Real-World Scenarios

Scenario 1: “I Need to Test Something Quickly”

Old way:

Stack Orchestra way:

make <service>-up    # 30 seconds
# Test your thing
make <service>-down  # 5 seconds

Total: 35 seconds

You just saved 64 minutes. That’s a whole episode of your favorite show!


Scenario 3: “I Need Monitoring for My App”

Old way:

Stack Orchestra way:

make grafana-up
# Wait 1 minute...
# Prometheus is running at http://localhost:9090
# Grafana is running at http://localhost:3000
# Prometheus is already configured as a data source!
# Start creating dashboards immediately!

Total: 1 minute

You just saved 2 hours and 59 minutes. That’s enough time to build a complete feature!


Scenario 2: “I’m Building a Full-Stack App”

Old way:

Stack Orchestra way:

SERVICES="postgres redis elasticsearch nginx" make up-parallel
# Wait 2 minutes...
# Start coding!

Total: 2 minutes

You just saved 3 hours and 58 minutes. That’s enough time to build a feature!


Scenario 4: “I Need Vector Search for My AI App”

Old way:

Stack Orchestra way:

# For Go apps, Qdrant is perfect
make qdrant-up
# Wait 30 seconds...
# Access at http://localhost:6333
# Official Go client: github.com/qdrant/go-client
# Start building RAG features immediately!

# Or for large-scale needs
make milvus-up
# Automatically starts etcd and MinIO
# Wait 1 minute...
# Access at localhost:19530
# Enterprise vector database ready!

Total: 1 minute

You just saved 5 hours and 59 minutes. That’s enough time to build your entire AI feature!


🚀 What’s Next? (The Roadmap)

I’m not done yet! Here’s what’s coming:

Want to help? Contributions are welcome! Check out the README for how to add new services.


💭 The Real Talk Section

Here’s the truth: I’m still learning to code.

This project isn’t perfect. There are probably better ways to do things. But you know what? It works. It solves a real problem. And it’s mine.

That’s the point.

You don’t need to be a senior engineer to build useful tools. You just need to:

  1. Have a problem
  2. Build a solution
  3. Share it with others

Stack Orchestra proves that even beginners can create something valuable.


🎯 Your Turn: What Will You Build?

Now that you know about Stack Orchestra, here’s my challenge to you:

  1. Try it: Clone the repo and start a service
  2. Use it: Build something with it
  3. Improve it: Found a bug? Want a feature? Contribute!
  4. Share it: Tell someone who might find it useful

The best way to learn is by doing. Stack Orchestra gives you the infrastructure. Now go build something amazing!


🎬 The Conclusion (But Not Really)

Stack Orchestra started as a personal learning tool. Now it’s something I’m proud to share.

But here’s the real story: This isn’t about Stack Orchestra. It’s about you.

You’re learning to code. You’re facing the same problems I faced. You’re spending hours on setup instead of coding.

You don’t have to.

Stack Orchestra is here. It’s free. It’s open source. It’s yours.

Use it. Improve it. Make it better. Share it.

Because the best tools aren’t built by experts. They’re built by people who have problems and decide to solve them.



💬 Let’s Connect!

Tried Stack Orchestra? Loved it? Hated it? Found a bug? Want to contribute?

I’d love to hear from you!

Remember: We’re all learning. Let’s learn together.


Built with ❤️ by someone who’s still learning, for others who are learning too.

Now go build something amazing! 🚀


🎁 Bonus: Quick Start Cheat Sheet

Save this for later:

# See all services
make help

# Start one service
make <service>-up

# Start multiple services
SERVICES="postgres redis" make up

# Start in parallel
SERVICES="postgres redis mongodb" make up-parallel

# Start monitoring stack (Prometheus + Grafana)
make grafana-up

# Start vector database for AI/ML
make qdrant-up
# or
make milvus-up

# Check status
make ps

# View logs
SERVICES="postgres" make logs

# Stop a service
make <service>-down

# Stop everything
make down

# Nuclear option (removes everything including data)
make clean

That’s it. That’s all you need to know.

Now go code! 💻✨