gabrielpoca

gabrielpoca

Still - A composable static site builder

Hello everyone!

I want to share with you something that I’m really proud of: https://stillstatic.io/

Still is a static site builder for Elixir! Do you need to build a static website? This is what you want! We wanted to take a step back from the complications of building websites nowadays and have something simple and that just works, but that you can extend and grow in complexity if you need. Here are a few highlights:

  • Throw some HTML, Slime, Markdown, CSS, JS, and images into a folder, and it will just work.
  • Out of the box, it works with Slime and Markdown, but you can use EEx almost anywhere, such as in CSS, JS, or HTML files.
  • There’s a development server that watches the file system and refreshes the browser when necessary.
  • There’s an error overlay in the browser where you can see errors, the stacktrace, and more information on the context that leads to that error.
  • There are helper functions to generate links and responsive images, to include other files, etc.
  • We just finished an integration with Snowpack GitHub - still-ex/still_snowpack: Snowpack integration for Still · GitHub, which means that you can use tools like TailwindCSS or any other NPM package.

As far as I know, there isn’t anything like it. The idea is to keep it small but add enough functionality to allow anyone to build a modern website without having to reach for something more.

There are already a few people using it, but we would welcome contributors and users to improve it further!
Also, if you check out the website, I hope you enjoy the posters :slight_smile:https://stillstatic.io/

First Post!

matthieuchabert

matthieuchabert

Hi,

This looks very promising. I never tried Still but I’ve heard really good thing about it, I’ll try it for my next static website :slight_smile:

Thank you for contributing!

Most Liked

gabrielpoca

gabrielpoca

I don’t know exactly what the integration with Pheonix would look like, but it’s something that’s on my mind, and I think there’s even an open issue for it. You can install Still in the app where you have Phoenix and compile the website priv/static during the build step of your deployment. Or you can compile it to anywhere in priv and use rules such as the ones we have the dev server to serve those assets. With that in place, I guess you can call anything from the templates. You could make queries to Ecto or something like that. I need to try this out.

gabrielpoca

gabrielpoca

Hello everyone!
Version 0.6.0 with all of the changes I mentioned above:

  • everything is faster.
  • templates are recompiled on refresh.
  • the elixir code is also recompiled on refresh.
  • better error handling.
  • better configs.

For the following version, we’ll be improving the docs and the examples. It would also be nice to have pre-compiled the templates as Phoenix does, but we need to check if that makes sense in Still, I feel that it doesn’t because we combine soo much stuff for a single template.

Any feedback and bug reports are much welcome!

gabrielpoca

gabrielpoca

Hello! It has been a while, so I thought I would write some updates:

  • Handling static assets is faster because we now only copy them to the build folder when they are modified. Ideally, we would serve them from the input folder and not copy them, but this is the first step!
  • There’s now support for a “data” folder. Essentially, data files in the “data” folder are easily accessible from any template. You can use this to load JSON, YAML, etc, to use on your pages.
  • There’s also support for pagination, which allows generating multiple files from a single template. This is the most powerful feature I added and allows for things like per-category pages in blogs. Any List can be used to create multiple pages.

There were a few more internal changes, but progress is slow. Still, I think this is pretty neat!

Last Post!

gabrielpoca

gabrielpoca

Hey! I haven’t, but it seems pretty simple to add. Although, from a user perspective, I don’t think it’s that different from just using EEx, right?

Where Next?

Popular in Announcing Top

Hal9000
Here is my first stab at this. README pasted below. https://github.com/Hal9000/elixir_random Comments and critiques are welcome. Thank...
New
bryanjos
Hi, I just published version 0.23.0 of Elixirscript. https://github.com/bryanjos/elixirscript/blob/master/CHANGELOG.md Most of the chan...
New
treble37
Just looking for a little feedback on a tiny helper library I built - Sometimes I find the need to convert maps with atom keys to maps w...
New
michalmuskala
Hello everybody. I have just released Jason - a new JSON library. You might be wondering, why do we need a new library? The primary foc...
New
josevalim
Yes, yet another parser combinator library! Most of the parser combinators in the ecosystem are either compile-time, often using AST tra...
159 19951 141
New
Flo0807
Hello everyone! I am excited to share our heart project Backpex with you. After building several Phoenix applications, we realized that...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New

Other popular topics Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 44778 311
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New

We're in Beta

About us Mission Statement