diff options
| author | Fuwn <[email protected]> | 2026-02-07 01:42:57 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-07 01:42:57 -0800 |
| commit | 5c5b1993edd890a80870ee05607ac5f088191d4e (patch) | |
| tree | a721b76bcd49ba10826c53efc87302c7a689512f /apps/web/lib/queries/query-keys.ts | |
| download | asa.news-5c5b1993edd890a80870ee05607ac5f088191d4e.tar.xz asa.news-5c5b1993edd890a80870ee05607ac5f088191d4e.zip | |
feat: asa.news RSS reader with developer tier, REST API, and webhooks
Full-stack RSS reader SaaS: Supabase + Next.js + Go worker.
Includes three subscription tiers (free/pro/developer), API key auth,
read-only REST API, webhook push notifications, Stripe billing with
proration, and PWA support.
Diffstat (limited to 'apps/web/lib/queries/query-keys.ts')
| -rw-r--r-- | apps/web/lib/queries/query-keys.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/apps/web/lib/queries/query-keys.ts b/apps/web/lib/queries/query-keys.ts new file mode 100644 index 0000000..69e3407 --- /dev/null +++ b/apps/web/lib/queries/query-keys.ts @@ -0,0 +1,43 @@ +export const queryKeys = { + timeline: { + all: ["timeline"] as const, + list: (folderIdentifier?: string | null, feedIdentifier?: string | null, unreadOnly?: boolean) => + ["timeline", { folderIdentifier, feedIdentifier, unreadOnly }] as const, + }, + savedEntries: { + all: ["saved-entries"] as const, + }, + subscriptions: { + all: ["subscriptions"] as const, + }, + entryDetail: { + single: (entryIdentifier: string) => + ["entry-detail", entryIdentifier] as const, + }, + userProfile: { + all: ["user-profile"] as const, + }, + mutedKeywords: { + all: ["muted-keywords"] as const, + }, + unreadCounts: { + all: ["unread-counts"] as const, + }, + entrySearch: { + query: (searchQuery: string) => ["entry-search", searchQuery] as const, + }, + entryShare: { + single: (entryIdentifier: string) => + ["entry-share", entryIdentifier] as const, + }, + highlights: { + forEntry: (entryIdentifier: string) => + ["highlights", entryIdentifier] as const, + all: ["highlights"] as const, + }, + customFeeds: { + all: ["custom-feeds"] as const, + timeline: (customFeedIdentifier: string) => + ["custom-feed-timeline", customFeedIdentifier] as const, + }, +} |