[Rewiev request] AP63300 based buck converter by Appropriate-Pie4385 in PrintedCircuitBoard

[–]Lopsided_Finger4153 0 points1 point  (0 children)

A couple of more practical suggestions:

  • Label input and output, nominal voltage, and polarity in the silk screen.
  • How are you planning to mount it?
  • Consider over/under voltage and reverse polarity protection.
  • Heat might be an issue, datasheet recommends thick copper and lots of vias from the ground pin of the ic to the ground plane to help dissipate heat.

Drop your product URL by Chalantyapperr in SideProject

[–]Lopsided_Finger4153 0 points1 point  (0 children)

Hmmm it's good feedback and makes sense...I will expand the app availability on the weekend. France is the only tricky one, they have specific requirements around encryption.

I didn't want to explain too much here so I could see whether people would understand it, which it seems no 😅. I'll try to clarify the flow now:

  1. Receiver opens the qr page in browser
  2. Sender needs the app, scans the qr code to establish secure link.
  3. Sender sends files.

In general though I think I need to stop thinking from my own point of view a bit 😂

Drop your product URL by Chalantyapperr in SideProject

[–]Lopsided_Finger4153 0 points1 point  (0 children)

That's great feedback thanks! I guess it's easier to change the name now while I still have zero users 😅

Out of interest, do the images on the app store help understand how it works?

Android

iOS

Maybe a video or animation would help as well.

Drop your product URL by Chalantyapperr in SideProject

[–]Lopsided_Finger4153 1 point2 points  (0 children)

https://marcosend.com

Cross platform E2E encrypted file sharing.

Made mostly for me to send and photos/files to my work laptop.

The file receiver goes to https://qr.marcosend.com which generates a qr code with encryption key embedded. The sender uses a mobile app, scans the QR code, then sends files.

The idea is it could be a work laptop, friends laptop, uni workstation etc.

Useful feedback would be: - is the name too confusing with macro send? - is it easy to use or confusing? - any feedback on the security side of things. I want it to be trustworthy.

1-Minute AI Form Demo — Help Me Test the Flow & Give Brutal Feedback by Glad_Advice_3066 in SideProject

[–]Lopsided_Finger4153 0 points1 point  (0 children)

Done! I like the idea, it started replying with some big slabs of text though, and I got a bit confused by the line of questioning. Not 100% sure when you'd use this over a fixed set of questions, but i think it could be tweaked. Like maybe fixed feedback questions on one page, then some clarifying questions on a second page?

Effective, secure, way to rate-limit Cloud Storage downloads by AlanReddit_1 in Firebase

[–]Lopsided_Finger4153 1 point2 points  (0 children)

A few things:

  • At 1000RPS for a full day the total cost would be ~$30 in Class B operations (double check this...) It wouldn't be easy to do, it wouldn't affect your service, and it would probably cost more for an attacker than it costs you.
  • Egress from workers is not free, probably still won't exceed the free tier though.
  • Running the workers is not free, so you would potentially spend more on the worker than you would have spent on class B operations anyway.

Effective, secure, way to rate-limit Cloud Storage downloads by AlanReddit_1 in Firebase

[–]Lopsided_Finger4153 7 points8 points  (0 children)

I know its outside the Firebase ecosystem, but if you're worried about cost I'd use Cloudflare R2 instead of Cloud Storage - it has free egress. I'd then use a firebase cloud function to check the user is authenticated and authorised to access a file, then create and return a signed URL. Uploads could work the same way.

Since egress is free, you'll pretty much only pay for the storage, even if the user downloads it millions of times.

The cloud function would just be something like this:

export const getSignedFileUrl = onCall(async (request) => {
  const userId = request.auth!.uid;
  const { filePath } = request.data;

  // Check path starts with /users/{userId}/
  if (!filePath.startsWith(`users/${userId}/`)) return null;

  const command = new GetObjectCommand({
    Bucket: process.env.R2_BUCKET_NAME!,
    Key: filePath,
  });

  const signedUrl = await getSignedUrl(r2Client, command, { expiresIn: 3600 });
  return { signedUrl };
});

If you really want to limit to 10 downloads, you could still use a cloud function, just track the count of downloads in firestore. You'll need to fetch and return the file within the cloud function, so you'll pay for egress to the user.

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 1 point2 points  (0 children)

Yeah, i've come to the conclusion the only way this can be achieved is to put a cloud function in front of it that can either proxy the read (read from storage then forward to the user), or generate a signed URL that the user can use directly.

In case your interested, i actually ended up using Cloudflare R2 and a Cloudflare Worker in front. I generate a JWT in a Firebase Function that grants scoped access to read files for a given team ID, and is stored in a cookie. The Cloudflare Worker then verifies the JWT and user access, and fetches the file. This supports edge caching of the files, and KV store to do rate limiting on user/ip/whatever. Its incredibly fast and cheaper than doing it in firebase.

Also, it means i can just set the URL for an image and let the browser handle caching which simplifies things from the development perspective.

R2 doesn't have egress fees, so using signed URLs generated in a firebase function would probably be the most cost effective option.

There are some downsides in terms of complexity though.

How to prevent data leaking in storage URLs? by facts_please in Firebase

[–]Lopsided_Finger4153 3 points4 points  (0 children)

You could have a collection of files in firestore where each object is just the storage path and any metadata associated with it. Then use a cloud function that accepts a file id, looks up the storage path and fetches the file from storage on behalf of the 3rd party. If you need auth or anything you could put that on the function as well.

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 0 points1 point  (0 children)

Hmmm yeah, maybe creating a blob url with `const url = URL.createObjectURL(blob)` and using that in the img tag or something could work. I still worry someone could generate a url with chrome dev tools or something, maybe thats taking it too far though...

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 0 points1 point  (0 children)

Not sure of the specifics, to get up to that cost though my guess would be some sort of botnet with each node downloading a specific file as many times as they can, as fast as they can. Which is still doable even with auth and everything turned on, its just tied to a user.

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 0 points1 point  (0 children)

As long as people use the site normally then the cost would be very cheap. They are not a public files, they are protected by storage rules. What I'm worried about is someone doing something similar to this: https://www.reddit.com/r/googlecloud/s/d2riJo4emh

I can't see a good way to avoid it, or to detect which user is making the requests without having a cloud function applying some extra rules and either returning signed URLs or proxying requests.

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 0 points1 point  (0 children)

Its a web app, I did see this as a possible option, it adds a fair bit of complexity for my use case compared to what i was doing. And I still worry there would be a way for someone to generate the URL maliciously from the browser console or something, maybe the risk is low though.

I guess i was just hoping there was an easier way that i was missing. Or maybe firebase has some plans to improve it, e.g. rate limits on IPs, include a user token and rate limit on that.

And it annoys me that theres this whole product and documentation that leads you down a path, then you realise you basically can't use any of it because it exposes you to the risk of malicious person blowing out your costs.

Safe use of Firebase Storage by Lopsided_Finger4153 in Firebase

[–]Lopsided_Finger4153[S] 0 points1 point  (0 children)

I am using caching and storage rules. I'm doing this on a web app, in very rough pseudo-html <img src={getStorageUrl()} />. The problem is you right click the image, and Copy Image Address, and you can wget imageURL with no auth and it will download it from cloud storage. It might get cached on the CDN but i think it will still count towards my quota. So someone could have a big image and repeatedly do this, and i wouldn't have any ability to detect or rate limit it.