diff --git a/.claude/rules/frontend/apps.md b/.claude/rules/frontend/apps.md index 67398ed846c..0f3a6bd6511 100644 --- a/.claude/rules/frontend/apps.md +++ b/.claude/rules/frontend/apps.md @@ -1,7 +1,6 @@ --- paths: - 'apps/arclight/src/**/*.{ts,tsx}' - - 'apps/cms/src/**/*.{ts,tsx}' - 'apps/docs/src/**/*.{ts,tsx}' - 'apps/journeys/src/**/*.{ts,tsx}' - 'apps/journeys-admin/src/**/*.{ts,tsx}' diff --git a/.devcontainer/post-create-command.sh b/.devcontainer/post-create-command.sh index 10a94eeaee8..9d4405099ae 100755 --- a/.devcontainer/post-create-command.sh +++ b/.devcontainer/post-create-command.sh @@ -44,10 +44,6 @@ if ! psql -h db -U postgres -d plausible_db < .devcontainer/plausible.sql; then fi echo "Post-create setup completed!" -echo "Setting up CMS database..." -psql -U postgres -h db -tc "SELECT 1 FROM pg_database WHERE datname = 'cms'" | grep -q 1 \ - || psql -U postgres -h db -c "CREATE DATABASE cms;" - echo "Installing Argo CD..." curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd diff --git a/.github/workflows/ai-build-spike.yml b/.github/workflows/ai-build-spike.yml index 7981783beb1..dece35d78ed 100644 --- a/.github/workflows/ai-build-spike.yml +++ b/.github/workflows/ai-build-spike.yml @@ -99,7 +99,7 @@ jobs: 1. DOMAIN: The spec must describe changes to journeys-admin (also known as next-steps-admin) and its related APIs (api-journeys, api-journeys-modern) or libraries (journeys-ui, shared-ui). - Reject specs targeting other domains such as: watch, player, arclight, docs, cms, videos-admin, + Reject specs targeting other domains such as: watch, player, arclight, docs, videos-admin, resources, short-links, CI/CD, infrastructure, or unrelated libraries. 2. FORMAT: The spec must follow a user story structure: diff --git a/.github/workflows/ecs-frontend-deploy-prod-worker.yml b/.github/workflows/ecs-frontend-deploy-prod-worker.yml index 63769265d2a..8cf5137d3f6 100644 --- a/.github/workflows/ecs-frontend-deploy-prod-worker.yml +++ b/.github/workflows/ecs-frontend-deploy-prod-worker.yml @@ -32,8 +32,6 @@ on: required: true DOPPLER_ARCLIGHT_TOKEN: required: true - DOPPLER_CMS_TOKEN: - required: true DOPPLER_DOCS_TOKEN: required: true DOPPLER_JOURNEYS_TOKEN: @@ -101,7 +99,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} diff --git a/.github/workflows/ecs-frontend-deploy-prod.yml b/.github/workflows/ecs-frontend-deploy-prod.yml index 13fd01fcc4b..fd1f8be5c9b 100644 --- a/.github/workflows/ecs-frontend-deploy-prod.yml +++ b/.github/workflows/ecs-frontend-deploy-prod.yml @@ -49,7 +49,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} @@ -78,36 +77,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} - DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} - DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} - DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} - DOPPLER_PLAYER_TOKEN: ${{ secrets.DOPPLER_PLAYER_TOKEN }} - DOPPLER_WATCH_TOKEN: ${{ secrets.DOPPLER_WATCH_TOKEN }} - DOPPLER_WATCH_MODERN_TOKEN: ${{ secrets.DOPPLER_WATCH_MODERN_TOKEN }} - DOPPLER_WATCH_ADMIN_TOKEN: ${{ secrets.DOPPLER_WATCH_ADMIN_TOKEN }} - DOPPLER_GITHUB_SERVICE_TOKEN: ${{ secrets.DOPPLER_GITHUB_SERVICE_TOKEN }} - DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }} - cms: - needs: [affected] - if: contains(needs.affected.outputs.matrix, 'cms') - uses: JesusFilm/core/.github/workflows/ecs-frontend-deploy-prod-worker.yml@main - with: - name: cms - env: prod - branch: ${{ github.ref_name }} - secrets: - AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - JFP_AWS_ACCESS_KEY_ID: ${{ secrets.JFP_AWS_ACCESS_KEY_ID }} - JFP_AWS_SECRET_ACCESS_KEY: ${{ secrets.JFP_AWS_SECRET_ACCESS_KEY }} - DOPPLER_API_ANALYTICS_TOKEN: ${{ secrets.DOPPLER_API_ANALYTICS_TOKEN }} - DOPPLER_API_GATEWAY_TOKEN: ${{ secrets.DOPPLER_API_GATEWAY_TOKEN }} - DOPPLER_API_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_API_JOURNEYS_TOKEN }} - DOPPLER_API_LANGUAGES_TOKEN: ${{ secrets.DOPPLER_API_LANGUAGES_TOKEN }} - DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} - DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} - DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} diff --git a/.github/workflows/ecs-frontend-deploy-stage-worker.yml b/.github/workflows/ecs-frontend-deploy-stage-worker.yml index e65073abb82..b6279b8fe14 100644 --- a/.github/workflows/ecs-frontend-deploy-stage-worker.yml +++ b/.github/workflows/ecs-frontend-deploy-stage-worker.yml @@ -32,8 +32,6 @@ on: required: true DOPPLER_ARCLIGHT_TOKEN: required: true - DOPPLER_CMS_TOKEN: - required: true DOPPLER_DOCS_TOKEN: required: true DOPPLER_JOURNEYS_TOKEN: @@ -101,7 +99,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} diff --git a/.github/workflows/ecs-frontend-deploy-stage.yml b/.github/workflows/ecs-frontend-deploy-stage.yml index dbe40fe60f4..4c2c5308bf8 100644 --- a/.github/workflows/ecs-frontend-deploy-stage.yml +++ b/.github/workflows/ecs-frontend-deploy-stage.yml @@ -49,7 +49,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} @@ -116,36 +115,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} - DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} - DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} - DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} - DOPPLER_PLAYER_TOKEN: ${{ secrets.DOPPLER_PLAYER_TOKEN }} - DOPPLER_WATCH_TOKEN: ${{ secrets.DOPPLER_WATCH_TOKEN }} - DOPPLER_WATCH_MODERN_TOKEN: ${{ secrets.DOPPLER_WATCH_MODERN_TOKEN }} - DOPPLER_WATCH_ADMIN_TOKEN: ${{ secrets.DOPPLER_WATCH_ADMIN_TOKEN }} - DOPPLER_GITHUB_SERVICE_TOKEN: ${{ secrets.DOPPLER_GITHUB_SERVICE_TOKEN }} - DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }} - cms: - needs: [affected] - if: contains(needs.affected.outputs.matrix, 'cms') - uses: JesusFilm/core/.github/workflows/ecs-frontend-deploy-stage-worker.yml@stage - with: - name: cms - env: stage - branch: ${{ github.ref_name }} - secrets: - AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} - JFP_AWS_ACCESS_KEY_ID: ${{ secrets.JFP_AWS_ACCESS_KEY_ID }} - JFP_AWS_SECRET_ACCESS_KEY: ${{ secrets.JFP_AWS_SECRET_ACCESS_KEY }} - DOPPLER_API_ANALYTICS_TOKEN: ${{ secrets.DOPPLER_API_ANALYTICS_TOKEN }} - DOPPLER_API_GATEWAY_TOKEN: ${{ secrets.DOPPLER_API_GATEWAY_TOKEN }} - DOPPLER_API_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_API_JOURNEYS_TOKEN }} - DOPPLER_API_LANGUAGES_TOKEN: ${{ secrets.DOPPLER_API_LANGUAGES_TOKEN }} - DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} - DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} - DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 773a04b243b..7dd56fab27a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -53,7 +53,6 @@ jobs: DOPPLER_API_USERS_TOKEN: ${{ secrets.DOPPLER_API_USERS_TOKEN }} DOPPLER_API_MEDIA_TOKEN: ${{ secrets.DOPPLER_API_MEDIA_TOKEN }} DOPPLER_ARCLIGHT_TOKEN: ${{ secrets.DOPPLER_ARCLIGHT_TOKEN }} - DOPPLER_CMS_TOKEN: ${{ secrets.DOPPLER_CMS_TOKEN }} DOPPLER_DOCS_TOKEN: ${{ secrets.DOPPLER_DOCS_TOKEN }} DOPPLER_JOURNEYS_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_TOKEN }} DOPPLER_JOURNEYS_ADMIN_TOKEN: ${{ secrets.DOPPLER_JOURNEYS_ADMIN_TOKEN }} diff --git a/.gitignore b/.gitignore index 267c004c5cf..394187f8e6b 100644 --- a/.gitignore +++ b/.gitignore @@ -99,7 +99,3 @@ terraform.tfstate.backup # node sea sea-prep.blob - -# Strapi CMS compiled config files -apis/cms/config/*.js -apis/cms/config/*.js.map diff --git a/apis/api-journeys/src/__generated__/graphql.ts b/apis/api-journeys/src/__generated__/graphql.ts index e0385f5df7f..ac3a34b5095 100644 --- a/apis/api-journeys/src/__generated__/graphql.ts +++ b/apis/api-journeys/src/__generated__/graphql.ts @@ -88,6 +88,7 @@ export type BibleBook = { order: Scalars['Int']['output']; osisId: Scalars['String']['output']; paratextAbbreviation: Scalars['String']['output']; + updatedAt: Scalars['DateTime']['output']; }; @@ -103,6 +104,10 @@ export type BibleBookName = { value: Scalars['String']['output']; }; +export type BibleBooksFilter = { + updatedAt?: InputMaybe; +}; + export type BibleCitation = { __typename?: 'BibleCitation'; bibleBook: BibleBook; @@ -569,6 +574,10 @@ export type ContinentName = { value: Scalars['String']['output']; }; +export type CountriesFilter = { + updatedAt?: InputMaybe; +}; + export type Country = { __typename?: 'Country'; continent: Continent; @@ -583,6 +592,7 @@ export type Country = { longitude?: Maybe; name: Array; population?: Maybe; + updatedAt: Scalars['DateTime']['output']; }; @@ -678,6 +688,11 @@ export type CustomDomainVerificationResponse = { message: Scalars['String']['output']; }; +export type DateTimeFilter = { + gte?: InputMaybe; + lte?: InputMaybe; +}; + export enum DefaultPlatform { Android = 'android', Ios = 'ios', @@ -1603,9 +1618,14 @@ export type Keyword = { __typename?: 'Keyword'; id: Scalars['ID']['output']; language: Language; + updatedAt: Scalars['DateTime']['output']; value: Scalars['String']['output']; }; +export type KeywordsFilter = { + updatedAt?: InputMaybe; +}; + export type LabeledVideoCounts = { __typename?: 'LabeledVideoCounts'; featureFilmCount: Scalars['Int']['output']; @@ -1623,6 +1643,7 @@ export type Language = { labeledVideoCounts: LabeledVideoCounts; name: Array; slug?: Maybe; + updatedAt: Scalars['DateTime']['output']; }; @@ -1657,6 +1678,7 @@ export type LanguagesFilter = { bcp47?: InputMaybe>; ids?: InputMaybe>; iso3?: InputMaybe>; + updatedAt?: InputMaybe; }; export type LinkAction = Action & { @@ -3881,6 +3903,11 @@ export type QueryArclightApiKeyByKeyArgs = { }; +export type QueryBibleBooksArgs = { + where?: InputMaybe; +}; + + export type QueryBibleCitationArgs = { id: Scalars['ID']['input']; }; @@ -3914,6 +3941,7 @@ export type QueryCheckVideoVariantsInAlgoliaArgs = { export type QueryCountriesArgs = { ids?: InputMaybe>; term?: InputMaybe; + where?: InputMaybe; }; @@ -4088,6 +4116,11 @@ export type QueryJourneysPlausibleStatsTimeseriesArgs = { }; +export type QueryKeywordsArgs = { + where?: InputMaybe; +}; + + export type QueryLanguageArgs = { id: Scalars['ID']['input']; idType?: InputMaybe; @@ -5292,6 +5325,7 @@ export type Video = { studyQuestions: Array; subtitles: Array; title: Array; + updatedAt: Scalars['DateTime']['output']; /** @deprecated Use variants instead */ variant?: Maybe; variantLanguages: Array; @@ -5626,6 +5660,7 @@ export type VideoEdition = { __typename?: 'VideoEdition'; id: Scalars['ID']['output']; name?: Maybe; + updatedAt: Scalars['DateTime']['output']; videoSubtitles: Array; videoVariants: Array; }; @@ -6010,6 +6045,7 @@ export type VideoVariant = { slug: Scalars['String']['output']; subtitle: Array; subtitleCount: Scalars['Int']['output']; + updatedAt: Scalars['DateTime']['output']; /** version control for master video file */ version: Scalars['Int']['output']; video?: Maybe