I'm developing a small application using a PHP/Laravel backend that allows users to upload images. I'm exploring options like Cloudflare R2 or BunnyCDN for storage but need guidance on setting things up. How do you typically configure the storage and CDN for a project, and what's the best way to transfer account and billing responsibilities to the client once the project is completed?
3 Answers
For image storage, a common approach is to use serverless architecture with services like AWS S3, which is cost-effective for smaller volumes. You can set up the client's account from the beginning to streamline the billing transfer. Alternatively, consider SaaS solutions like TwicPics or Cloudinary, which handle everything through APIs, though they might be a bit pricier for small projects. I made a comparison tool for different providers if you're interested!
I feel you, S3's UI can be overwhelming. Once you set up the account, you could guide them through the process instead of having them handle it alone.
If you're dealing with smaller projects, Cloudflare R2 is a fantastic choice with no egress fees. For billing, having the client set up their own account from the start is ideal. Alternatively, you could manage it under your account and work in a markup for hosting fees, but that can complicate things. Sometimes clients are willing to pay a bit extra just for the simplicity of one bill, which might be worth considering.
The smoothest way to handle this is by creating the storage account under the client's name from day one. Configure everything so they have ownership—this avoids any complications later on when it comes to costs or client handover. Plus, anything that's in your account can become a liability if the usage spikes unexpectedly.

Thanks for the tool! I'm leaning towards Cloudflare R2 for its user-friendliness compared to S3 and the fact that it may even be cheaper. How do I navigate asking my client to set up an account and enter their payment details though? Is there a more seamless way to transfer the project?