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)
|> put_resp_header("content-type", "text/html; charset=utf-8")
|> Plug.Conn.send_file(200, Application.app_dir(:test_two, "priv/static/index.html"))
And it works great!
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!
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:
only: ~w(css images js favicon.ico robots.txt)
You can remove the only clause.
For newer versions of Phoenix the line of code to be commented is the following (Which seems obvious right? But well…):
# only: TestTwoWeb.static_paths()
Thanks a lot!
Someone was working on a Phoenix + static site tool a few months back:
There is also Vox, talk here: https://youtu.be/F42B6AZ879Q?si=PIIpaBT7FkwK9qYq . fairly recent. static site generator in elixir.
@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.