├── .dockerignore ├── .env.example ├── .github ├── FUNDING.yml ├── renovate.json └── workflows │ └── docker.yml ├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── Dockerfile ├── README.md ├── app ├── components │ ├── AddSubscriptionPopover.tsx │ ├── DeleteConfirmationDialog.tsx │ ├── EditSubscriptionModal.tsx │ ├── Header.tsx │ ├── IconFinder.tsx │ ├── KeyboardShortcutsDialog.tsx │ ├── SearchBar.tsx │ ├── SubscriptionCard.tsx │ ├── SubscriptionGrid.tsx │ ├── Summary.tsx │ ├── number-ticker.tsx │ └── ui │ │ ├── accordion.tsx │ │ ├── alert-dialog.tsx │ │ ├── alert.tsx │ │ ├── aspect-ratio.tsx │ │ ├── avatar.tsx │ │ ├── badge.tsx │ │ ├── border-beam.tsx │ │ ├── breadcrumb.tsx │ │ ├── button.tsx │ │ ├── calendar.tsx │ │ ├── card.tsx │ │ ├── carousel.tsx │ │ ├── chart.tsx │ │ ├── checkbox.tsx │ │ ├── collapsible.tsx │ │ ├── command.tsx │ │ ├── context-menu.tsx │ │ ├── dialog.tsx │ │ ├── drawer.tsx │ │ ├── dropdown-menu.tsx │ │ ├── form.tsx │ │ ├── hover-card.tsx │ │ ├── input-otp.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── link-preview.tsx │ │ ├── menubar.tsx │ │ ├── navigation-menu.tsx │ │ ├── number-ticker.tsx │ │ ├── pagination.tsx │ │ ├── popover.tsx │ │ ├── progress.tsx │ │ ├── radio-group.tsx │ │ ├── rainbow-button.tsx │ │ ├── resizable.tsx │ │ ├── scroll-area.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── skeleton.tsx │ │ ├── slider.tsx │ │ ├── sonner.tsx │ │ ├── switch.tsx │ │ ├── table.tsx │ │ ├── tabs.tsx │ │ ├── textarea.tsx │ │ ├── toast.tsx │ │ ├── toaster.tsx │ │ ├── toggle-group.tsx │ │ ├── toggle.tsx │ │ ├── tooltip.tsx │ │ └── use-toast.ts ├── entry.client.tsx ├── entry.server.tsx ├── hooks │ ├── use-toast.ts │ └── useKeyboard.ts ├── lib │ └── utils.ts ├── root.tsx ├── routes │ ├── _index.tsx │ ├── api.currency-rates.ts │ ├── api.icons.ts │ └── api.storage.$key.ts ├── services │ └── currency.server.ts ├── store │ └── subscriptionStore.ts ├── stores │ └── preferences.ts ├── tailwind.css ├── types │ └── currencies.d.ts └── utils │ └── query.client.ts ├── biome.json ├── bun.lockb ├── components.json ├── data └── .gitkeep ├── lefthook.yml ├── package.json ├── postcss.config.js ├── public ├── favicon.ico ├── logo-dark.png └── logo-light.png ├── tailwind.config.ts ├── tsconfig.json └── vite.config.ts /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .git 4 | .env 5 | README.md -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | USE_LOCAL_STORAGE=true -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.github/FUNDING.yml -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.github/renovate.json -------------------------------------------------------------------------------- /.github/workflows/docker.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.github/workflows/docker.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.gitignore -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.vscode/launch.json -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/.vscode/tasks.json -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/Dockerfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/README.md -------------------------------------------------------------------------------- /app/components/AddSubscriptionPopover.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/AddSubscriptionPopover.tsx -------------------------------------------------------------------------------- /app/components/DeleteConfirmationDialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/DeleteConfirmationDialog.tsx -------------------------------------------------------------------------------- /app/components/EditSubscriptionModal.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/EditSubscriptionModal.tsx -------------------------------------------------------------------------------- /app/components/Header.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/Header.tsx -------------------------------------------------------------------------------- /app/components/IconFinder.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/IconFinder.tsx -------------------------------------------------------------------------------- /app/components/KeyboardShortcutsDialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/KeyboardShortcutsDialog.tsx -------------------------------------------------------------------------------- /app/components/SearchBar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/SearchBar.tsx -------------------------------------------------------------------------------- /app/components/SubscriptionCard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/SubscriptionCard.tsx -------------------------------------------------------------------------------- /app/components/SubscriptionGrid.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/SubscriptionGrid.tsx -------------------------------------------------------------------------------- /app/components/Summary.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/Summary.tsx -------------------------------------------------------------------------------- /app/components/number-ticker.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/number-ticker.tsx -------------------------------------------------------------------------------- /app/components/ui/accordion.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/accordion.tsx -------------------------------------------------------------------------------- /app/components/ui/alert-dialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/alert-dialog.tsx -------------------------------------------------------------------------------- /app/components/ui/alert.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/alert.tsx -------------------------------------------------------------------------------- /app/components/ui/aspect-ratio.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/aspect-ratio.tsx -------------------------------------------------------------------------------- /app/components/ui/avatar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/avatar.tsx -------------------------------------------------------------------------------- /app/components/ui/badge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/badge.tsx -------------------------------------------------------------------------------- /app/components/ui/border-beam.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/border-beam.tsx -------------------------------------------------------------------------------- /app/components/ui/breadcrumb.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/breadcrumb.tsx -------------------------------------------------------------------------------- /app/components/ui/button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/button.tsx -------------------------------------------------------------------------------- /app/components/ui/calendar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/calendar.tsx -------------------------------------------------------------------------------- /app/components/ui/card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/card.tsx -------------------------------------------------------------------------------- /app/components/ui/carousel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/carousel.tsx -------------------------------------------------------------------------------- /app/components/ui/chart.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/chart.tsx -------------------------------------------------------------------------------- /app/components/ui/checkbox.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/checkbox.tsx -------------------------------------------------------------------------------- /app/components/ui/collapsible.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/collapsible.tsx -------------------------------------------------------------------------------- /app/components/ui/command.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/command.tsx -------------------------------------------------------------------------------- /app/components/ui/context-menu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/context-menu.tsx -------------------------------------------------------------------------------- /app/components/ui/dialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/dialog.tsx -------------------------------------------------------------------------------- /app/components/ui/drawer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/drawer.tsx -------------------------------------------------------------------------------- /app/components/ui/dropdown-menu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/dropdown-menu.tsx -------------------------------------------------------------------------------- /app/components/ui/form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/form.tsx -------------------------------------------------------------------------------- /app/components/ui/hover-card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/hover-card.tsx -------------------------------------------------------------------------------- /app/components/ui/input-otp.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/input-otp.tsx -------------------------------------------------------------------------------- /app/components/ui/input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/input.tsx -------------------------------------------------------------------------------- /app/components/ui/label.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/label.tsx -------------------------------------------------------------------------------- /app/components/ui/link-preview.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/link-preview.tsx -------------------------------------------------------------------------------- /app/components/ui/menubar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/menubar.tsx -------------------------------------------------------------------------------- /app/components/ui/navigation-menu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/navigation-menu.tsx -------------------------------------------------------------------------------- /app/components/ui/number-ticker.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/number-ticker.tsx -------------------------------------------------------------------------------- /app/components/ui/pagination.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/pagination.tsx -------------------------------------------------------------------------------- /app/components/ui/popover.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/popover.tsx -------------------------------------------------------------------------------- /app/components/ui/progress.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/progress.tsx -------------------------------------------------------------------------------- /app/components/ui/radio-group.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/radio-group.tsx -------------------------------------------------------------------------------- /app/components/ui/rainbow-button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/rainbow-button.tsx -------------------------------------------------------------------------------- /app/components/ui/resizable.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/resizable.tsx -------------------------------------------------------------------------------- /app/components/ui/scroll-area.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/scroll-area.tsx -------------------------------------------------------------------------------- /app/components/ui/select.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/select.tsx -------------------------------------------------------------------------------- /app/components/ui/separator.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/separator.tsx -------------------------------------------------------------------------------- /app/components/ui/sheet.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/sheet.tsx -------------------------------------------------------------------------------- /app/components/ui/skeleton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/skeleton.tsx -------------------------------------------------------------------------------- /app/components/ui/slider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/slider.tsx -------------------------------------------------------------------------------- /app/components/ui/sonner.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/sonner.tsx -------------------------------------------------------------------------------- /app/components/ui/switch.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/switch.tsx -------------------------------------------------------------------------------- /app/components/ui/table.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/table.tsx -------------------------------------------------------------------------------- /app/components/ui/tabs.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/tabs.tsx -------------------------------------------------------------------------------- /app/components/ui/textarea.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/textarea.tsx -------------------------------------------------------------------------------- /app/components/ui/toast.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/toast.tsx -------------------------------------------------------------------------------- /app/components/ui/toaster.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/toaster.tsx -------------------------------------------------------------------------------- /app/components/ui/toggle-group.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/toggle-group.tsx -------------------------------------------------------------------------------- /app/components/ui/toggle.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/toggle.tsx -------------------------------------------------------------------------------- /app/components/ui/tooltip.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/tooltip.tsx -------------------------------------------------------------------------------- /app/components/ui/use-toast.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/components/ui/use-toast.ts -------------------------------------------------------------------------------- /app/entry.client.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/entry.client.tsx -------------------------------------------------------------------------------- /app/entry.server.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/entry.server.tsx -------------------------------------------------------------------------------- /app/hooks/use-toast.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/hooks/use-toast.ts -------------------------------------------------------------------------------- /app/hooks/useKeyboard.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/hooks/useKeyboard.ts -------------------------------------------------------------------------------- /app/lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/lib/utils.ts -------------------------------------------------------------------------------- /app/root.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/root.tsx -------------------------------------------------------------------------------- /app/routes/_index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/routes/_index.tsx -------------------------------------------------------------------------------- /app/routes/api.currency-rates.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/routes/api.currency-rates.ts -------------------------------------------------------------------------------- /app/routes/api.icons.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/routes/api.icons.ts -------------------------------------------------------------------------------- /app/routes/api.storage.$key.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/routes/api.storage.$key.ts -------------------------------------------------------------------------------- /app/services/currency.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/services/currency.server.ts -------------------------------------------------------------------------------- /app/store/subscriptionStore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/store/subscriptionStore.ts -------------------------------------------------------------------------------- /app/stores/preferences.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/stores/preferences.ts -------------------------------------------------------------------------------- /app/tailwind.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/tailwind.css -------------------------------------------------------------------------------- /app/types/currencies.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/types/currencies.d.ts -------------------------------------------------------------------------------- /app/utils/query.client.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/app/utils/query.client.ts -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/biome.json -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/bun.lockb -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/components.json -------------------------------------------------------------------------------- /data/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lefthook.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/lefthook.yml -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/postcss.config.js -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/public/logo-dark.png -------------------------------------------------------------------------------- /public/logo-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/public/logo-light.png -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajnart/subs/HEAD/vite.config.ts --------------------------------------------------------------------------------