Uploads go to Heroku server which are then uploaded to S3 in a background job. We use imgix as a CDN in front of S3, so images are loaded faster and we can perform resizing/etc on-the-fly without having to generate them in advance. (Not as cost effective, but makes development a lot quicker.)
You could store an image in your database as a blob, but that's generally not a good idea as most databases aren't optimized for storing binaries such as images.
Considering Heroku has an ephemeral file system (i.e. you cannot persist uploaded files on the disk) your best approach is to upload the files to some online storage such as Amazon S3. (I think that's what you meant with CDN, but it's not exactly the same thing.)
The way it would work is the user uploads the file to your server (Heroku), and then your app uploads the file to your S3 bucket. Whenever you want to show the image you use the S3 URL.
Alternatively you could configure your S3 bucket such that the user can upload directly to S3 without the file ever touching your server. This generally provides a better user experience, but technically is a lot harder to achieve in a secure fashion. So my advice is not to bother with that until upload performance becomes a real issue.
Finally, the last option would be to use a SaaS that provides you with an upload widget, and takes care of uploading/processing/hosting files for you. Cloudinary has this feature.. This might be the easiest option, but probably the least flexible and most expensive.
Thanks Marc for the detailed answer. I would go with Amazon S3 option for now. BTW, How are you dealing with the images for WIP?
Uploads go to Heroku server which are then uploaded to S3 in a background job. We use imgix as a CDN in front of S3, so images are loaded faster and we can perform resizing/etc on-the-fly without having to generate them in advance. (Not as cost effective, but makes development a lot quicker.)
How does Cloudinary compare to Imgix?
I really like Postico for macOS.
You can find a list of macOS GUI tools here: postgresapp.com/documentation…
The second option seems most appealing to me. I might not need the updates so I don’t want to pre-commit to buying them.
Additionally, it makes it sound quite good that I not only get the current version but also any updates in the next year.
I’m not sure how I would feel about having to pay the same full price again the next year. I think I would expect a reduced price for another year of updates. So for example $99 to get the plugin with a year of updates. And added that year I can extend my license for $49.
Taxi rides from airport to hotel
Travel can be tiresome and the last kilometers are usually the trickiest. Finding the exact address of a hotel or Airbnb in a city you've never been to where people speak a language you don't understand. I often skip the public transit options and just get an Uber or Grab.
Accommodation
I don't need anything too fancy, but I feel much happier and ultimately productive if my accommodation is clean, ventilated, well lit, and overall is a place I enjoy being.
SaaS
It's easy to go overboard with this, and you need to be careful with recurring subscriptions. However, I'd rather free up my time and focus on the core business than investing lots of time in developing services I can just buy. Think Intercom, MailChimp, etc.
You want critique? Here you go: I'm not convinced a shared passion for the same musical genre is that relevant in dating. At least for me. I mean I like hip hop, but I don't really care if my date does too.
I do think there's room for more niche dating apps. Especially if it's something different from the same old swipe-and-chat model. Like if you could somehow incorporate the creativity of rap lyrics into the app, and possibly scare away anyone that doesn't appreciate that creativity, that might be interesting.
For example: your bio has to be a line, and the other person's opening message is supposed to rhyme with that. And maybe instead of regular chat, you co-write some lyrics. (I find that type of creative interaction in current dating apps much more enjoyable than regular chit chat, but it's not for everyone).
It seems like you are serving a couple dozen images from Amazon S3.
While S3 is great for hosting assets, it seems rather slow for serving assets. I think one of the reasons the images load so slowly is because S3 uses HTTP 1.1 which, unlike HTTP 2, doesn't support serving multiple requests in parallel. This means the browser can't start loading all images at once, but has to wait for image 1 to be finished, before it can download image 2, etc, etc.
Full disclosure: I'm not 100% sure that's the correct technical explanation, but based on my limited knowledge on the topic that's my best guess.
Okay, so what is the solution? Add a CDN like Amazon CloudFront to the mix. CDNs are optimized for serving assets like these. You will still host the images on S3, but let Amazon CloudFront take care of serving them to the browser.
I made this experiment once: wip.chat/weekly
It's a preview of what a weekly newsletter could look like.
Curious to hear your thoughts. Is it interesting? Would you prefer to see less or more? Right now it's fully automated. Does that work for you, or do you prefer emails with a more personal touch. For example me or a community manager summarising what you see in the email with human language and curation.
There needs to be a level of trust when working with contractors. Apart from that you can create separate keys for contractors or set up the app in such a way that it still works without having all the keys in place. (Automatically disable functionality reliant on keys.)
Or generate new keys after the contract ends.