{"id":14957714,"url":"https://github.com/parameter1/base-cms","last_synced_at":"2025-10-24T12:31:01.329Z","repository":{"id":37080226,"uuid":"329031478","full_name":"parameter1/base-cms","owner":"parameter1","description":"BaseCMS monorepo","archived":true,"fork":false,"pushed_at":"2024-12-02T18:56:32.000Z","size":19627,"stargazers_count":1,"open_issues_count":18,"forks_count":9,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-01T00:11:16.104Z","etag":null,"topics":["apollographql","cms-framework","expressjs","graphql","hacktoberfest","markojs","nodejs","vuejs"],"latest_commit_sha":null,"homepage":"https://parameter1.com","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/parameter1.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":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-12T15:35:33.000Z","updated_at":"2024-12-09T15:53:57.000Z","dependencies_parsed_at":"2022-07-11T20:01:53.427Z","dependency_job_id":"92f44b7d-21e9-407e-a4ee-fe9301c60eae","html_url":"https://github.com/parameter1/base-cms","commit_stats":{"total_commits":9163,"total_committers":19,"mean_commits":482.2631578947368,"dds":0.5016915857251991,"last_synced_commit":"bd88903f8e9ff213b5ce05ae8a94a061b4e63bd1"},"previous_names":[],"tags_count":897,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parameter1%2Fbase-cms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parameter1%2Fbase-cms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parameter1%2Fbase-cms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parameter1%2Fbase-cms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parameter1","download_url":"https://codeload.github.com/parameter1/base-cms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237964495,"owners_count":19394410,"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":["apollographql","cms-framework","expressjs","graphql","hacktoberfest","markojs","nodejs","vuejs"],"created_at":"2024-09-24T13:15:23.064Z","updated_at":"2025-10-24T12:31:00.286Z","avatar_url":"https://github.com/parameter1.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BaseCMS\n[![Travis (.com) branch](https://img.shields.io/travis/com/parameter1/base-cms/master?label=TravisCI)](https://travis-ci.com/github/parameter1/base-cms)\n[![GitHub Workflow Status (CodeQL)](https://img.shields.io/github/workflow/status/parameter1/base-cms/CodeQL/master?label=CodeQL)](https://github.com/parameter1/base-cms/actions/workflows/codeql-analysis.yml)\n[![Github lerna version](https://img.shields.io/github/lerna-json/v/parameter1/base-cms)](./lerna.json)\n\n### Table of Contents\n- [Overview](#overview)\n  - [Requirements](#requirements)\n  - [Additional Resources](#additional-resources)\n- [Contributing](#contributing)\n  - [Style Guide](#style-guide)\n  - [Deployments](#deployments)\n- [Usage](#usage)\n  - [Running Services](#running-services)\n  - [Adding/Removing Dependencies](#addingremoving-dependencies)\n  - [Yarn](#yarn)\n  - [Terminal Access](#terminal-access)\n\n## Overview\nThis monorepo contains the services and packages to support the BaseCMS ecosystem.\n\n### Requirements\n\nThis repository uses [Docker Compose](https://docs.docker.com/compose/overview/) (minmum Docker version 18.06.0). The best way to get Docker is to install [Docker Desktop](https://www.docker.com/products/docker-desktop) -- [see this](https://github.com/parameter1/base-platform/wiki/Docker-\u0026-Kitematic) for a high level overview of using Docker and Compose for development.\n\nDocker Compose provides a homogenous build and development environment across all platforms, meaning code and dependencies run the same developing on Linux, MacOS, and Windows, and match the same environment used in production.\n\nAdditionally, we recommend the following tools/utilities:\n- [VSCode](https://code.visualstudio.com/) - a modular IDE\n- [Tower](https://www.git-tower.com) - a Git GUI client\n- [Robo 3T](https://robomongo.org) - a MongoDB GUI\n- [Insomnia](https://insomnia.rest) - a REST client\n- [GraphQL Playground](https://github.com/prisma/graphql-playground) - a GraphQL client\n\n### Additional Resources\n- [MarkoJS](https://markojs.com/docs/getting-started/) - Server-side templates are rendered using the Marko templating engine\n- [VueJS](https://vuejs.org) - Client-side component templating\n- [ExpressJS](https://expressjs.com) - The backend HTTP server handling routing for requests\n- [Lerna](https://github.com/lerna/lerna) - Used for versioning and managing of sub-packages within the repository\n- [Bootstrap v4](https://getbootstrap.com) - A subset of BSv4 is used for the styling within the Pennwell theme, and custom component development should use available mixins and variables -- See [Common components](#common-components)\n\n\n## Contributing\n- All contributions must be submitted as pull requests to this repository, and reviewed by a repository owner before being merged.\n- All status checks must pass, and all commits must have an approving review.\n- All package versioning must be done via the [@lerna/lerna](https://github.com/lerna/lerna) script included at `./scripts/lerna.sh`.\n\n### Style Guide\n- Marko\n  - All Marko templating should be done using the standard syntax (`\u003ch1\u003eHello World\u003c/h1\u003e`) instead of concise (`h1 -- Hello World`) syntax.\n  - All arguments should be dasherized and use double quotes `\u003ccomponent argument-name=\"argument-value\" /\u003e`\n  - Components without an explicit inner body should be self closing (`\u003ccomponent /\u003e` instead of `\u003ccomponent\u003e ... \u003c/component\u003e`)\n  - Components _should_ be defined as reusable components (under `packages/global`), if re-used.\n    - Certain components or templates cannot be reused due to needing custom ad or content definitions from outside of their scope (for example, the website-section site template vs the website-section pennwell theme layout).\n- VueJS\n  - Vue components should use the concise syntax available for binding properties and methods:\n    - Use `\u003cdiv :value=\"prop\" /\u003e` instead of `\u003cdiv v-bind:value=\"prop\" /\u003e`.\n    - Use `\u003cdiv @click=\"handler\" /\u003e` instead of `\u003cdiv v-on:click=\"handler\" /\u003e`.\n  - Direct jQuery access should be avoided if at all possible. Explore alternative solutions using Vue architecture or vanilla Javascript before bringing in jQuery to implement a feature -- especially true of any jQuery plugins.\n- Express\n  - Middleware should be used in favor of individual route definitions\n- General Javascript\n  - All JS filenames should be dasherized\n  - All project linting rules should be followed (see ESLint at project root).\n  - While all ES6 code will be transpiled for the browser accessing it at run-time, beware of any potential deprecations that are not included in the transpilation.\n    - Utilize [CanIUse](https://caniuse.com) to check targeted browser support for native JS and CSS methods.\n    - If an additional polyfill is required, make sure the [loader](https://github.com/parameter1/base-cms/blob/master/packages/marko-web/src/components/document/index.marko#L11) is updated to reflect this.\n- General\n  - All files should have a new line at the end [VSCode](https://stackoverflow.com/a/44704969/2195565)\n  - Ensure trailing whitespace is trimmed from each line [VSCode](https://stackoverflow.com/a/30884298/2195565)\n  - All files should be indented with two spaces [VSCode](https://stackoverflow.com/a/38556923/2195565)\n  - All files and folders should use dasherized names (`my-package` rather than `myPackage` or `MyPackage`.)\n\n### Deployments\n- Deployments to production infrastructure are performed via [Travis CI](https://travis-ci.org/parameter1/base-cms/builds), and occur only when a release is tagged.\n- Each site is versioned independently, and the build process results in an individual docker container, hosted on [Docker Hub](https://hub.docker.com/u/parameter1).\n  - If there are no changes in a site, a version will not be published, nor will the site be deployed\n- The deployment configuration is located in [.travis.yml](.travis.yml), and specifies the site directory and [infrastructure stack](https://rancher.parameter1.com/c/c-njflm/projects-namespaces).\n- This deployment script utilizes the site package.json version (provided by lerna on tag) and the DockerHub API to determine if a build should happen.\n- If a build is triggered, the deployment script deploys the new Docker image to the production infrastructure using the [@endeavorb2b/rancher2cli](https://github.com/base-cms/rancher2cli) CLI.\n\n----\n\n## Usage\n\n1. Clone the repository\n2. From the project root run `scripts/install.sh` to install dependencies\n\n### Running Services\nFrom the project root, run `scripts/run.sh [SERVICE_NAME]`. For example, to run the dev environment for `graphql-server` run `scripts/run.sh graphql-server`\n\nAvailable services include:\n- `graphql-server`\n- `example-website`\n- `keyword-analysis`\n\nTo bring down all services (and service deps) run `scripts/down.sh`.\n\n### Adding/Removing Dependencies\nThis repository uses Yarn workspaces for managing packages and services.\n- To add dependencies to a workspace run `scripts/workspace.sh [WORKSPACE_NAME] add [package]`\n- To remove dependencies from a workspace run `scripts/workspace.sh [WORKSPACE_NAME] remove [package]`\n\nThe `WORKSPACE_NAME` is equivalent to the `name` field found in the `package.json` file of the package or service. For example, to add a package to the `graphql-server` service, run `scripts/workspace.sh @parameter1/base-cms-graphql-server add [package]`\n\n### Yarn\nDo _NOT_ run Yarn from your local machine. Instead run Yarn commands using `scripts/yarn.sh [command]`\n\n\n### Terminal Access\nTo access the terminal inside Docker run `scripts/terminal.sh`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparameter1%2Fbase-cms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparameter1%2Fbase-cms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparameter1%2Fbase-cms/lists"}