|
1 | | -# html2rss.github.io |
| 1 | +# html2rss Documentation |
2 | 2 |
|
3 | | -This repository hosts the documentation and website for `html2rss`, a tool for creating RSS feeds from any website. |
| 3 | +The official documentation website for html2rss, built with Astro Starlight for modern performance and developer experience. |
4 | 4 |
|
5 | | -## 🌐 Community & Resources |
| 5 | +## 🚀 Features |
6 | 6 |
|
7 | | -| Resource | Description | Link | |
8 | | -| ------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------ | |
9 | | -| **📚 Documentation & Feed Directory** | Complete guides, tutorials, and browse 100+ pre-built feeds | [html2rss.github.io](https://html2rss.github.io) | |
10 | | -| **💬 Community Discussions** | Get help, share ideas, and connect with other users | [GitHub Discussions](https://github.com/orgs/html2rss/discussions) | |
11 | | -| **📋 Project Board** | Track development progress and upcoming features | [View Project Board](https://github.com/orgs/html2rss/projects) | |
12 | | -| **💖 Support Development** | Help fund ongoing development and maintenance | [Sponsor on GitHub](https://github.com/sponsors/gildesmarais) | |
| 7 | +- **Modern Documentation**: Built with Astro Starlight for better performance and developer experience |
| 8 | +- **Interactive Feed Directory**: Fully functional with search, filtering, and parameter configuration |
| 9 | +- **Progressive Enhancement**: Works without JavaScript, enhanced with Alpine.js |
| 10 | +- **Dark Theme**: Integrated with Starlight's theme system |
| 11 | +- **GitHub Integration**: Edit links and social links |
| 12 | +- **Analytics**: GoatCounter integration |
| 13 | +- **SEO Optimized**: Meta tags, sitemap, and search indexing |
13 | 14 |
|
14 | | -**Quick Start Options:** |
| 15 | +## 📁 Project Structure |
15 | 16 |
|
16 | | -- **New to RSS?** → Start with the [web application](https://html2rss.github.io/web-application) |
17 | | -- **Ruby Developer?** → Check out the [Ruby gem documentation](https://html2rss.github.io/ruby-gem) |
18 | | -- **Need a specific feed?** → Browse the [feed directory](https://html2rss.github.io/feed-directory) |
19 | | -- **Want to contribute?** → See our [contributing guide](https://html2rss.github.io/get-involved/contributing) |
| 17 | +``` |
| 18 | +html2rss.github.io/ |
| 19 | +├── src/ |
| 20 | +│ ├── content/docs/ # Documentation content (MDX) |
| 21 | +│ ├── components/ # Astro components |
| 22 | +│ │ └── FeedDirectory.astro # Interactive feed directory |
| 23 | +│ ├── data/ # Data files |
| 24 | +│ │ ├── configs.json # Generated feed configurations |
| 25 | +│ │ └── loadConfigs.ts # Data loader |
| 26 | +│ └── assets/ # Static assets |
| 27 | +├── bin/ |
| 28 | +│ └── data-update # Script to update feed data |
| 29 | +├── public/ # Public assets |
| 30 | +├── .github/workflows/ # CI/CD workflows |
| 31 | +└── Gemfile # Ruby dependencies for data updates |
| 32 | +``` |
20 | 33 |
|
21 | | -## Contributing |
| 34 | +## 🛠️ Development |
22 | 35 |
|
23 | | -Contributions are welcome! See our [Get Involved page](https://html2rss.github.io/get-involved) for details on discussions, reporting issues, and contributing. |
| 36 | +### Prerequisites |
| 37 | + |
| 38 | +- Node.js 22+ |
| 39 | +- Ruby 3.3+ |
| 40 | +- npm/yarn |
| 41 | + |
| 42 | +### Setup |
| 43 | + |
| 44 | +1. **Install Node.js dependencies:** |
| 45 | + ```bash |
| 46 | + npm install |
| 47 | + ``` |
| 48 | + |
| 49 | +2. **Install Ruby dependencies:** |
| 50 | + ```bash |
| 51 | + bundle install |
| 52 | + ``` |
| 53 | + |
| 54 | +3. **Update feed data:** |
| 55 | + ```bash |
| 56 | + npm run update-data |
| 57 | + ``` |
| 58 | + |
| 59 | +4. **Start development server:** |
| 60 | + ```bash |
| 61 | + npm run dev |
| 62 | + ``` |
| 63 | + |
| 64 | +### Available Scripts |
| 65 | + |
| 66 | +- `npm run dev` - Start development server |
| 67 | +- `npm run build` - Build for production |
| 68 | +- `npm run preview` - Preview production build |
| 69 | +- `npm run update-data` - Update feed configurations from html2rss-configs |
| 70 | +- `npm run build:full` - Update data and build |
| 71 | + |
| 72 | +## 📊 Data Management |
| 73 | + |
| 74 | +The feed directory data is automatically generated from the `html2rss-configs` gem: |
| 75 | + |
| 76 | +1. **Source**: `html2rss-configs` gem (latest commit from GitHub) |
| 77 | +2. **Generation**: `bin/data-update` script processes the gem's configs |
| 78 | +3. **Output**: `src/data/configs.json` (clean JSON format) |
| 79 | +4. **Usage**: Loaded by `src/data/loadConfigs.ts` in the FeedDirectory component |
| 80 | + |
| 81 | +### Data Update Process |
| 82 | + |
| 83 | +The `bin/data-update` script: |
| 84 | +- Fetches all config files from the `html2rss-configs` gem |
| 85 | +- Extracts metadata (domain, name, parameters, etc.) |
| 86 | +- Converts to clean JSON format (no parsing issues) |
| 87 | +- Generates `src/data/configs.json` |
| 88 | + |
| 89 | +## 🚀 Deployment |
| 90 | + |
| 91 | +### GitHub Pages (CI/CD) |
| 92 | + |
| 93 | +The site is automatically deployed via GitHub Actions: |
| 94 | + |
| 95 | +1. **Trigger**: Push to `main` branch |
| 96 | +2. **Process**: |
| 97 | + - Install Ruby dependencies |
| 98 | + - Run `bin/data-update` to update feed data |
| 99 | + - Install Node.js dependencies |
| 100 | + - Build Astro site |
| 101 | + - Deploy to GitHub Pages |
| 102 | + |
| 103 | +### Manual Deployment |
| 104 | + |
| 105 | +```bash |
| 106 | +# Update data and build |
| 107 | +npm run build:full |
| 108 | + |
| 109 | +# Deploy the dist/ folder to your hosting provider |
| 110 | +``` |
| 111 | + |
| 112 | +## 🔧 Configuration |
| 113 | + |
| 114 | +### Astro Configuration |
| 115 | + |
| 116 | +Key settings in `astro.config.mjs`: |
| 117 | +- Site URL and base path |
| 118 | +- Starlight integration with custom head elements |
| 119 | +- GitHub social links and edit URLs |
| 120 | +- Sidebar navigation structure |
| 121 | + |
| 122 | +### Feed Directory |
| 123 | + |
| 124 | +The interactive Feed Directory (`src/components/FeedDirectory.astro`): |
| 125 | +- Uses Alpine.js for interactivity |
| 126 | +- Loads data from `src/data/configs.yml` |
| 127 | +- Provides search and filtering |
| 128 | +- Shows parameter forms for dynamic feeds |
| 129 | +- Generates RSS URLs and GitHub edit links |
| 130 | + |
| 131 | +## 📝 Content Migration |
| 132 | + |
| 133 | +All content has been migrated from Jekyll to Astro Starlight: |
| 134 | + |
| 135 | +- **Markdown → MDX**: Converted all `.md` files to `.mdx` |
| 136 | +- **Frontmatter**: Updated to Starlight format |
| 137 | +- **URLs**: Updated relative links |
| 138 | +- **Images**: Migrated to `public/assets/images/` |
| 139 | +- **Components**: Recreated Jekyll components as Astro components |
| 140 | + |
| 141 | +## 🎨 Styling |
| 142 | + |
| 143 | +- **Theme**: Uses Starlight's built-in theme system |
| 144 | +- **Colors**: HSL color variables for dark/light mode compatibility |
| 145 | +- **Components**: Custom CSS for Feed Directory integrated with Starlight |
| 146 | +- **Responsive**: Mobile-friendly design |
| 147 | + |
| 148 | +## 🔍 Search |
| 149 | + |
| 150 | +- **Engine**: Pagefind (integrated with Starlight) |
| 151 | +- **Indexing**: Automatic during build |
| 152 | +- **Features**: Full-text search across all documentation |
| 153 | + |
| 154 | +## 📈 Analytics |
| 155 | + |
| 156 | +- **Provider**: GoatCounter |
| 157 | +- **Integration**: Script added to `astro.config.mjs` |
| 158 | +- **Privacy**: No cookies, GDPR compliant |
| 159 | + |
| 160 | +## 🐛 Troubleshooting |
| 161 | + |
| 162 | +### Common Issues |
| 163 | + |
| 164 | +1. **Data not loading**: Run `npm run update-data` to regenerate configs |
| 165 | +2. **Build errors**: Check for JSON syntax issues in generated data |
| 166 | +3. **Styling issues**: Ensure CSS uses Starlight's color variables |
| 167 | + |
| 168 | +### Development Tips |
| 169 | + |
| 170 | +- Use `npm run build:full` to test the complete build process |
| 171 | +- Check `src/data/configs.json` for data issues |
| 172 | +- Use browser dev tools to debug Alpine.js components |
| 173 | + |
| 174 | +## 📚 Migration Notes |
| 175 | + |
| 176 | +This migration preserves all functionality from the original Jekyll site: |
| 177 | + |
| 178 | +- ✅ All content migrated |
| 179 | +- ✅ Feed Directory fully functional |
| 180 | +- ✅ Search and navigation working |
| 181 | +- ✅ GitHub integration maintained |
| 182 | +- ✅ Analytics preserved |
| 183 | +- ✅ SEO optimization maintained |
| 184 | +- ✅ Progressive enhancement working |
| 185 | +- ✅ Dark theme support |
| 186 | + |
| 187 | +The new Astro Starlight version provides better performance, modern tooling, and improved developer experience while maintaining full backward compatibility. |
0 commit comments