{"id":17447836,"url":"https://github.com/pmuens/simple","last_synced_at":"2025-06-29T14:32:15.987Z","repository":{"id":146811151,"uuid":"77694404","full_name":"pmuens/simple","owner":"pmuens","description":"Dead simple CoC based serverless framework","archived":false,"fork":false,"pushed_at":"2017-01-02T13:47:52.000Z","size":14,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-15T10:44:12.477Z","etag":null,"topics":["cli","serverless","serverless-architectures","serverless-framework"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pmuens.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2016-12-30T15:30:10.000Z","updated_at":"2019-03-06T03:34:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"a31d46a4-1c12-4bae-bd89-debe63d512df","html_url":"https://github.com/pmuens/simple","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pmuens/simple","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmuens%2Fsimple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmuens%2Fsimple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmuens%2Fsimple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmuens%2Fsimple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmuens","download_url":"https://codeload.github.com/pmuens/simple/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmuens%2Fsimple/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262608864,"owners_count":23336583,"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":["cli","serverless","serverless-architectures","serverless-framework"],"created_at":"2024-10-17T19:53:40.104Z","updated_at":"2025-06-29T14:32:15.955Z","avatar_url":"https://github.com/pmuens.png","language":"Go","readme":"# Simple\n\n\u003e Dead simple CoC based Serverless CLI tool\n\n**Note:** Simple was Hackathon project to deep dive into AWS SAM. This code will be updated and re-developed in a TDD way so that it's way more clean, better architected and DRY. I'll force-push once I'm done with it (and maybe force push in the meantime as well)!\n\n## Table of contents\n\n- [What is Simple?](#what-is-simple)\n- [Getting started](#getting-started)\n- [A Simple service structure](#a-simple-service-structure)\n- [CLI reference](#cli-reference)\n- [But I need more flexibility](#but-i-need-more-flexibility)\n\n## What is Simple?\n\nSimple is a CLI tool written in Go which enables you a dead simple way to deploy Serverless applications.\n\nWith Simple you can focus on your function code. Convention over configuration allows Simple to determine what resources to create and how to deploy your service. See more about this in the [getting started](#getting-started) section.\n\n**Note:** Never use Simple in production as it has pretty candid defaults.\n\n```bash\nroot@11fc58fa7244:/go/src/github.com/pmuens/simple/example-service# ls -lisa\ntotal 4\n2817035 0 drwxr-xr-x  4 root root 136 Jan  2 06:26 .\n2847500 0 drwxr-xr-x 14 root root 476 Dec 31 12:12 ..\n2915578 4 -rw-r--r--  1 root root   8 Dec 30 15:17 .gitignore\n2907983 0 drwxr-xr-x  3 root root 102 Dec 30 13:38 timer-hello\n\nroot@11fc58fa7244:/go/src/github.com/pmuens/simple/example-service# ls -lisa .simple/\ntotal 12\n2970038 0 drwxr-xr-x 5 root root  170 Jan  2 06:29 .\n2817035 0 drwxr-xr-x 5 root root  170 Jan  2 06:29 ..\n2970039 4 -rwxr-xr-x 1 root root  192 Jan  2 06:29 create-stack.yml\n2970041 4 -rwxr-xr-x 1 root root 1520 Jan  2 06:29 example-service.zip\n2970040 4 -rwxr-xr-x 1 root root  579 Jan  2 06:29 update-stack.yml\n\nroot@11fc58fa7244:/go/src/github.com/pmuens/simple/example-service# go run ../main.go package\n[SIMPLE]: Packaging...\n[SIMPLE]: Creating create-stack.yml file...\n[SIMPLE]: Creating update-stack.yml file...\n[SIMPLE]: Creating .zip file...\n[SIMPLE]: Compressing /go/src/github.com/pmuens/simple/example-service/.gitignore\n[SIMPLE]: Compressing /go/src/github.com/pmuens/simple/example-service/.simple/create-stack.yml\n[SIMPLE]: Compressing /go/src/github.com/pmuens/simple/example-service/.simple/example-service.zip\n[SIMPLE]: Compressing /go/src/github.com/pmuens/simple/example-service/.simple/update-stack.yml\n[SIMPLE]: Compressing /go/src/github.com/pmuens/simple/example-service/timer-hello/handler.js\n[SIMPLE]: Successfully packaged service...\n\nroot@11fc58fa7244:/go/src/github.com/pmuens/simple/example-service# go run ../main.go deploy\n[SIMPLE]: Deploying (this might take a few seconds)...\n[SIMPLE]: Creating Changeset...\n[SIMPLE]: CREATE_COMPLETE\n[SIMPLE]: Creating Stack...\n[SIMPLE]: CREATE_IN_PROGRESS\n[SIMPLE]: CREATE_IN_PROGRESS\n[SIMPLE]: CREATE_IN_PROGRESS\n[SIMPLE]: CREATE_COMPLETE\n[SIMPLE]: Stack successfully created...\n[SIMPLE]: Uploading artifacts...\n[SIMPLE]: Creating Changeset...\n[SIMPLE]: CREATE_IN_PROGRESS\n[SIMPLE]: CREATE_COMPLETE\n[SIMPLE]: Updating Stack...\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_IN_PROGRESS\n[SIMPLE]: UPDATE_COMPLETE\n[SIMPLE]: Done...\n\nroot@11fc58fa7244:/go/src/github.com/pmuens/simple/example-service# go run ../main.go remove\n[SIMPLE]: Removing (this might take a few seconds)...\n[SIMPLE]: Removing artifacts...\n[SIMPLE]: Successfully removed artifacts...\n[SIMPLE]: Removing Stack...\n[SIMPLE]: DELETE_IN_PROGRESS\n[SIMPLE]: DELETE_IN_PROGRESS\n[SIMPLE]: DELETE_IN_PROGRESS\n[SIMPLE]: DELETE_IN_PROGRESS\n[SIMPLE]: Done...\n[SIMPLE]: Successfully removed service...\n```\n\n## Getting started\n\n### Step by step guide\n\n**Note:** Simple will create a deployment bucket with a name based on your services directory. You may want to rename the service so that the deployment bucket won't conflict with other buckets on AWS.\n\nFurthermore Simple uses your `default` profile and deploys to `us-east-1`.\n\n1. Make sure you have installed [Docker](http://docker.com) on your machine\n2. Clone this repository\n3. `cd` into the repository\n4. Run `docker-compose run go-simple bash` to get into a container running Simple\n5. Run `go get` to download all dependencies\n6. Run `cd example-service` to get into the example service\n7. Run `go run ../main.go package` to package the service\n8. You can see the output in the `.simple` directory\n9. Run `go run ../main.go deploy` to deploy the service (you can run this whenever you've changed something and want to re-deploy)\n10. Run `go run ../main.go remove` to remove the service\n\n### Building a binary\n\nJust run the `go build` command to build your own executable binary.\n\nAfter that you should be able to do something like `./simple package` or `./simple deploy`.\n\n## A Simple service structure\n\nSimple follows a strict convention so that you don't need any configuration.\n\n### Service structure\n\nTake a look at the [example-service](./example-service) to see a fully fledged example service.\n\n**Note:** Directories which don't follow this naming convention will be added to the services zip file but not considered during resource compilation.\n\n```\n- \u003cservice-name\u003e\n  - \u003cevent\u003e-\u003cfunction-name\u003e\n    - handler.js (which exports a handler module)\n```\n\n### Available events\n\n#### Alexa Skill\n\n- **event:** alexa-skill\n- **example:** alexa-skill-greeter/handler.js\n\n#### API\n\n- **event:** api\n- **example:** api-greeter/handler.js\n\n#### S3\n\n- **event:** s3\n- **example:** s3-greeter/handler.js\n\n#### Timer\n\n*Will run function every 2 minutes*\n\n- **event:** timer\n- **example:** timer-greeter/handler.js\n\n#### None\n\n*Just the function. No events will be added*\n\n- **event:** none\n- **example:** none-greeter/handler.js\n\n## CLI reference\n\nUsage: `simple [command] [--help]`\n\n### Version\n\nPrints out the version number.\n\n`simple version`\n\n### Package\n\n**Note:** Must be run inside of the service\n\nCreates deployment artifacts in a `.simple` directory in the services directory.\n\n`simple package`\n\n### Deploy\n\n**Note:** Must be run inside of the service\n\nDeploys the service artifacts. You must run `simple package` beforehand to create the deployment artifacts.\n\n`simple deploy`\n\n### Remove\n\n**Note:** Must be run inside of the service\n\nRemoves the service. A service must be deployed (e.g. with `simple deploy`) in order to be removable.\n\n`simple remove`\n\n## But I need more flexibility\n\nSimple aims to make things as simple as possible. It should help you explore the Serverless world.\n\nPlease look at [Serverless](http://github.com/serverless/serverless) if you want a feature rich, fully fledged Serverless tool.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmuens%2Fsimple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmuens%2Fsimple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmuens%2Fsimple/lists"}