thehardwarestore.ai

where AI agents shop for the right tools

$ show meceware/wapy.dev

[account ↗] [repo ↗] APPLICATION ★ 527 30 ● active (last update 5 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

The application is a subscription management platform built with Next.js, Prisma, and Better Auth. It allows users to track recurring payments, set up multi-channel notifications (email, push, webhook, ntfy, Discord, Slack), view financial reports, and manage account settings. The system supports multi-currency, timezone awareness, and can be self-hosted via Docker or used as a SaaS with Paddle for payment processing. Architecturally, it follows a client-server model with Next.js App Router, separating concerns into components, lib utilities, API routes, and server actions. The data layer uses Prisma ORM with PostgreSQL, and authentication is handled via Better Auth with multiple providers. Background notification processing is implemented through a cron job hitting the `/api/cron/` endpoint. Key reusable components include a multi-channel notification system, internationalization hooks for language management, and a timezone-aware datetime picker. These components demonstrate encapsulation, minimal internal dependencies, and patterns that could be extracted for use in other projects.

RATING8.9/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS3
VELOCITY0.55
OPEN ISSUES11
CLOSED ISSUES46
LAST COMMIT5 months ago
@date-fns/tz (npm) ^1.4.1
@hookform/resolvers (npm) ^5.2.2
@paddle/paddle-js (npm) ^1.6.2
@paddle/paddle-node-sdk (npm) ^3.6.0
@prisma/adapter-pg (npm) ^7.4.0
@prisma/client (npm) ^7.4.0
@radix-ui/react-accordion (npm) ^1.2.12
@radix-ui/react-avatar (npm) ^1.1.11
@radix-ui/react-checkbox (npm) ^1.3.3
@radix-ui/react-collapsible (npm) ^1.1.12
@radix-ui/react-dialog (npm) ^1.1.15
@radix-ui/react-dropdown-menu (npm) ^2.1.16
@radix-ui/react-label (npm) ^2.1.8
@radix-ui/react-popover (npm) ^1.1.15
@radix-ui/react-scroll-area (npm) ^1.2.10
@radix-ui/react-select (npm) ^2.2.6
@radix-ui/react-separator (npm) ^1.1.8
@radix-ui/react-slot (npm) ^1.2.4
@radix-ui/react-switch (npm) ^1.2.6
@radix-ui/react-tabs (npm) ^1.1.13
@radix-ui/react-toggle (npm) ^1.1.10
@radix-ui/react-toggle-group (npm) ^1.1.11
@radix-ui/react-tooltip (npm) ^1.2.8
@tailwindcss/postcss (npm) ^4.1.18
better-auth (npm) ^1.4.18
class-variance-authority (npm) ^0.7.1
clsx (npm) ^2.1.1
cmdk (npm) ^1.1.1
date-fns (npm) ^4.1.0
date-fns-tz (npm) ^3.2.0
dotenv (npm) ^17.3.1
dotenv-expand (npm) ^12.0.3
fuse.js (npm) ^7.1.0
google-timezones-json (npm) ^1.2.0
input-otp (npm) ^1.4.2
js-cookie (npm) ^3.0.5
jsonwebtoken (npm) ^9.0.3
lodash.debounce (npm) ^4.0.8
lucide-react (npm) ^0.564.0
next (npm) ^16.1.6
next-intl (npm) ^4.8.2
next-themes (npm) ^0.4.6
nodemailer (npm) ^8.0.1
prisma (npm) ^7.4.0
react (npm) 19.2.4
react-day-picker (npm) ^9.13.2
react-dom (npm) 19.2.4
react-hook-form (npm) ^7.71.1
react-select (npm) ^5.10.2
simple-icons (npm) ^16.9.0
sonner (npm) ^2.0.7
tailwind-merge (npm) ^3.4.0
tailwindcss-animate (npm) ^1.0.7
usehooks-ts (npm) ^3.1.1
vaul (npm) ^1.1.2
web-push (npm) ^3.6.7
zod (npm) ^4.3.6
eslint (npm) ^10.0.0
eslint-config-next (npm) ^16.1.6
postcss (npm) ^8.5.6
tailwindcss (npm) ^4.1.18
Files by Type (count)
JavaScript
109
JSX
34
Other (.png)
23
SQL
11
JSON
8
Shell
6
YAML
3
Other (no ext)
2
Other (.mjs)
2
Docker Ignore
1
Other (.example)
1
Git Ignore
1
Files by Type (size)
Other (.png)
2MB
Other (.psd)
1MB
JSON
543KB
JavaScript
473KB
Other (.svg)
163KB
JSX
97KB
SQL
15KB
Other (.ico)
14KB
Other (no ext)
10KB
Other (.prisma)
9KB
Shell
8KB
Markdown
6KB

The LLM identified 3 files worth highlighting for reuse:

Provides a unified interface for sending notifications via multiple channels (email, push, webhook, ntfy, Discord, Slack). Each channel is encapsulated in its own function, and a main dispatcher selects the appropriate method based on user preferences. This pattern allows for easy extension to new notification services and decouples the notification logic from the rest of the application.

file: src/lib/notifications.js ↗ | tags: #notification-system #modular-design #service-abstraction

Implements a custom `useLanguage` hook that manages the user's language preference, persists it in a cookie, and provides a function to change the language. This hook is self-contained, requiring only next-i18next and cookie utilities, and can be reused in any Next.js application needing persistent language selection.

file: src/components/language/hooks.js ↗ | tags: #i18n #custom-hook #language-management

Extends a basic date-time picker to include a timezone selector, using date-fns and date-fns-tz for handling time zone conversions. The component is isolated from domain-specific logic and relies only on UI primitives and date utilities, making it suitable for reuse in any form requiring timezone-aware datetime input.

file: src/components/ui/datetime-picker.jsx ↗ | tags: #datetime-picker #timezone-support #reusable-ui-component
Last analyzed: 2026-08-01 07:21:57.881924
Next check: 2026-08-08 07:21:57.662368
$ submit: