diff --git a/.github/ISSUE TEMPLATES/bug_report.yml b/.github/ISSUE TEMPLATES/bug_report.yml new file mode 100644 index 0000000..952b293 --- /dev/null +++ b/.github/ISSUE TEMPLATES/bug_report.yml @@ -0,0 +1,58 @@ +name: "Bug Report" +description: "Report a bug to help us improve DevSetup" +title: "[BUG] " +labels: ["bug", "needs-triage"] +assignees: [] +body: + - type: markdown + attributes: + value: | + ## Thanks for reporting a bug! + Please provide enough detail to help us reproduce and fix the issue quickly. + + - type: textarea + id: bug-description + attributes: + label: "Bug Description" + description: "Describe the bug clearly and concisely." + placeholder: | + What is the incorrect behavior and what should happen instead? + validations: + required: true + + - type: textarea + id: reproduction-steps + attributes: + label: "Steps to Reproduce" + description: "Provide step-by-step instructions to reproduce the bug." + placeholder: | + 1. Go to '...' + 2. Click '...' + 3. Observe '...' + validations: + required: true + + - type: dropdown + id: severity + attributes: + label: "Severity" + description: "How severe is this bug?" + options: + - "Low - Minor issue, workaround available" + - "Medium - Affects functionality but not critical" + - "High - Major functionality broken" + - "Critical - Application unusable or data loss" + validations: + required: true + + - type: textarea + id: environment + attributes: + label: "Environment" + description: "Provide key environment details (OS, browser, project version)." + placeholder: | + β€’ OS: + β€’ Browser: + β€’ DevSetup Version: + validations: + required: true diff --git a/.github/ISSUE TEMPLATES/config.yml b/.github/ISSUE TEMPLATES/config.yml new file mode 100644 index 0000000..e7dab7f --- /dev/null +++ b/.github/ISSUE TEMPLATES/config.yml @@ -0,0 +1,31 @@ +# GitHub Issue Templates Configuration for DevSetup + +# Allow blank issues +blank_issues_enabled: true + +# Default guidance for blank issues +blank_issue_title: "Please provide a descriptive title for your issue" +blank_issue_body: | + + + ## Description + + + ## Context / Environment + + + ## Additional Information + + +# Helpful links for contributors +contact_links: + - name: πŸ“ƒ Documentation Issues + url: https://github.com/CodeCompass/DevSetup/issues/new?labels=documentation + about: For documentation-related issues, please use this link. + + - name: πŸ€” Questions & Help + url: https://github.com/CodeCompass/DevSetup/discussions + about: For questions or help, please use discussions instead of opening an issue. \ No newline at end of file diff --git a/.github/ISSUE TEMPLATES/feature_request.yml b/.github/ISSUE TEMPLATES/feature_request.yml new file mode 100644 index 0000000..8539914 --- /dev/null +++ b/.github/ISSUE TEMPLATES/feature_request.yml @@ -0,0 +1,46 @@ +name: "Feature Request" +description: "Suggest an idea or enhancement for this project" +title: "[FEATURE] " +labels: ["enhancement", "needs-triage"] +assignees: [] +body: + - type: markdown + attributes: + value: | + ## Thanks for your feature suggestion! + Please provide enough detail to help us understand your idea and its impact. + + - type: textarea + id: feature-description + attributes: + label: "Feature Description" + description: "What is the feature or improvement?" + placeholder: | + Describe the feature clearly. What should it do? What problem does it solve? + + - type: textarea + id: motivation + attributes: + label: "Motivation / Rationale" + description: "Why is this feature important?" + placeholder: | + Explain why this feature matters and how it benefits users or improves the project. + + - type: dropdown + id: priority + attributes: + label: "Priority Level" + description: "How important is this feature?" + options: + - "Low - Nice to have" + - "Medium - Would improve workflow" + - "High - Significant impact" + - "Critical - Blocking important use cases" + + - type: textarea + id: demo + attributes: + label: "Demo / Mockup (Optional)" + description: "Add screenshots, mockups, or links to prototypes if available" + placeholder: | + Paste images, GIFs, or links here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6a6693c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,30 @@ +## Related Issue(s) + +Closes #ISSUE_NUMBER + +## What kind of change does this PR introduce? + +- [ ] Bugfix +- [ ] Feature +- [ ] Documentation + +## Why this change? + +Briefly describe the motivation and what problem this solves + +## Demo / Preview + +- **Live Demo:** [Insert link here] +- **Screenshots / GIFs:** + ![Before] β†’ ![After] + +## Checklist + +- [ ] Code follows project style guidelines +- [ ] Tests added / updated as needed +- [ ] Documentation updated accordingly (README, CONTRIBUTING, etc.) +- [ ] No sensitive data or credentials included +- [ ] Verified for performance or security impact (if applicable) + + +## Additional Info (Optional) \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..abeac93 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,102 @@ +# Contributor Covenant Code of Conduct + +![Welcome Badge](https://img.shields.io/badge/Welcome-Contributors-blue?style=for-the-badge) +![Respect Badge](https://img.shields.io/badge/Respect-Always-green?style=for-the-badge) +![No Harassment](https://img.shields.io/badge/No%20Harassment-🚫-red?style=for-the-badge) +![Inclusivity Badge](https://img.shields.io/badge/🌍-Inclusivity-purple?style=for-the-badge) + +--- + +## Our Pledge + +We, as **members, contributors, and leaders**, pledge to make participation in our community a harassment-free experience for everyone, regardless of: +Age, Body Size, Disability, Gender Identity/Expression, Nationality, Education, Sexual Orientation. +We pledge to act in ways that **promote openness, respect, diversity, inclusivity, and community health.** + +--- + +## Our Standards + +### Positive Behaviorsβœ… +- Show empathy and kindness toward others +- Respect differing opinions and experiences +- Accept feedback gracefully and constructively +- Own mistakes, apologize, and learn +- Focus on community well-being, not just individual needs + +--- + +### Unacceptable Behaviors🚫 +- Sexualized language, imagery, or advances +- Trolling, insults, personal or political attacks +- Harassment (public or private) +- Publishing private information without consent +- Any behavior considered inappropriate in a professional setting + +--- + +## Enforcement Responsibilities + +**Community leaders** are responsible for: +- Clarifying acceptable behavior +- Taking fair action against misconduct +- Removing/rejecting harmful content +- Communicating reasons for moderation decisions transparently + +--- + +## Scope + + This Code applies **everywhere**: +- In community spaces +- When representing the community (emails, social media, events) +- Both online and offline interactions + +--- + +## Enforcement + +If you experience or witness misconduct: +**Contact us:** [codecompass2024@gmail.com](mailto:codecompass2024@gmail.com) + +All complaints will be handled promptly, fairly, and privately. We respect the privacy and security of all reporters. + +--- + +## Enforcement Guidelines + +### 1. Correction +**Impact:** Inappropriate language or minor misconduct. +**Consequence:** Private warning + explanation. Public apology may be requested. + +--- + +### 2. Warning +**Impact:** Violation through one or more actions. +**Consequence:** Formal warning. Limited interaction for a period of time. + +--- + +### 3. Temporary Ban +**Impact:** Serious violation or repeated behavior. +**Consequence:** Temporary ban from interactions and community spaces. + +--- + +### 4. Permanent Ban +**Impact:** Sustained violations or severe harassment. +**Consequence:** Permanent ban from community participation. + +--- + +## Attribution + +This Code of Conduct is adapted from the +[**Contributor Covenant**](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html) v2.0. + +Community Impact Guidelines inspired by [Mozilla's Code of Conduct Enforcement Ladder](https://github.com/mozilla/diversity). + +🌐 [FAQ](https://www.contributor-covenant.org/faq) | [Translations](https://www.contributor-covenant.org/translations) + +--- +*Thank you for helping us create a safe and inclusive community!* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6c6c3ea..6d2a903 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,141 +1,276 @@ -# Contributing to DevSetup +# Contributing to RSS CSE Setup -Thank you for considering contributing to the **DevSetup** project! We're excited to have you help make this tool even more useful. Below are instructions for contributing, including adding new tools to the system. +Thank you for considering contributing to the **RSS CSE Setup** project! We're excited to have you help expand our curated collection of Computer Science and Engineering RSS feeds. This guide will walk you through the entire contribution process. ## Table of Contents -- [Contributing to DevSetup](#contributing-to-devsetup) +- [Contributing to RSS CSE Setup](#contributing-to-rss-cse-setup) - [Table of Contents](#table-of-contents) - - [How to Add New Tools](#how-to-add-new-tools) - - [Step 1: Add Tools to the Excel File](#step-1-add-tools-to-the-excel-file) - - [Step 2: Convert Excel to JSON](#step-2-convert-excel-to-json) - - [Step 3: Test the Updates](#step-3-test-the-updates) - - [How to Contribute](#how-to-contribute) - - [Branch Information](#branch-information) + - [Quick Start for Contributors](#quick-start-for-contributors) + - [How to Add New RSS Feeds](#how-to-add-new-rss-feeds) + - [Step 1: Prepare Your Feed Information](#step-1-prepare-your-feed-information) + - [Step 2: Edit the Excel File](#step-2-edit-the-excel-file) + - [Step 3: Convert Excel to JSON](#step-3-convert-excel-to-json) + - [Step 4: Test Your Changes](#step-4-test-your-changes) + - [Step 5: Submit Your Contribution](#step-5-submit-your-contribution) + - [Feed Quality Guidelines](#feed-quality-guidelines) + - [Development Workflow](#development-workflow) - [Troubleshooting](#troubleshooting) - - [Tools Not Appearing](#tools-not-appearing) - - [JSON File Not Loading](#json-file-not-loading) - - [Other Issues](#other-issues) - - [Thank You!](#thank-you) - - [License](#license) -## How to Add New Tools +## Quick Start for Contributors -To add new tools to the system, follow these steps: +**New to RSS feed contribution?** Here's the fastest way to get started: -### Step 1: Add Tools to the Excel File +1. **Find a great engineering blog** with an RSS feed +2. **Open `public/feeds.xlsx`** in Excel or Google Sheets +3. **Add a new row** with the feed information +4. **Run `node convertExcelToJson.js`** to generate the JSON +5. **Test locally** with `npm run dev` +6. **Submit a Pull Request** -1. Open the `tools.xlsx` file, which is located in the root folder of the repository. -2. Add a new row for each tool you want to include. Ensure you fill in the following columns: - - `category`: The category of the tool (e.g., "IDE", "Version Control", etc.). - - `name`: The name of the tool (e.g., "Visual Studio Code", "Git"). - - `iconsrc`: The URL of the icon for the tool (used in the UI). - - Installation commands for each package manager: - - `choco` (Windows) - - `winget` (Windows) - - `scoop` (Windows) - - `apt` (Linux) - - `dnf` (Linux) - - `pacman` (Linux) - - `homebrew` (macOS) +## How to Add New RSS Feeds -**Example:** +### Step 1: Prepare Your Feed Information -| category | name | iconsrc | choco | winget | scoop | apt | dnf | pacman | homebrew | -|------------|----------------------|------------------------------|----------------------|--------------------|-------------------|-------------|--------------|-----------|--------------| -| IDE | Visual Studio Code | https://example.com/vscode.png| vscode | vscode | vscode | code | | | | -| Versioning | Git | https://example.com/git.png | git | git | git | git | git | git | | +Before adding feeds to the Excel file, gather the following information: -### Step 2: Convert Excel to JSON +**Required Information:** +- **RSS/Atom Feed URL**: The direct link to the XML feed (usually ends in `.xml`, `.rss`, or `/feed`) +- **Blog/Site Title**: The official name of the blog or publication +- **Category**: Which category best fits this feed -Once you have added the new tools to the `tools.xlsx` file, you need to convert it to a `tools.json` file. Follow these steps: +**How to Find RSS Feeds:** +- Look for RSS icons (πŸ“‘) on websites +- Check common URLs: `/feed`, `/rss`, `/atom.xml`, `/feed.xml` +- Use browser extensions like "RSS Feed Finder" +- Check the website's footer or "Subscribe" sections -1. Open the `convertExcelToJson.js` script (located in the root folder). -2. Run the script using Node.js: +### Step 2: Edit the Excel File - ```bash - node convertExcelToJson.js - ``` +1. **Open the file**: Navigate to `public/feeds.xlsx` +2. **Choose your editor**: + - Microsoft Excel + - Google Sheets (upload the file) + - LibreOffice Calc + - Any spreadsheet application -This will convert the data from the Excel sheet to a JSON format and output it as `tools.json`. The `tools.json` file is used by the app to generate the installation scripts. -### Step 3: Test the Updates +3. **Add your feed data** in a new row: -Once the new tools are added and the JSON file is updated, follow these steps: +| Column | Required | Description | Example | +|--------|----------|-------------|---------| +| `category` | βœ… Yes | Feed category | "Engineering Blogs" | +| `title` | βœ… Yes | Blog/site name | "Netflix Tech Blog" | +| `xmlUrl` | βœ… Yes | RSS/Atom feed URL | "https://netflixtechblog.com/feed" | +| `htmlUrl` | ❌ Optional | Website homepage | "https://netflixtechblog.com" | +| `notes` | ❌ Optional | Brief description | "Netflix engineering insights and culture" | -1. **Run the app locally** to ensure the new tools are reflected in the UI. -2. **Verify the new tools** appear correctly, and the installation commands for each package manager are functional. -3. If everything looks good, you’re all set! The new tools will be available for users to select and include in their installation scripts. +**Example Entry:** +``` +category: Engineering Blogs +title: Spotify Engineering +xmlUrl: https://engineering.atspotify.com/feed/ +htmlUrl: https://engineering.atspotify.com/ +notes: Music streaming technology and engineering culture +``` -## How to Contribute +### Step 3: Convert Excel to JSON -We welcome contributions from the community! Here's how you can contribute: +After editing the Excel file, convert it to JSON format: -1. **Fork the repository** to your GitHub account. +```bash +# Navigate to the project root directory +cd rss_cse_setup -2. **Clone the forked repository** to your local machine. +# Run the conversion script +node convertExcelToJson.js +``` - ```bash - git clone https://github.com/yourusername/devsetup.git - cd devsetup - ``` +**What this does:** +- Reads `public/feeds.xlsx` +- Converts data to structured JSON format +- Outputs `public/feeds.json` +- Groups feeds by category +- Validates required fields + +**Expected output:** +``` +Wrote public/feeds.json +``` -3. **Create a new branch** for your feature or bug fix. Make sure you are working in the `dev` branch. +### Step 4: Test Your Changes +1. **Start the development server:** ```bash - git checkout -b feature/add-new-tool + npm run dev ``` -4. **Make your changes**, whether it's adding new tools, fixing bugs, or improving the UI. +2. **Open your browser** to `http://localhost:3000` -5. **Commit your changes** with a clear message. +3. **Verify your additions:** + - Check that new feeds appear in the correct category + - Test the search functionality with your feed titles + - Select your feeds and generate an OPML to ensure they work + - Verify all links are clickable and functional +4. **Test OPML generation:** + - Select some feeds including your new ones + - Click "Generate OPML" + - Download the OPML file + - Try importing it into an RSS reader to confirm it works + +### Step 5: Submit Your Contribution + +1. **Fork the repository** on GitHub + +2. **Clone your fork:** ```bash - git add . - git commit -m "Add Visual Studio Code tool to Excel" + git clone https://github.com/yourusername/rss_cse_setup.git + cd rss_cse_setup ``` -6. **Push your branch** to your forked repository. +3. **Create a feature branch:** + ```bash + git checkout -b add-feeds-[category-name] + # Example: git checkout -b add-feeds-ai-blogs + ``` +4. **Make your changes** (Excel edit + JSON conversion) + +5. **Commit your changes:** ```bash - git push origin feature/add-new-tool + git add public/feeds.xlsx public/feeds.json + git commit -m "Add [X] new feeds to [Category] category + + - Added [Feed Name 1]: [Brief description] + - Added [Feed Name 2]: [Brief description]" ``` -7. **Open a Pull Request (PR)** to the `dev` branch of the main repository. Include a detailed description of the changes you made. +6. **Push to your fork:** + ```bash + git push origin add-feeds-[category-name] + ``` -## Branch Information +7. **Create a Pull Request** with: + - Clear title describing what you added + - List of feeds added with brief descriptions + - Any notes about the feeds or category choices + +## Feed Quality Guidelines + +### βœ… Good Feeds Include: +- **Regular updates** (at least monthly) +- **High-quality technical content** +- **Relevant to CS/Engineering** topics +- **Well-maintained** websites +- **Working RSS/Atom feeds** +- **English content** (primary focus) + +### βœ… Preferred Content Types: +- Engineering team blogs from tech companies +- Individual developer blogs with consistent quality +- Open source project blogs +- Technical publications and magazines +- Conference and event feeds +- Educational institution CS departments + +### ❌ Avoid These Feeds: +- Inactive blogs (no posts in 6+ months) +- Marketing-heavy content with little technical value +- Feeds that frequently break or change URLs +- Non-English content (unless exceptional quality) +- Personal blogs with inconsistent posting +- Feeds with paywalled content + +### Category Naming Guidelines: +- Use clear, descriptive names +- Keep names concise (2-4 words max) +- Use title case (e.g., "Machine Learning", not "machine learning") +- Avoid overly specific categories (better to have broader categories with more feeds) + +## Development Workflow + +### Setting Up Development Environment + +1. **Prerequisites:** + - Node.js 18+ installed + - Git installed + - Text editor or IDE + - Spreadsheet application (Excel, Google Sheets, etc.) + +2. **Initial setup:** + ```bash + git clone https://github.com/yourusername/rss_cse_setup.git + cd rss_cse_setup + npm install + ``` -* All development should be done on the `dev` branch. Once your changes are tested and reviewed, they can be merged into the `main` branch. +3. **Development commands:** + ```bash + npm run dev # Start development server + npm run build # Build for production + npm run lint # Run code linting + ``` -* **Don't forget** to sync your branch with the latest updates from the main repository to avoid merge conflicts. +### File Structure Understanding + +``` +rss_cse_setup/ +β”œβ”€β”€ public/ +β”‚ β”œβ”€β”€ feeds.xlsx # πŸ“Š Master feed database (EDIT THIS) +β”‚ β”œβ”€β”€ feeds.json # πŸ”„ Generated from Excel (DON'T EDIT DIRECTLY) +β”‚ └── images/ # πŸ–ΌοΈ Static images and icons +β”œβ”€β”€ src/ +β”‚ β”œβ”€β”€ app/ +β”‚ β”‚ β”œβ”€β”€ page.tsx # 🏠 Main application page +β”‚ β”‚ β”œβ”€β”€ layout.tsx # πŸ“ App layout and metadata +β”‚ β”‚ └── globals.css # 🎨 Global styles +β”‚ β”œβ”€β”€ components/ +β”‚ β”‚ β”œβ”€β”€ Navbar.tsx # 🧭 Navigation component +β”‚ β”‚ └── Footer.tsx # 🦢 Footer component +β”‚ └── types/ +β”‚ └── index.ts # πŸ“ TypeScript type definitions +β”œβ”€β”€ convertExcelToJson.js # πŸ”„ Excel to JSON converter script +β”œβ”€β”€ package.json # πŸ“¦ Dependencies and scripts +└── README.md # πŸ“– Project documentation +``` ## Troubleshooting -### Tools Not Appearing +### Common Issues and Solutions -If you don’t see the new tools after adding them, ensure that you: +**❌ "Input file not found" error when running convertExcelToJson.js** +- **Solution**: Ensure `public/feeds.xlsx` exists and you're running the command from the project root -* Correctly added the tools to the `tools.xlsx` file. -* Ran the `convertExcelToJson.js` script to regenerate the `tools.json` file. +**❌ Feeds not appearing after adding them** +- **Solution**: Make sure you ran `node convertExcelToJson.js` after editing the Excel file +- **Check**: Verify the Excel file has the correct column names (case-sensitive) +- **Refresh**: Hard refresh the browser (Ctrl+F5 or Cmd+Shift+R) -### JSON File Not Loading +**❌ Excel file won't open or appears corrupted** +- **Solution**: Try opening with a different spreadsheet application +- **Alternative**: Download a fresh copy from the repository -If the app fails to load tools, check the following: +**❌ RSS feed URL doesn't work** +- **Check**: Verify the URL in a browser - it should show XML content +- **Test**: Use an online RSS validator tool +- **Alternative**: Look for alternative feed URLs on the website -* Ensure the `tools.json` file is in the correct location and accessible. -* Check the browser console for any errors that may point to issues with loading the JSON file. +**❌ Development server won't start** +- **Solution**: Ensure Node.js 18+ is installed +- **Check**: Run `npm install` to install dependencies +- **Port conflict**: Try `npm run dev -- --port 3001` to use a different port -### Other Issues +**❌ JSON conversion produces empty or incorrect results** +- **Check**: Ensure Excel file has data in the correct columns +- **Verify**: Column names must match exactly: `category`, `title`, `xmlUrl`, `htmlUrl`, `notes` +- **Format**: Make sure there are no hidden characters or formatting issues -Feel free to open an issue in the repository if you encounter any bugs or need assistance. ## Thank You! -We appreciate your contributions! Your work helps make this tool more useful for developers everywhere. If you have any questions, feel free to reach out. - ---- - -## License +Every contribution, no matter how small, helps make RSS CSE Setup more valuable for the developer community. Your efforts help thousands of developers stay updated with the latest in Computer Science and Engineering. -This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. +**Questions?** Feel free to open an issue or reach out to the maintainers. +**Happy contributing! πŸš€** diff --git a/README.md b/README.md index 58d73af..1ca0e1a 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,167 @@ +# RSS CSE Setup -# rss_cse_picker +[![Next.js](https://img.shields.io/badge/Next.js-15.3.0-black?logo=next.js)](https://nextjs.org/) +[![React](https://img.shields.io/badge/React-19.0.0-blue?logo=react)](https://reactjs.org/) +[![TypeScript](https://img.shields.io/badge/TypeScript-5-blue?logo=typescript)](https://www.typescriptlang.org/) +[![License](https://img.shields.io/badge/License-Proprietary-red)](./LICENSE) -## Overview +## Overview -**rss_cse_picker** is a simple service that provides a ready-to-use OPML file containing curated RSS/Atom feeds. -Users don’t need to worry about JSON, Excel, or conversions β€” they can directly **download the OPML file** and import it into any feed reader (like Feedly, Inoreader, or Thunderbird). +**RSS CSE Setup** is a curated collection of RSS/Atom feeds from top Computer Science and Engineering blogs, companies, and thought leaders. The project provides both a modern web interface for feed selection and ready-to-use OPML files for instant import into any RSS reader. -For developers and contributors, feeds are maintained in an Excel file (`feeds.xlsx`) and converted into OPML using a Node.js script. +### Key Features -## For Users +- **Curated Content**: Hand-picked RSS feeds from leading engineering blogs and tech companies +- **Web Interface**: Modern, responsive UI for browsing and selecting feeds +- **Instant OPML Generation**: Generate custom OPML files with your selected feeds +- **Universal Compatibility**: Works with all major RSS readers (Feedly, Inoreader, Thunderbird, etc.) +- **Easy Maintenance**: Excel-based feed management for contributors -- Just download the **OPML file** from the releases/download section. -- Import it into your favorite RSS reader. -- Done βœ… β€” you’re subscribed to all curated feeds. +## For End Users -## For Contributors / Developers +### Quick Start -If you want to add or improve feeds: +1. **Visit the Web App**: Navigate to the RSS CSE Setup website +2. **Browse Categories**: Explore feeds organized by categories (Engineering Blogs, AI, Web Development, etc.) +3. **Select Feeds**: Check the boxes for feeds you want to subscribe to +4. **Generate OPML**: Click "Generate OPML" to create your custom feed collection +5. **Download**: Use "Download OPML" to save the file to your device +6. **Import**: Import the OPML file into your favorite RSS reader -1. **Edit `feeds.xlsx`** - - Required columns: - - `category` – grouping label (e.g., AI, WebDev, CSE) - - `title` – name of the site/blog - - `xmlUrl` – RSS/Atom feed link - - *(optional)* `htmlUrl` – human-facing blog link +### Supported RSS Readers -2. **Run the Converter** +- **Feedly**: File β†’ Import OPML +- **Inoreader**: Settings β†’ Import/Export β†’ Import from OPML +- **Thunderbird**: File β†’ Import β†’ Import from OPML file +- **NewsBlur**: Import β†’ Upload OPML +- **The Old Reader**: Settings β†’ Import β†’ Choose OPML file +- **Most other RSS readers**: Look for "Import OPML" or "Import feeds" option + +### Alternative: Direct OPML Download + +If you prefer to get all curated feeds without selection: +- Download the complete OPML file from the [releases section](../../releases) +- Import directly into your RSS reader + +## For Contributors & Developers + +### Project Structure + +``` +rss_cse_setup/ +β”œβ”€β”€ public/ +β”‚ β”œβ”€β”€ feeds.xlsx # Master feed database (Excel format) +β”‚ β”œβ”€β”€ feeds.json # Generated JSON from Excel +β”‚ └── images/ # Static assets +β”œβ”€β”€ src/ +β”‚ β”œβ”€β”€ app/ # Next.js app directory +β”‚ β”œβ”€β”€ components/ # React components +β”‚ └── types/ # TypeScript definitions +β”œβ”€β”€ convertExcelToJson.js # Excel to JSON converter script +β”œβ”€β”€ package.json # Dependencies and scripts +└── README.md # This file +``` + +### Development Setup + +1. **Clone the repository** + ```bash + git clone https://github.com/yourusername/rss_cse_setup.git + cd rss_cse_setup + ``` + +2. **Install dependencies** + ```bash + npm install + ``` + +3. **Run development server** + ```bash + npm run dev + ``` + +4. **Open in browser** + Navigate to `http://localhost:3000` + +### Adding New Feeds + +1. **Edit the Excel file** (`public/feeds.xlsx`) + - **Required columns:** + - `category` – Category name (e.g., "Engineering Blogs", "AI", "Web Development") + - `title` – Blog/site name (e.g., "Netflix Tech Blog") + - `xmlUrl` – RSS/Atom feed URL + - **Optional columns:** + - `htmlUrl` – Website homepage URL + - `notes` – Additional notes or description + +2. **Convert Excel to JSON** ```bash node convertExcelToJson.js - ``` - This produces a `feeds.json`. + ``` + This generates `public/feeds.json` from the Excel file. + +3. **Test your changes** + ```bash + npm run dev + ``` + Verify new feeds appear correctly in the web interface. + +4. **Submit a Pull Request** + See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines. + +### Excel Format Example + +| category | title | xmlUrl | htmlUrl | notes | +|----------|-------|--------|---------|-------| +| Engineering Blogs | Netflix Tech Blog | https://netflixtechblog.com/feed | https://netflixtechblog.com | Netflix engineering insights | +| AI | OpenAI Blog | https://openai.com/blog/rss.xml | https://openai.com/blog | Latest AI research and updates | + +## Technical Details + +### Feed Processing Pipeline + +1. **Excel Source** (`feeds.xlsx`) β†’ Contains all feed data in human-readable format +2. **JSON Conversion** (`convertExcelToJson.js`) β†’ Transforms Excel to structured JSON +3. **Web Interface** β†’ Displays feeds with category filtering and search +4. **OPML Generation** β†’ Creates standard OPML format for RSS readers + +### Scripts Available + +- `npm run dev` - Start development server +- `npm run build` - Build for production +- `npm run start` - Start production server +- `npm run lint` - Run ESLint + +### Technologies Used + +- **Frontend**: Next.js 15, React 19, TypeScript +- **Styling**: Tailwind CSS, Custom CSS variables +- **Data Processing**: Node.js, xlsx library +- **Icons**: React Icons + +### Getting Help + +- πŸ“ [Open an issue](../../issues) for bugs or feature requests +- πŸ’¬ Check existing issues for similar problems +- πŸ“§ Contact the maintainer for urgent matters + +## Contributing + +We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines on: + +- Adding new feeds and categories +- Improving the web interface +- Reporting bugs and suggesting features +- Code style and development workflow + +## License -3. **Generate OPML** - Another script transforms `feeds.json` into an `feeds.opml` file that can be shared with end-users. +This project is proprietary software. See [LICENSE](./LICENSE) for details. -πŸ“„ A separate `CONTRIBUTING.docx` is included with step-by-step instructions for developers. +**For Contributors**: You may fork this repository and submit pull requests for the purpose of contributing code back to the project. -## Why This Project +## Acknowledgments -- **For users**: Instant OPML, no setup needed. -- **For maintainers**: Easy feed management in Excel. -- **For developers**: Simple contribution workflow via JSON/Excel. +- All the amazing engineering teams and bloggers who share their knowledge through RSS feeds +- The open-source community for the tools and libraries that make this project possible +- Contributors who help maintain and expand the feed collection diff --git a/src/app/page.tsx b/src/app/page.tsx index 9d0c5ac..f776a28 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -261,9 +261,9 @@ export default function App() {