Skip to content

feat: add tinyfeed to the tools list #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

TheBigRoomXXL
Copy link

@TheBigRoomXXL TheBigRoomXXL commented Apr 2, 2025

DCM Logo

Docker Compose Maker

Type of Change

  • πŸ“¦ New Container Definition
  • πŸ› Bug Fix
  • ✨ New Feature
  • πŸ“ Documentation Update
  • 🎨 UI/Style Improvement
  • ♻️ Code Refactoring
  • πŸ”§ Configuration Changes
  • πŸš€ Performance Improvement
  • βš™οΈ CI/Build Changes
  • πŸ”₯ Breaking Change
  • πŸ§ͺ Test

Description

I added my project, TinyFeed , to the list of available tools. I placed it under FreshRSS since they are both feed readers.

One thing I’m unsure about: TinyFeed only generates an index.html file, so it requires a web server. Should I include a web server in my Docker Compose service? I assume not, since duplicating that kind of setup is usually avoided. But if I should, how should I document the necessary configuration for a server like Caddy?

More generally, I feel like a field for instructions about external dependencies, like configuration setup, would be useful.

Checklist

Thank you for your contribution. Please ensure that your pull request meets the following requirements:

  • PR targets the main branch
  • Code builds without warnings or errors (npm run build or yarn build or pnpm build)
  • Commits follow the conventional commits guideline
  • No shorthand variable names are used (e.g., x, y, i or any abbreviation outside common conventions)
  • Tests have been added for new functionality (if applicable)

For container definitions:

  • Container image is actively maintained
  • Docker Compose definition uses provided environment variables (e.g., ${PUID}, ${CONFIG_PATH})
  • Docker Compose definition has been tested
  • Container has been added to the appropriate category file and indexed in tools/index.ts

This PR is in accordance with the CONTRIBUTING.md guidelines.

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features
    • Introduced TinyFeed, a new productivity tool that aggregates RSS feeds and presents them in a static webpage styled like Hacker News.

Copy link

coderabbitai bot commented Apr 2, 2025

Walkthrough

This update adds a new Docker tool entry called TinyFeed to the collection in tools/other.ts. The entry defines metadata such as ID, name, description, category, tags, GitHub URL, and icon. It also includes a Docker Compose configuration under composeContent to run TinyFeed, which generates a static HTML page resembling Hacker News from a collection of RSS feeds.

Changes

File Change Summary
tools/other.ts Added a new TinyFeed entry with properties for name, description, category, tags, GitHub URL, icon, and a Docker Compose configuration (image, container name, command, volumes, restart policy).

Sequence Diagram(s)

sequenceDiagram
    participant U as User
    participant D as Docker Engine
    participant T as TinyFeed Container
    participant FS as File System

    U->>D: Run "docker-compose up"
    D->>T: Start the TinyFeed container using provided configuration
    T->>FS: Read feeds configuration from /app/config/feeds.txt
    T->>FS: Generate static HTML at /app/data/index.html
    T-->>D: Remain active in daemon mode for continuous operation
Loading

Poem

Hi, I'm a rabbit, hopping all around,
TinyFeed joins our code, bringing news profound.
With Docker and feeds, it spins magic on the fly,
Creating HTML pages as the moments pass by.
Carrots and codeβ€”what a delightful sight,
Hopping with joy at this new tool's light!

✨ Finishing Touches
  • πŸ“ Generate Docstrings

πŸͺ§ Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
tools/other.ts (3)

322-322: Fix typo in description

There's a small typo in the description: "syle" should be "style".

-      "Generate a static HTML page in the syle of Hacker News from a collection of feeds",
+      "Generate a static HTML page in the style of Hacker News from a collection of feeds",

327-327: Consider using a CDN-hosted icon for better performance

Most other tool entries in this file use cdn.jsdelivr.net for hosting icons, which can provide better performance than directly referencing GitHub. Consider moving the icon to a CDN or using GitHub's raw content CDN.

-    icon: "https://github.com/TheBigRoomXXL/tinyfeed/blob/main/.images/icon.png?raw=true",
+    icon: "https://cdn.jsdelivr.net/gh/TheBigRoomXXL/tinyfeed/main/.images/icon.png",

327-335: Add documentation about web server requirement

Since TinyFeed only generates a static HTML file but doesn't serve it, users will need to configure a separate web server. While there's a helpful comment on line 334, it would be valuable to make this requirement more explicit in the documentation or consider integrating a lightweight web server option.

Would you like me to provide an example of how to integrate a lightweight web server like Caddy or Nginx to serve the generated HTML file?

πŸ“œ Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between b7e51cc and a0b48a3.

πŸ“’ Files selected for processing (1)
  • tools/other.ts (1 hunks)
πŸ”‡ Additional comments (1)
tools/other.ts (1)

318-336: Overall implementation looks good

The TinyFeed tool entry correctly follows the established pattern of other tools in the array. The Docker Compose configuration properly uses environment variables and provides appropriate volume mounts for configuration and data.

@TheBigRoomXXL TheBigRoomXXL force-pushed the feat/add-tinyfeed-to-tools branch from a0b48a3 to 33d013e Compare April 2, 2025 14:32
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
tools/other.ts (2)

318-336: Configuration looks good, but needs clarification on web server requirements.

The implementation of TinyFeed as a Docker tool is well-structured and follows the same pattern as other tools in the file. The Docker Compose definition correctly maps volumes for configuration and data.

However, based on the PR objectives, there's uncertainty about whether a web server should be included. Since TinyFeed only generates a static HTML file, users will need to serve this file with an external web server.

Consider adding a comment at the top of the composeContent to clarify that users need to configure their own web server to serve the generated HTML file. For example:

    composeContent: `services:
+  # Note: TinyFeed only generates a static HTML file. You'll need to configure a separate
+  # web server (like Nginx, Apache, or Caddy) to serve the content from DATA_PATH/tinyfeed/
  tinyfeed:
    image: thebigroomxxl/tinyfeed:latest
    container_name: \${CONTAINER_PREFIX}tinyfeed
    command: --daemon -i /app/config/feeds.txt -o /app/data/index.html
    volumes:
      - \${CONFIG_PATH}/tinyfeed/:/app/config/ # Add your feeds.txt here
      - \${DATA_PATH}/tinyfeed/:/app/data/     # Point your webserver to this folder
    restart: \${RESTART_POLICY}`,

326-326: Use a CDN-based icon for consistency.

Most icons in this file use CDN-hosted SVGs from jsdelivr/homarr-labs/dashboard-icons. The current direct GitHub raw URL might be less reliable long-term.

Consider hosting the icon on a CDN or using an existing icon that closely matches TinyFeed's purpose:

-    icon: "https://github.com/TheBigRoomXXL/tinyfeed/blob/main/.images/icon.png?raw=true",
+    icon: "https://cdn.jsdelivr.net/gh/TheBigRoomXXL/tinyfeed/blob/main/.images/icon.png?raw=true",

Alternatively, if there's an appropriate icon in the homarr-labs dashboard-icons collection, it would align with the project's convention.

πŸ“œ Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between a0b48a3 and 33d013e.

πŸ“’ Files selected for processing (1)
  • tools/other.ts (1 hunks)
πŸ”‡ Additional comments (2)
tools/other.ts (2)

324-324: Ensure the category assignment is appropriate.

TinyFeed is categorized as "Productivity" with tags ["RSS", "News", "Reading"], matching FreshRSS (line 296-301). This seems appropriate since they're both feed readers, though TinyFeed generates static HTML while FreshRSS is interactive.


319-319:

❓ Verification inconclusive

Validate the TinyFeed Docker image availability.


🏁 Script executed:

#!/bin/bash
# Check if the Docker image exists and when it was last updated
docker pull thebigroomxxl/tinyfeed:latest 2>&1 || echo "Image not found"
docker inspect thebigroomxxl/tinyfeed:latest --format '{{.Created}}' 2>/dev/null || echo "Cannot inspect image"

Length of output: 303


Action: Verify TinyFeed Docker Image Availability in a Proper Docker Environment

The automated check could not validate the image because Docker isn’t available in the current environment (indicated by the β€œdocker: command not found” message). Please ensure that Docker is installed and run the validation script in an environment where Docker is accessible. Then, confirm that the image thebigroomxxl/tinyfeed:latest exists and is up-to-date.

  • Verify locally or in your CI/CD pipeline that Docker commands (such as docker pull and docker inspect) work correctly.
  • If the image is unavailable or outdated, update the Docker image reference as needed.

Comment on lines +331 to +335
command: --daemon -i /app/config/feeds.txt -o /app/data/index.html
volumes:
- \${CONFIG_PATH}/tinyfeed/:/app/config/ # Add your feeds.txt here
- \${DATA_PATH}/tinyfeed/:/app/data/ # Point your webserver to this folder
restart: \${RESTART_POLICY}`,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ› οΈ Refactor suggestion

Documentation for users is needed for proper setup.

The Docker Compose definition correctly configures the container, but users will need guidance on creating the required feeds.txt file and setting up a web server to access the generated HTML.

Add explicit documentation about the setup requirements in a README file or enhance the existing comments to guide users more clearly:

    volumes:
-      - \${CONFIG_PATH}/tinyfeed/:/app/config/ # Add your feeds.txt here
-      - \${DATA_PATH}/tinyfeed/:/app/data/     # Point your webserver to this folder
+      - \${CONFIG_PATH}/tinyfeed/:/app/config/ # Create a feeds.txt file here with one feed URL per line
+      - \${DATA_PATH}/tinyfeed/:/app/data/     # The generated index.html will be here - serve with Nginx/Apache/etc.
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
command: --daemon -i /app/config/feeds.txt -o /app/data/index.html
volumes:
- \${CONFIG_PATH}/tinyfeed/:/app/config/ # Add your feeds.txt here
- \${DATA_PATH}/tinyfeed/:/app/data/ # Point your webserver to this folder
restart: \${RESTART_POLICY}`,
command: --daemon -i /app/config/feeds.txt -o /app/data/index.html
volumes:
- ${CONFIG_PATH}/tinyfeed/:/app/config/ # Create a feeds.txt file here with one feed URL per line
- ${DATA_PATH}/tinyfeed/:/app/data/ # The generated index.html will be here - serve with Nginx/Apache/etc.
restart: ${RESTART_POLICY}`,

@ajnart
Copy link
Owner

ajnart commented Apr 2, 2025

Looks good to me, thank you @TheBigRoomXXL ! You could also add it to some templates if you feel that it could fit there

@TheBigRoomXXL
Copy link
Author

@ajnart I did not find any template where it could fit nicely. I think were goo to go.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants