Skip to content

Conversation

@gildesmarais
Copy link
Member

@gildesmarais gildesmarais commented Sep 9, 2025

Explorative Work / In Progress

TODOs

  • easily usable auto source feature. show prominent form on root path.
    • enter url -> submit, stable url
    • provide advanced features (i.e. strategy selection)
    • gated behind env var / feature flag.
      • on by default to provide UX.
      • provide notes in readme, disable if "legacy env vars" are present
  • reduce roda to act as backend api

This pull request introduces a comprehensive modernization and restructuring of the development environment, build pipeline, and documentation to support a hybrid Ruby (Roda) backend and Astro frontend architecture. It adds full frontend tooling and CI integration, improves developer experience, and updates documentation and configuration to reflect the new stack.

Development & Build Environment Modernization:

  • Devcontainer & Docker Compose:

    • Added a custom .devcontainer/Dockerfile and docker-compose.yml to support local development with both Ruby and Node.js, replacing the previous image-based setup. The devcontainer now exposes both backend (3000) and frontend (4321) ports and uses a dedicated workspace folder. (.devcontainer/Dockerfile [1] .devcontainer/devcontainer.json [2] .devcontainer/docker-compose.yml [3]
    • Updated the main Dockerfile to use a multi-stage build: first building the Astro frontend, then the Ruby app, and finally copying the built frontend assets into the production image. Healthcheck and environment variables were updated for the new API structure. (Dockerfile [1] [2] [3]
  • Tooling & Configuration:

    • Added .tool-versions to specify Ruby 3.4.6 and Node.js 22.19.0 for consistent environment setup. (.tool-versions .tool-versionsR1-R2)
    • Updated .rubocop.yml for new RuboCop plugin syntax, excluded YAML and config files, and disabled documentation enforcement. (.rubocop.yml [1] [2] [3]
    • Added VSCode workspace recommendations and settings for Ruby, YAML, and frontend development. (.vscode/extensions.json [1] .vscode/settings.json [2]
    • Updated Gemfile to pin Ruby and html2rss versions and move some gems to development-only. (Gemfile GemfileL8-R32)
    • Added .yardopts for improved YARD documentation generation. (.yardopts .yardoptsR1-R10)
    • Removed .ruby-version in favor of .tool-versions. (.ruby-version .ruby-versionL1)

CI/CD Pipeline Overhaul:

  • Unified CI Workflow:
    • Replaced old workflows with a single .github/workflows/ci.yml that runs on push, PR, and manual dispatch, with concurrency control. It now includes:
      • Ruby linting, docs, and tests with coverage upload.
      • Frontend formatting, audit, and tests.
      • Docker build and smoke test, including frontend build as part of the image.
      • Docker image publishing only on push to master. (.github/workflows/ci.yml [1] [2] [3]
    • Removed the obsolete bundle update workflow. (.github/workflows/bundle-update.yml .github/workflows/bundle-update.ymlL1-L17)

Developer Experience & Documentation:

  • Makefile Enhancements:

    • Expanded Makefile with granular commands for setting up, running, linting, and testing both backend and frontend independently or together. (Makefile [1] [2]
  • Documentation Updates:

    • Updated .github/copilot-instructions.md to document the new Astro frontend, clarify project structure, and add links to core dependency docs. Added explicit "do" and "don't" rules for both backend and frontend development, and included verification steps for local development. (.github/copilot-instructions.md [1] [2]

Most Important Changes:

Development Environment & Tooling

  • Introduced a custom devcontainer setup with Docker Compose, supporting both Ruby and Node.js, and exposing ports for backend and frontend development. (.devcontainer/Dockerfile [1] .devcontainer/devcontainer.json [2] .devcontainer/docker-compose.yml [3]
  • Added .tool-versions to standardize Ruby and Node.js versions across environments. (.tool-versions .tool-versionsR1-R2)
  • Enhanced Makefile with commands for setup, running, linting, and testing of both backend and frontend. (Makefile [1] [2]

Build & CI/CD Pipeline

  • Overhauled Dockerfile for multi-stage builds, integrating frontend asset build and updated healthcheck. (Dockerfile [1] [2] [3]
  • Replaced legacy CI workflows with a unified workflow running Ruby and frontend checks, tests, and Docker image build/publish, with coverage and artifact upload. (.github/workflows/ci.yml [1] [2] [3]

Documentation & Coding Standards

  • Updated project documentation to reflect the new hybrid architecture, frontend stack, and development guidelines. (.github/copilot-instructions.md [1] [2]
  • Updated RuboCop configuration for new plugin syntax, file exclusions, and style preferences. (.rubocop.yml [1] [2] [3]
  • Added VSCode workspace recommendations and settings for improved DX. (.vscode/extensions.json [1] .vscode/settings.json [2]

@gildesmarais gildesmarais added the WIP work in progress label Sep 9, 2025
@gildesmarais gildesmarais moved this to In progress in Project Board Sep 18, 2025
@gildesmarais gildesmarais force-pushed the feat/revamp-frontend branch 2 times, most recently from 3cd0291 to 26085bf Compare September 27, 2025 14:50
Signed-off-by: Gil Desmarais <git@desmarais.de>
…ce, HealthCheck, HttpCache, LocalConfig, RackAttack, SecurityLogger, SsrfFilterStrategy, and XmlBuilder. These tests are no longer relevant to the current implementation.
- Simplified the auto source configuration in CONFIGURATION.md.
- Removed obsolete allowed origin checks from feeds.rb.
- Updated session storage usage in frontend tests and hooks.
- Enhanced error handling for unsupported strategies in API endpoints.
- Improved rate limiting responses in rack_attack.rb.
@gildesmarais gildesmarais changed the title feat: astro frontend feat!: astro frontend Jan 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WIP work in progress

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants