{"id":25615192,"url":"https://github.com/wednesday-solutions/service-picker","last_synced_at":"2025-04-13T21:13:16.334Z","repository":{"id":166807787,"uuid":"464364976","full_name":"wednesday-solutions/service-picker","owner":"wednesday-solutions","description":"A CLI tool that allows you to create batteries and integrated full-stack products. Pick from a range of frontend and backend templates, chose your favorite database, and sit back and relax while we deploy to AWS. Don’t worry about future deployments it comes with baked-in CI/CD pipelines","archived":false,"fork":false,"pushed_at":"2024-07-10T07:08:57.000Z","size":1388,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-13T21:13:08.840Z","etag":null,"topics":["aws","aws-cdk","cdk","fullstack-template","fullstack-template-setup","iac","infrastructure-as-code","product-scaffolding","scaffolding-tool","service-picker"],"latest_commit_sha":null,"homepage":"https://wednesday.is/building-products/?utm_source=github\u0026utm_medium=service-picker","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wednesday-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-28T06:29:20.000Z","updated_at":"2024-08-21T09:56:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"93a350d7-cebe-4526-8f5a-bed149cd8491","html_url":"https://github.com/wednesday-solutions/service-picker","commit_stats":null,"previous_names":["wednesday-solutions/service-picker","wednesday-solutions/picky"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wednesday-solutions%2Fservice-picker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wednesday-solutions%2Fservice-picker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wednesday-solutions%2Fservice-picker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wednesday-solutions%2Fservice-picker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wednesday-solutions","download_url":"https://codeload.github.com/wednesday-solutions/service-picker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248782260,"owners_count":21160717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-cdk","cdk","fullstack-template","fullstack-template-setup","iac","infrastructure-as-code","product-scaffolding","scaffolding-tool","service-picker"],"created_at":"2025-02-22T03:18:50.634Z","updated_at":"2025-04-13T21:13:16.309Z","avatar_url":"https://github.com/wednesday-solutions.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"left\" src=\"https://github.com/wednesday-solutions/service-picker/assets/114065489/fb48bfef-29d6-4568-b2da-acb3ceff924d\"  width=\"380\" height=\"500\" /\u003e\n\n\u003cdiv\u003e\n  \u003ca href=\"https://www.wednesday.is/?utm_source=github\u0026utm_medium=service-picker\" align=\"left\" style=\"margin-left: 0;\"\u003e\n    \u003cimg src=\"https://uploads-ssl.webflow.com/5ee36ce1473112550f1e1739/5f5879492fafecdb3e5b0e75_wednesday_logo.svg\"\u003e\n  \u003c/a\u003e\n  \u003cp\u003e\n    \u003ch1 align=\"left\"\u003eService Picker\n    \u003c/h1\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\nA 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.\nIt contains a number of \u003ca href=\"https://github.com/wednesday-solutions\"\u003eWednesday Solutions\u003c/a\u003e's open source projects, connected and working together. Pick whatever you need and build your own ecosystem.\n  \u003c/p\u003e\n\n---\n\n  \u003cp\u003e\n    \u003ch4\u003e\n      Expert teams of digital product strategists, developers, and designers.\n    \u003c/h4\u003e\n  \u003c/p\u003e\n\n  \u003cdiv\u003e\n    \u003ca href=\"https://www.wednesday.is/contact-us/?utm_source=github\u0026utm_medium=service-picker\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://uploads-ssl.webflow.com/5ee36ce1473112550f1e1739/5f6ae88b9005f9ed382fb2a5_button_get_in_touch.svg\" width=\"121\" height=\"34\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/wednesday-solutions/\" target=\"_blank\"\u003e\n      \u003cimg src=\"https://uploads-ssl.webflow.com/5ee36ce1473112550f1e1739/5f6ae88bb1958c3253756c39_button_follow_on_github.svg\" width=\"168\" height=\"34\"\u003e\n    \u003c/a\u003e\n  \u003c/div\u003e\n\n---\n\n\u003cspan\u003eWe're always looking for people who value their work, so come and join us. \u003ca href=\"https://www.wednesday.is/hiring/?utm_source=github\u0026utm_medium=service-picker\"\u003eWe are hiring!\u003c/a\u003e\u003c/span\u003e\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Overview](#overview)\n- [Tech Stacks](#tech-stacks)\n- [Setup and Configuration.](#setup-and-configuration)\n  - [Pre-requisites](#pre-requisites)\n  - [Installation](#installation)\n- [Creating a Project](#creating-a-project)\n- [User Guide](#user-guide)\n- [Project Structure](#project-structure)\n- [Feedback](#feedback)\n- [License](#license)\n- [Future Plans](#future-plans)\n\n## Overview\n\nOnce 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?\"\n\nFast-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 \u0026 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.\n\nThats where the service-picker comes in. We're working on building a cli tool that allows you to scaffold batteries included code, IaC \u0026 CI/CD pipelines, across environments and stacks, that is completely integrated with each other and ready to go.\n\nThis 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.\n\nService picker works on macOS, Windows and Linux.\u003cbr\u003e\nIf something doesn't work, please file an [issue](https://github.com/wednesday-solutions/service-picker/issues).\u003cbr\u003e\nIf you have questions, suggestions or need help, please ask in [GitHub Discussions](https://github.com/wednesday-solutions/service-picker/discussions)\n\n## Tech Stacks\n\nThis tool will have support for production applications using the following tech stacks.\n\n**Web:**\n\n- [React JS](https://github.com/wednesday-solutions/react-template)\n- [Next JS](https://github.com/wednesday-solutions/nextjs-template)\n\n**Backend:**\n\n- [Node (Hapi - REST API)](https://github.com/wednesday-solutions/nodejs-hapi-template)\n- [Node (Express - GraphQL API)](https://github.com/wednesday-solutions/node-express-graphql-template)\n\n**Databases:**\n\n- MySQL\n- PostgreSQL\n\n**Cache:**\n\n- Redis\n\n**Infrastructure Provider:**\n\n- [AWS](https://aws.amazon.com/)\n\n## Setup and Configuration.\n\n### Pre-requisites\n\n- [Golang](https://go.dev/doc/install)\n- [Node JS](https://nodejs.org/en/download)\n- Package Manager([npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) or [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable))\n- [Docker](https://docs.docker.com/engine/install/) - Install and have it running in your local to docker compose applications and setup infrastructures in AWS.\n- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - Configure to your AWS account.\n```bash\n $ aws configure\nAWS Access Key ID: MYACCESSKEYID\nAWS Secret Access Key: MYSECRETKEY\nDefault region name [us-west-2]: MYAWSREGION\nDefault output format [None]:\n```\n- Create a repository in your [AWS ECR](https://aws.amazon.com/ecr/).\n\n```bash\n $ aws ecr create-repository --repository-name cdk-hnb659fds-container-assets-MYAWSACCOUNTID-MYAWSREGION\n```\n\n\n### Installation\n\nUsing Picky is easy. First use `go install` to install the latest version of the library (`go` should be installed in your system).\n\n```bash\ngo install github.com/wednesday-solutions/picky@latest\n```\n\nPlease make sure the installation is successful by running the following command.\n\n```bash\npicky -v\n```\n\n## Creating a Project\n\nTo create a new project, you need to pick stacks which are mentioned in [tech stacks](#tech-stacks)\u003cbr\u003e\nTo start using `picky`\n\n```bash\nmkdir my-project\ncd my-project\n```\n\n```bash\npicky service\n```\n\n![pick_a_service](https://github.com/wednesday-solutions/service-picker/assets/114065489/a3440e2a-9486-4419-85a6-eae2029ba45a)\n\nUse the arrow keys to navigate and pick a service you want.\u003cbr\u003e\n\nThe complete stack initialization tutorial is given below.\n\n![stack_initialisation_demo](https://github.com/wednesday-solutions/service-picker/assets/114065489/0c2f0e0b-bc05-4a3d-9d27-a69c6654419b)\n\nYou can see `picky`'s home page if you initialized atleast one stack. You can choose any option in the following.\n\n\u003cimg width=\"551\" alt=\"Picky Home Preview Image\" src=\"https://github.com/wednesday-solutions/service-picker/assets/114065489/322fc49b-43b3-4d0e-9753-6db6d3dd96a5\"\u003e\n\n***Tips:***\n- If you want to go back from the prompt, click `Ctrl + D`\n- If you want to exit from the prompt, click `Ctrl + C`\n\n## User Guide\n\n| Option           | Use                                                                                       |\n| ---------------- | ----------------------------------------------------------------------------------------- |\n| `Init Service`   | Initialize a stack.                                                                       |\n| `CI/CD`          | Create CI/CD Pipeline in GitHub.                                                          |\n| `Docker Compose` | Create Docker Compose file for the mono-repo. It consist of all the selected stacks.      |\n| `Setup Infra`    | Setup infrastructure for initialized stacks.                                              |\n| `Deploy`         | Deploy the infrastructure in AWS. It can deploy Frontend, Backend or Full stack projects. |\n| `Remove Deploy`  | Remove the deployed infrastructure.                                                       |\n| `Git Init`       | Initialize empty git repository in the current directory.                                 |\n| `Exit`           | Exit from the tool.                                                                       |\n\n## Project Structure\n\nIt will be like the following in the current directory.\n\n```\nmy-project\n├── .github\n│   └── workflows\n│       ├── cd-backend-node-hapi-pg.yml\n│       ├── cd-frontend-next-js-web.yml\n│       ├── ci-backend-node-hapi-pg.yml\n│       └── ci-frontend-next-js-web.yml\n├── .sst\n│   ├── artifacts\n│   ├── dist\n│   ├── types\n│   ├── debug.log\n│   └── outputs.json\n├── node_modules\n├── stacks\n│   ├── BackendNodeHapiPg.js\n│   └── FrontendNextJsWeb.js\n├── backend-node-hapi-pg\n│   └── ...\n├── frontend-next-js-web\n│   └── ...\n├── .env\n├── .git\n├── .gitignore\n├── cdk.context.json\n├── docker-compose.yml\n├── backend-node-hapi-outputs.json\n├── frontend-next-js-web-outputs.json\n├── package.json\n├── parseSstOutputs.js\n├── sst.config.js\n└── yarn.lock\n```\n\n## Feedback\n\nIf you have any feedback, please reach out to us at [GitHub Discussions](https://github.com/wednesday-solutions/service-picker/discussions)\n\n## License\n\nThis project is under the [MIT License](https://github.com/wednesday-solutions/service-picker/blob/main/LICENSE).\n\n## Future Plans\n\nCurrently 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwednesday-solutions%2Fservice-picker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwednesday-solutions%2Fservice-picker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwednesday-solutions%2Fservice-picker/lists"}