Skip to content

Latest commit

 

History

History
227 lines (166 loc) · 9.31 KB

README.md

File metadata and controls

227 lines (166 loc) · 9.31 KB

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

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

  • Golang
  • Node JS
  • Package Manager(npm or yarn)
  • Docker - Install and have it running in your local to docker compose applications and setup infrastructures in AWS.
  • AWS CLI - Configure to your AWS account.
 $ aws configure
AWS Access Key ID: MYACCESSKEYID
AWS Secret Access Key: MYSECRETKEY
Default region name [us-west-2]: MYAWSREGION
Default output format [None]:
  • Create a repository in your AWS ECR.
 $ aws ecr create-repository --repository-name cdk-hnb659fds-container-assets-MYAWSACCOUNTID-MYAWSREGION

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

Tips:

  • If you want to go back from the prompt, click Ctrl + D
  • If you want to exit from the prompt, click Ctrl + C

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.