A Flipboard-style RSS feed reader for Frappe v16 with multi-user support, personalized feed subscriptions, and automatic RSS synchronization.
- π° RSS Feed Parsing: Automatic synchronization from any RSS/Atom feed
- π₯ Multi-User Support: Each user can subscribe to their own feeds
- π Auto Sync: Hourly background synchronization of all feeds
- π¨ Flipboard-style UI: Modern, card-based interface
- π User Registration: Public registration with automatic approval
- π± Responsive: Works on desktop, tablet, and mobile
- Frappe v16 or higher
- Python 3.10+
- Access to Frappe Bench CLI
# Get the app from GitHub
bench get-app https://github.com/YOUR_USERNAME/friisbi.git
# Install app on your site
bench --site YOUR_SITE install-app friisbi
# Restart bench
bench restart- Go to your Frappe Press dashboard
- Navigate to Marketplace
- Search for "Friisbi Reader"
- Click "Install App"
- Select your site
- Click "Install"
The app requires these DocTypes to be created in your Frappe site:
-
Friisbi Feed
- title (Data)
- url (Data)
- category (Data, optional)
-
Friisbi Post
- title (Data)
- link (Data)
- content (Text Editor)
- feed (Link to Friisbi Feed)
- published_date (Datetime)
-
Friisbi Subscription
- user (Link to User)
- feed (Link to Friisbi Feed)
Ensure the following permissions are set:
- Friisbi Feed: All users can read
- Friisbi Post: All users can read
- Friisbi Subscription: Users can create/read/update/delete their own subscriptions
- Register: Visit
/friisbi-signupto create an account - Browse Feeds: Go to
/friisbi-hometo see posts from your subscribed feeds - Add Feeds: Use the "Aggiungi Feed" button to subscribe to new RSS feeds
- Infinite Scroll: Scroll down to load more posts automatically
To manually trigger feed synchronization:
# In Frappe console
frappe.call('friisbi.api.sync_all_feeds')Or sync a specific feed:
frappe.call('friisbi.api.sync_feed', feed_name='FEED_NAME')To test an RSS feed before adding:
frappe.call('friisbi.api.get_feed_preview', url='https://example.com/feed.xml')The app automatically syncs all feeds every hour via Frappe's scheduler. No manual intervention required.
To change sync frequency, edit hooks.py:
scheduler_events = {
"hourly": [ # Change to "daily", "weekly", etc.
"friisbi.api.sync_all_feeds"
],
}All API methods are whitelisted and can be called via REST API:
Sync a single feed.
Parameters:
feed_name: Name of Friisbi Feed document
Returns:
{
"success": true,
"feed": "FEED_NAME",
"new_posts": 10,
"skipped": 5,
"total_entries": 15
}Sync all feeds.
Returns:
{
"total_feeds": 5,
"successful": 5,
"failed": 0,
"total_new_posts": 42,
"details": [...]
}Preview a feed before subscribing.
Parameters:
url: RSS feed URL
Returns:
{
"success": true,
"feed_info": {
"title": "Example Blog",
"description": "A blog about...",
"entry_count": 20
},
"sample_entries": [...]
}friisbi/
βββ friisbi/
β βββ __init__.py
β βββ hooks.py # App configuration and scheduler
β βββ api.py # RSS sync API methods
β βββ config/ # Desk configuration
β βββ public/ # Static assets
βββ setup.py # Python package setup
βββ requirements.txt # Python dependencies
βββ README.md
frappe: Frappe Frameworkfeedparser>=6.0.10: RSS/Atom feed parsing
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
-
Update Version: Edit
friisbi/__init__.pyand bump version -
Tag Release: Create a git tag matching the version
git tag v0.0.1 git push origin v0.0.1
-
GitHub Release: Create a release on GitHub with changelog
- Go to Frappe Press Marketplace
- Click "Submit App"
- Fill in the form:
- App Name: Friisbi Reader
- Repository URL: Your GitHub repo URL
- Branch:
mainormaster - Description: Short description from above
- Category: Content Management / Social
- License: MIT
- Screenshots: Add screenshots of the app
- Submit for review
- Ensure all dependencies are in
requirements.txt - Include clear installation instructions
- Add screenshots showing key features
- Write comprehensive documentation
- Test on a clean Frappe v16 site before submitting
- Check Error Log: Go to Frappe Desk β Error Log
- Verify feed URL is valid and accessible
- Check scheduler is enabled:
bench enable-scheduler - Manually trigger sync to see errors
- Verify user has subscriptions: Check
Friisbi Subscriptiondoctype - Check posts exist: Go to
Friisbi Postlist - Verify permissions on DocTypes
Ensure feedparser is installed:
bench --site YOUR_SITE pip install feedparserMIT License - see LICENSE.txt
For issues and feature requests, please use the GitHub issue tracker.
Developed for Frappe v16 ecosystem.