
Track Your Charity & Sadaqah Contributions
Raycast extension for tracking your charitable giving (Sadaqah) with multi-currency support and gold value conversion.
Sponsored by erklab β Architecting production-grade systems with AI-driven velocity and human-centered precision.
ββ§1-5 for quick preset accesscrypto.randomUUID() for ID generationgit clone <repository-url>
cd sadaqahbox-raycast
npm install
Configure the extension in Raycast:
https://api.yourdomain.com)Build and install:
npm run build
| Setting | Description | Required |
|---|---|---|
| API Host | Base URL of your SadaqahBox API | Yes |
| API Key | Better Auth API key for authentication | Yes |
Command: Dashboard
Main interface for managing your sadaqah boxes:
Command: Manage Presets
Configure quick-add presets:
src/
βββ api/
β βββ client.ts # Base HTTP client with timeout & retry
β βββ index.ts # API endpoint functions
β βββ cached.ts # Cached API wrappers
βββ constants/
β βββ index.ts # App constants & configuration
βββ utils/
β βββ cache.ts # Raycast Cache utilities
β βββ error-handler.ts # Error categorization & sanitization
β βββ security.ts # Secure ID generation
β βββ type-guards.ts # Runtime type checking
βββ validation/
β βββ schemas.ts # Zod validation schemas
βββ data/
β βββ quotes.json # Quranic verses & Hadith on sadaqah
β βββ quotes.ts # Quote types & utilities
βββ services/
β βββ quote-service.ts # Random quote generation
βββ dashboard.tsx # Main dashboard command
βββ box-detail.tsx # Box detail view
βββ create-box.tsx # Create box form
βββ edit-box.tsx # Edit box form
βββ add-sadaqah.tsx # Add sadaqah form
βββ manage-presets.tsx # Preset management
βββ collection-detail.tsx # Collection receipt view
βββ presets-storage.ts # LocalStorage for presets
βββ auth-client.ts # Better Auth client setup
βββ types.ts # TypeScript type definitions
The extension communicates with a SadaqahBox backend API. All API calls include:
x-api-key header| Endpoint | Cache TTL | Invalidation |
|---|---|---|
| List Boxes | 5 minutes | On create/update/delete |
| Get Box | 5 minutes | On update/delete |
| Stats | 2 minutes | On any mutation |
| Currencies | 1 hour | On currency changes |
| Currency Types | 1 hour | On type changes |
| Sadaqahs | No cache | Real-time data |
| Collections | No cache | Real-time data |
# Development mode with hot reload
npm run dev
# Build for production
npm run build
# Run linting
npm run lint
# Fix linting issues
npm run fix-lint
# Publish to Raycast Store
npm run publish
src/api/index.ts and wrap in src/api/cached.tsvalidation/schemas.ts for validationsrc/ and register in package.jsonAll user inputs are validated using Zod schemas:
"API Key is not configured"
"Request timed out"
"Failed to load data"
To see detailed error logs:
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)MIT License - see LICENSE file for details
May your sadaqah be accepted π€²
View and manage your sadaqah boxes
Manage your sadaqah presets for quick action
ββ§1-5 for instant preset actionsββ§β/β keyboard shortcutscrypto.randomUUID() for all ID generationx-api-key header with Better AuthDashboard β Main interface for viewing and managing all sadaqah boxesManage Presets β Configure quick-add presets for faster donation recording