{"id":18482617,"url":"https://github.com/kdcio/abu","last_synced_at":"2025-04-08T17:31:13.050Z","repository":{"id":38256738,"uuid":"352181840","full_name":"kdcio/abu","owner":"kdcio","description":"Abu CMS is a Serverless Headless CMS","archived":false,"fork":false,"pushed_at":"2025-03-10T14:54:43.000Z","size":1830,"stargazers_count":37,"open_issues_count":92,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T16:43:00.618Z","etag":null,"topics":["abu-cms","aws-cli","aws-region","cloudfront","cms","coreui","dynamodb","headless-cms","kdcio","kdcsoftware","s3-bucket","serverless","serverless-cms"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/kdcio.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":"2021-03-27T21:34:09.000Z","updated_at":"2025-03-09T15:29:54.000Z","dependencies_parsed_at":"2023-02-13T18:01:30.326Z","dependency_job_id":"beac2f7e-348d-4298-8e46-ad39c7efef8c","html_url":"https://github.com/kdcio/abu","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kdcio%2Fabu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kdcio%2Fabu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kdcio%2Fabu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kdcio%2Fabu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kdcio","download_url":"https://codeload.github.com/kdcio/abu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247892344,"owners_count":21013688,"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":["abu-cms","aws-cli","aws-region","cloudfront","cms","coreui","dynamodb","headless-cms","kdcio","kdcsoftware","s3-bucket","serverless","serverless-cms"],"created_at":"2024-11-06T12:29:22.009Z","updated_at":"2025-04-08T17:31:11.729Z","avatar_url":"https://github.com/kdcio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abu CMS\n\nOpen-source serverless headless CMS. Deployed in AWS infrastructure.\n\n![Models](docs/img/models.png)\n\nAbuCMS is an easy to use content manager making them available via API.\n\n- Bring your data anywhere - Central location for all your content. Accessible to anywhere via REST API.\n- Zero-cost - As long you are within the AWS free-tier limit, you'll be paying $0 forever. Even if you go above the free-tier, cost will be minimal and it will be a pay-per-use model.\n- No servers needed - Services used are all serverless technologies which means you don't have to worry about performance, scalability, security and cost.\n\n## Infrastructure\n\n![Infrastructure](docs/img/infra.png)\n\n## Requirements\n\n- Operating system with bash - MacOS or Linux\n- [aws cli](https://aws.amazon.com/cli/) with working [named profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)\n- [nodejs](https://nodejs.org/en/)\n- [yarn](https://yarnpkg.com/)\n- openssl for generating random string\n\n## Local Development\n\nYou'll need [docker](https://www.docker.com/) installed for running [local dynamodb](https://hub.docker.com/r/amazon/dynamodb-local).\n\n1. Clone this project and install packages\n\n   ```bash\n   git clone https://github.com/kdcio/abu.git\n   cd abu\n   yarn\n   ```\n\n2. Create `config/dev.yml` and add `PROJECT_NAME`, `REGION` and `PROFILE`.\n\n   ```yaml\n   PROJECT_NAME: myproject.com\n   REGION: ap-southeast-1\n   PROFILE: dev\n   FIRST_USER_EMAIL: juan@myproject.com\n   ```\n\n   `PROJECT_NAME` will be referenced in all resources used in AWS. It must be unique with only letters and numbers. It should also be unique for S3 bucket name and cognito pool client domain usage. I recommend using a subdomain like `admin-dev.myproject.com`.\n\n   `REGION` is the [AWS Region](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) you want your application to be deployed.\n\n   `PROFILE` is used by AWS CLI to identify who you are. Here's how you configure [named profiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).\n\n3. Run local setup script\n\n   ```bash\n   yarn setup:local\n   ```\n\n   This will create cognito resources in your AWS account and then run a local dynamodb.\n\n   A temporary password will be sent to your email.\n\n   Note that the script will append config variables to `config/dev.yml` and `packages/cms/.env` (this file will be created automatically).\n\n4. Run the API, CMS and S3 using [concurrently](https://www.npmjs.com/package/concurrently)\n\n   ```bash\n   yarn start\n   ```\n\n   You can also run them separately `yarn start:api` and `yarn start:cms` for easier debugging.\n\nHere are the services that will be running:\n\n1. [http://localhost:8060/](http://localhost:8060/) - CMS\n2. [http://localhost:8061/](http://localhost:8061/) - API\n3. [http://localhost:8062/](http://localhost:8062/) - DynamoDB local\n4. [http://localhost:8063/](http://localhost:8063/) - [DynamoDB manager](https://github.com/YoyaTeam/dynamodb-manager)\n5. [http://localhost:8064/](http://localhost:8064) - S3 local\n\n## Deployment using S3 and CloudFront without domain name\n\n1. Clone this project and install packages\n\n   ```bash\n   git clone https://github.com/kdcio/abu.git\n   cd abu\n   yarn\n   ```\n\n2. Create `config/prod.yml` and add `PROJECT_NAME`, `REGION` and `PROFILE`.\n\n   ```yaml\n   PROJECT_NAME: admin.myproject.com\n   UPLOAD_BUCKET: admin-upload.myproject.com\n   REGION: ap-southeast-1\n   PROFILE: my-production-profile\n   FIRST_USER_EMAIL: juan@myproject.com\n   ```\n\n   `PROJECT_NAME` will be referenced in all resources used in AWS. It must be unique with only letters and numbers. It should also be unique for S3 bucket name and cognito pool client domain usage. I recommend using a subdomain like `admin.myproject.com`.\n\n   `UPLOAD_BUCKET` will be an S3 bucket to host file uploads.\n\n   `REGION` is the [AWS Region](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) you want your application to be deployed.\n\n   `PROFILE` is used by AWS CLI to identify who you are. Here's how you configure [named profiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).\n\n3. Run deploy script\n\n   ```bash\n   yarn deploy prod\n   ```\n\n   The script will take about 20 minutes to finish to provisioning everything.\n\n   Here's a list of AWS resources that will be provisioned:\n\n   - CMS Website Stack\n     - CloudFront\n     - S3\n   - API Stack\n     - Lambda\n     - API Gateway\n     - CloudWatch\n   - Upload Stack\n     - CloudFront\n     - S3\n     - Lambda Edge\n   - User Management Stack\n     - Cognito\n   - Database Stack\n     - DynamoDB\n\n   All of the stacks will use CloudFormation and S3 for deployment.\n\n   A temporary password will be sent to your email.\n\n   Note that the script will append config variables to `config/prod.yml` and `packages/cms/.env.production.local` (this file will be created automatically).\n\n   If all goes well, the script should output where you can find the CMS.\n\n   **Enjoy!!!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkdcio%2Fabu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkdcio%2Fabu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkdcio%2Fabu/lists"}