Code Monkey home page Code Monkey logo

stackbox's Introduction

StackBox


Stackbox helps you create app stacks loaded with all your favourite clients, services and infra in under 5 mins. The aim of the project is to help developers setup quick infra and boilerplates to start the dev work asap. Ideally this project is to help rapid prototyping, building PoCs or writing code for hackathons.

Wiki is a good place to start!

  1. About
  2. Get Started
  3. Working
  4. Debugging

Get Started

Run

Brew installation

brew tap Stack-Box/tap
brew install stackbox

Run

stackbox

Creates a folder names stackbox in the current directory with all source.

From source

sh stackbox.sh

Follow the menu options to select clients and services for your stack.

Jump to example-stacks to quickly try a run

Support

Clients/Services Mysql Elasticsearch MongoDB S3 DynamoDB
Flask
Rails
Vue
Angular
React

Other containers that you can bring up:

  1. nginx
  2. kibana
  3. kafka + zookeeper (there's a kafka handler support for put/get messages in flask)

Example Stacks

The following are a few example stacks you could spin-up.

Run from source - sh stackbox.sh or Run from Brew installation - stackbox

1. Flask-Vue-Mysql-Elasticsearch

Choose vue for frontend, flask for backend. Choose mysql and elasticsearch (with/without kibana) for services. After the run is finished, the final log should look like the one below.

flask is up at http://localhost:80
vue is up at http://localhost:8080
elasticsearch is up at http://localhost:9200
mysql is up at http://localhost:3306

Now you can visit http://localhost:8080 to view the Vue frontend. From there you can click on Mysql/Elasticsearch links to view the preloaded data from mysql/elasticsearch containers being rendered.

2. Flask-Angular-Mysql-Elasticsearch

Choose vue for frontend, flask for backend. Choose mysql and elasticsearch (with/without kibana) for services. After the run is finished, the final log should look like the one below.

flask is up at http://localhost:80
angular is up at http://localhost:4200
elasticsearch is up at http://localhost:9200
mysql is up at http://localhost:3306

Now you can visit http://localhost:4200 to view the Vue frontend. From there you can click on Mysql/Elasticsearch links to view the preloaded data from mysql/elasticsearch containers being rendered.

Visit Working or Debugging pages to know more about internal details.

stackbox's People

Contributors

dependabot[bot] avatar harinisureshs avatar ikram-shah avatar namrathamyske avatar strangest-quark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

stackbox's Issues

Stopping existing containers when docker-compose changes after a rerun of stack_box

We lose track of existing containers when we rerun stackbox keeping the existing containers. Two possible solutions.

Also results in listing these existing containers as up in the final stackbox.sh logs

Add a check before new docker compose generation for existing containers with the prefix stackbox_ in their names to stop before bringing up new ones
Or add a stackdown sh to bring down containers

[Springboot] Add springboot barebones

Dockerize a starter springboot app and add to stackbox. This will invlove the following steps.

  1. Dockerize basic springboot app (without any endpoints) with multistage build
  2. Add code folder with Dockerfile to repo
  3. Add springboot as an option in stackbox.sh

Refer to Angular and React PRs for more understanding.

Fix docker compose logs

Populate the logs folder in repo root with proper docker logs for troubleshooting purposes.

docker-compose logs is a way to get all running container logs.

Identify more services to add

Currently to add:

Services

  1. Dynamo
  2. S3
  3. Postgres
  4. CouchDB
  5. MongoDB
  6. Kafka
  7. Hadoop

Clients

  1. Rails
  2. Django
  3. Springboot
  4. Angular
  5. React
  6. Golang

[Django] Add Django Barebones

Dockerize a starter django app and add to stackbox. This will invlove the following steps.

Dockerize basic django app (without any endpoints)
Add code folder with Dockerfile to repo
Add django as an option in stackbox.sh

Refer to Angular and React PRs for more understanding.

[Golang] Add Golang barebones

Dockerize a starter golang app and add to stackbox. This will invlove the following steps.

  1. Dockerize basic golang app (without any endpoints) (with multistage build)
  2. Add code folder with Dockerfile to repo
  3. Add golang as an option in stackbox.sh

Refer to Angular and React PRs for more understanding.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.