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.
We're always looking for people who value their work, so come and join us. We are hiring!
- Table of contents
- Overview
- Tech Stacks
- Setup and Configuration.
- Creating a Project
- User Guide
- Project Structure
- Feedback
- License
- Future Plans
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
This tool will have support for production applications using the following tech stacks.
Web:
Backend:
Databases:
- MySQL
- PostgreSQL
Cache:
- Redis
Infrastructure Provider:
- 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
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
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
Use the arrow keys to navigate and pick a service you want.
The complete stack initialization tutorial is given below.
You can see picky
's home page if you initialized atleast one stack. You can choose any option in the following.
Tips:
- If you want to go back from the prompt, click
Ctrl + D
- If you want to exit from the prompt, click
Ctrl + C
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. |
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
If you have any feedback, please reach out to us at GitHub Discussions
This project is under the MIT License.
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.