calebjosue

calebjosue

Is it possible to render a static website within Phoenix Framework?

Is it possible to implement a static website using the Phoenix Framework?

I know it is overkill since there are some tools like nginx (I already was running my personal website on nginx).

Still, in the priv/static directory I have created an index.html file and in the PageController controller I have the following code:

defmodule TestTwoWeb.PageController do
  use TestTwoWeb, :controller

  def home(conn, _params) do
    # render(conn, :home, layout: false)
    conn
    |> put_resp_header("content-type", "text/html; charset=utf-8")
    |> Plug.Conn.send_file(200, Application.app_dir(:test_two, "priv/static/index.html"))
  end
end

And it works great!

However, if index.html happens to have links to other web pages within the website, I get an error about non existing routes for those web pages, since I haven’t defined no more controllers for these other web pages.

Is it possible to achieve this linkage to the other web pages without writing the controllers and defining the routes?

Thanks and happy weekend!


Caleb

Marked As Solved

derek-zhou

derek-zhou

If you really want to do this, the easiest way is to serve everything with Plug.Static. In your endpoint.ex you probably have this:

  plug Plug.Static,
    at: "/",
    from: :test_two,
    gzip: false,
    only: ~w(css images js favicon.ico robots.txt)

You can remove the only clause.

Also Liked

arcanemachine

arcanemachine

Someone was working on a Phoenix + static site tool a few months back:

https://github.com/jsonmaur/phoenix-pages

Mostalive

Mostalive

There is also Vox, talk here: https://youtu.be/F42B6AZ879Q?si=PIIpaBT7FkwK9qYq . fairly recent. static site generator in elixir.

calebjosue

calebjosue

@arcanemachine @Mostalive thank you for such recommendations, those resources seems great.

My website is online at https://calebjosue.gigalixirapp.com

Since this is a small project I really enjoy writing the HTML manually. If the thing becomes more complex I certainly will rely on code generation.

Thanks a lot again, and please do have a good night.


Caleb

Where Next?

Popular in Questions Top

hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New

Other popular topics Top

New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement