Billable is personal invoicing software that allows a user to input information about their business entity, the client, and items, quanitities and prices. It calculates the total, and includes the ability to add tax.
- Upload logos
- Print to PDF
- User accounts via Passkey authentication
- Save invoices to Durable Objects
Built with RedwoodSDK.
pnpm install
pnpm devThis project uses Alchemy to generate the wrangler.jsonc configuration file. Alchemy is used only for configuration generation - deployment and development still use the standard tools.
To regenerate the wrangler.jsonc file after making changes to infrastructure:
npm run generate:wranglerThis runs alchemy.run.ts, which:
- Defines the Cloudflare Worker, R2 bucket, and Durable Objects
- Generates
wrangler.jsoncwith the correct bindings and configuration - Uses a transform function to adjust the generated config for production use
alchemy.run.ts: Defines the infrastructure resources (Worker, R2, Durable Objects) and usesWranglerJsonto generate the config filealchemy.dummy.ts: A minimal worker file used during config generation (not used in production)- The generated
wrangler.jsoncis then used by Wrangler for deployment
- Development: Still uses
pnpm dev(Vite) - no changes to your workflow - Deployment: Still uses
wrangler deploy- Alchemy only generates the config - Config Updates: When you modify infrastructure (add bindings, change resources), run
npm run generate:wranglerto updatewrangler.jsonc - The Alchemy script uses temporary resource names (
billable-alchemy) to avoid conflicts with production resources during generation
