Service Picker

A CLI tool that helps to setup full-stack javascript applications without having to touch any code. You'll be able to pick templates and databases of your choice, integrate it, set up automation pipelines and create infrastructure in AWS with ease. It contains a number of Wednesday Solutions's open source projects, connected and working together. Pick whatever you need and build your own ecosystem.


Expert teams of digital product strategists, developers, and designers.


We're always looking for people who value their work, so come and join us. We are hiring!


Table of contents

  1. Overview
  2. Tech Stacks
  3. Pre-requisites
  4. Installation
  5. Creating a Project
  6. User Guide
  7. Project Structure
  8. Feedback
  9. License
  10. Future Plans

Overview

Once business gives the sign-off and it's time for execution, the question thats most frequently asked is "What's the tech stack that we should use for this?"

Fast-forward past the long debates where engineers are pitching their favourite languages and frameworks, we kick "git init" a bunch of repos for the frontend, infrastructure & backend. We then spend some time creating some boilerplate, or use some templates, setting up the CI/CD pipelines, IaC etc. The next thing you know, it's 6 weeks later and you're still configuring the connection between your database and your ec2 instance. The amount of business logic that you've written is minimal cause all of your team's time was spent configuring repos, environments, security groups, and other nitty-grittys.

Thats where the service-picker comes in. We're working on building a cli tool that allows you to scaffold batteries included code, IaC & CI/CD pipelines, across environments and stacks, that is completely integrated with each other and ready to go.

This means that setting up the infra and codebase for your next project which needs a React web app, with a node.js backend and a postgreSQL db is as simple as a hitting a few arrow buttons, and enter a couple of times.

Service picker works on macOS, Windows and Linux.
If something doesn't work, please file an issue.
If you have questions, suggestions or need help, please ask in GitHub Discussions

Tech Stacks

This tool will have support for production applications using the following tech stacks.

Web:

Backend:

Databases:

  • MySQL
  • PostgreSQL

Cache:

  • Redis

Infrastructure Provider:

Setup and Configuration.

Pre-requisites

Installation

Using Picky is easy. First use go install to install the latest version of the library (go should be installed in your system).

go install github.com/wednesday-solutions/picky@latest

Please make sure the installation is successful by running the following command.

picky -v

Creating a Project

To create a new project, you need to pick stacks which are mentioned in tech stacks
To start using picky

mkdir my-project
cd my-project
picky service

Pick a service

Use the arrow keys to navigate and pick a service you want.

The complete stack initialization tutorial is given below.

stack_initialisation_demo

You can see picky's home page if you initialized atleast one stack. You can choose any option in the following.

Picky Home Preview Image

User Guide

Option Use
Init Service Initialize a stack.
CI/CD Create CI/CD Pipeline in GitHub.
Docker Compose Create Docker Compose file for the mono-repo. It consist of all the selected stacks.
Setup Infra Setup infrastructure for initialized stacks.
Deploy Deploy the infrastructure in AWS. It can deploy Frontend, Backend or Full stack projects.
Remove Deploy Remove the deployed infrastructure.
Git Init Initialize empty git repository in the current directory.
Exit Exit from the tool.

Project Structure

It will be like the following in the current directory.

my-project
├── .github
│   └── workflows
│       ├── cd-backend-node-hapi-pg.yml
│       ├── cd-frontend-next-js-web.yml
│       ├── ci-backend-node-hapi-pg.yml
│       └── ci-frontend-next-js-web.yml
├── .sst
│   ├── artifacts
│   ├── dist
│   ├── types
│   ├── debug.log
│   └── outputs.json
├── node_modules
├── stacks
│   ├── BackendNodeHapiPg.js
│   └── FrontendNextJsWeb.js
├── backend-node-hapi-pg
│   └── ...
├── frontend-next-js-web
│   └── ...
├── .env
├── .git
├── .gitignore
├── cdk.context.json
├── docker-compose.yml
├── backend-node-hapi-outputs.json
├── frontend-next-js-web-outputs.json
├── package.json
├── parseSstOutputs.js
├── sst.config.js
└── yarn.lock

Feedback

If you have any feedback, please reach out to us at GitHub Discussions

License

This project is under the MIT License.

Future Plans

Currently the service-picker is capable of setting up full-stack javascript applications. In it's end state the service picker will allow you to choose right from your cloud infra structure provider (GCP, AWS, AZURE) to different backends and databases that you'd like to use, to your caching strategy, message broker, mobile app release tooling and any other tooling choice that you must make along your product development journey.