factsfinder

factsfinder

I've created a API only Phoenix framework boilerplate. Check it out on github factsfinder/phoenix_api

Hello everyone, I’ve created an API only phoenix boilerplate. You can check on github here: GitHub - factsfinder/phoenix_api: This is an api only phoenix framework boilerplate which supports graphql, authentication and aws/backblaze s3 and thumbnailing out the box as of now. · GitHub

I’ve come across elixir and Pheonix only an year ago. Decided to make a boilerplate out of my current side project’s phoenix api.

Hopefully it will be useful or save time of atleast one of ya.

Thanks and keep drinking elixir everyday :slight_smile:

First 5 of 5 Posts Switch mode

sergio

sergio

I notice you’re using Backblaze instead of S3. Something I also wanted to look into, can you describe that process a bit more? Is it doing a direct upload to backblaze? Or does the file pass through the server?

factsfinder

factsfinder

Sure. Using Backblaze cause b2 cloud storage is s3 compatible Low Cost, High Performance S3 Compatible Object Storage and 4 times cheaper than aws s3.

I’m not using any other server to upload files to backblaze. All the implementation is right there in the repo.

So I’m just using a combination of these libraries:

arc => GitHub - stavro/arc: 📎 Flexible file upload and attachment library for Elixir · GitHub
arc_ecto => GitHub - stavro/arc_ecto: An integration with Arc and Ecto. · GitHub

ex_aws => GitHub - ex-aws/ex_aws: A flexible, easy to use set of clients AWS APIs for Elixir · GitHub
ex_aws_s3 => GitHub - ex-aws/ex_aws_s3 · GitHub

Please note that in case of ex_aws and ex_aws_s3 I’m using forked versions that I made changes to support backblaze.
Here are forked ones that are being used right now.
https://github.com/factsfinder/ex_aws_s3
https://github.com/factsfinder/ex_aws

Pls check the lib => api => uploads => image.exs file to get a much better idea.

Let me know if you have any questions.

maz

maz

Does ex_aws support backblaze now? Or should I use your fork still?

chrislaskey

chrislaskey

It doesn’t appear so @maz, the ex_aws and ex_aws_s3 libraries only have support for the official AWS regions.

I ended up following the excellent work @factsfinder did in his original fork, just done to the latest main branch of each of these repos. If it helps for your own reference, here’s the forks:

I use them in a Phoenix application by updating mix.exs to include:

{:ex_aws, git: "https://github.com/chrislaskey/ex_aws.git", branch: "main", override: true},
{:ex_aws_s3, git: "https://github.com/chrislaskey/ex_aws_s3.git", branch: "main"},
{:hackney, "~> 1.18"}

And in config/runtime.exs:

config :ex_aws,
  access_key_id: [System.get_env("AWS_ACCESS_KEY_ID"), :instance_role],
  secret_access_key: [System.get_env("AWS_SECRET_ACCESS_KEY"), :instance_role],
  region: System.get_env("BACKBLAZE_B2_REGION")

Where the value of BACKBLAZE_B2_REGION in my case is "us-west-001".

And as a quick sanity check things are working, I use this command to from the REPL to verify a file download from the existing B2 bucket is working:

ExAws.request(ExAws.S3.download_file("nameofmyb2bucket", "hello.txt", "world.txt"))

Note: at the time of writing, I only updated my forks to support "us-west-001" and "us-west-002". If you need other Backblaze B2 regions, you’ll need to add them following the same pattern.

maz

maz

Looks like it is actually possible.

I got a presigned url from backblaze using above ex_aws_s3 config

— All posts loaded —

Where Next?

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 91561 914
New
byu
@chrismccord : I just saw the Extract AGENTS.md from Phoenix.new into phx.new generator commit to the phoenix project. My initial shotgu...
New
arcanemachine
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
AstonJ
Just a general thread to post chat/news/info relating to AI/ML stuff that may be relevant for Nx now or in the future. Got anything to sh...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
bjorng
We want to introduce a new native datatype to Erlang: native records. Although replacing all tuple records with native records is not our...
New

We're in Beta

About us Mission Statement