MCPcopy Index your code
hub / github.com/azu/irodr

github.com/azu/irodr @1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.0 ↗ · + Follow
576 symbols 962 edges 93 files 6 documented · 1%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Irodr Build Status

RSS reader client for Inoreader.

This RSS reader provide a similar experience to LDR.

Screen Shot

Purpose

  • [x] Fast read RSS like LDR
    • [x] Prefetch contents
    • [x] Mark as "read" on idle time
  • [x] Customizable by UserScript
    • [x] We will provide some API like window.getActiveItem for UserScript.
  • [ ] Allow of other RSS reader API like Feedly
    • Domain model should not depended on Inoreader

Usage

login gif

  1. Open https://irodr.netlify.com/
  2. Click Connect to Inoreader
  3. Click Authorize on Inoreader site

Custom Client Id and Client Secret

If you want to your Client ID/Secret of inoreader, do following steps:

  1. Visit https://www.inoreader.com/
  2. Open "Preferences"
  3. Open "Developer" tab
  4. Create new App
    • "Redirect URL" is not required
    • "Scoped": Read and Write
  5. Copy Client Id and Client Secret

Create new App

You paste the Client ID and secret to Irodr Authorization.

Irodr Authorization

UserScript API

Irodr provide some UserScript API for UserScript like Greasemonkey.

  • window.addEventListener("userscript-init", (event) => { /* Initialize UseScript object */ })
  • window.userScript.getActiveContent(): UserScriptActiveContent | undefined
  • window.userScript.getActiveSubscription(): UserScriptActiveSubscription | undefined
  • window.userScript.triggerKey(keys: string, action?: string): void

For more details, see UserScript API document. See also resources/userScript directory.

:memo: Notes

Development

Usage

Run following command and open local server.

npm start
# open http://localhost:13245/

:memo: CORS workaround

Production

http://irodr.netlify.com/ work on Netlify. Netlify support CORS proxy

Local server

This project use the server that avoid CORS for Inoreader.

npm start

:memo: Limitation of Mixed-content

A browser show a warning on https://irodr.netlify.com/ It is caused by Mixed content.

Perf

Run pwmetrics.

npm run pwmerics

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

Extension points exported contracts — how you extend this code

RequestIdleCallback (Interface)
(no doc)
src/infra/time-sheduler/TimeScheduler.ts
BaseContainerProps (Interface)
(no doc)
src/component/container/BaseContainer.ts
AppJSON (Interface)
(no doc)
src/domain/App/App.ts
Window (Interface)
(no doc)
src/infra/time-sheduler/TimeScheduler.ts
AuthorizePanelContainerProps (Interface)
(no doc)
src/component/container/App/Panel/AuthorizePanelContainer.tsx
AppArgs (Interface)
(no doc)
src/domain/App/App.ts
Alternate (Interface)
(no doc)
src/infra/api/StreamContentsResponse.ts
AuthorizePanelStateProps (Interface)
(no doc)
src/component/container/App/Panel/AuthorizePanelStore.ts

Core symbols most depended-on inside this repo

get
called by 45
src/infra/repository/RepositoryContainer.ts
useCase
called by 45
src/component/container/BaseContainer.ts
execute
called by 25
src/component/container/App/Panel/use-case/ToggleAuthorizePanelUseCase.ts
dispatch
called by 18
src/component/container/App/Hidden/UserScript/UserScriptEvent.ts
save
called by 15
src/infra/repository/AppRepository.ts
createUpdateHeaderMessageUseCase
called by 7
src/use-case/app/UpdateHeaderMessageUseCase.ts
execute
called by 6
src/component/container/App/Subscription/SubscriptionList/use-case/ToggleListGroupUseCase.ts
getRequest
called by 5
src/infra/api/InoreaderAPI.ts

Shape

Method 249
Class 199
Function 68
Interface 59
Enum 1

Languages

TypeScript100%

Modules by API surface

src/component/container/App/Subscription/SubscriptionContents/SubscriptionContentsStore.ts24 symbols
src/component/container/App/Subscription/SubscriptionList/SubscriptionListStore.ts23 symbols
src/domain/Subscriptions/SubscriptionContent/SubscriptionContents.ts20 symbols
src/domain/Subscriptions/Subscription.ts19 symbols
src/domain/Subscriptions/TimeStamp.ts13 symbols
src/component/container/App/AppHeader/AppHeaderStore.ts13 symbols
src/infra/api/InoreaderAPI.ts12 symbols
src/domain/App/User/AppUser.ts12 symbols
src/component/container/App/Subscription/SubscriptionContents/SubscriptionContentsContainer.tsx12 symbols
src/component/container/App/Preferences/AppPreferencesStore.ts12 symbols
src/domain/App/App.ts11 symbols
src/component/container/App/Panel/AuthorizePanelStore.ts11 symbols

For agents

$ claude mcp add irodr \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact