I’d really like to go back and update elm-spa-example. … After a while, it’s like, yeah this is never happening. ~ Richard Feldman at 3:23
Fast-forward to now, circa April 2024, and unsurprisingly, the repository has been unmaintained for 5 years and the demo is broken in a few places. So, I took it upon myself to rebuild RealWorld.
About
dwayne/elm-conduit is built from scratch using the full power of Elm, no holds barred. This is how I would architect and build a reliable, maintainable, and scalable production-ready Elm web application.
Where can I find an open-source example of an Elm Single Page Application that is well-maintained, uses the latest Elm libraries and tooling, and has a build and deployment story?
P.S.Thank you @rtfeldman. You’ve done a lot for Elm already. Don’t worry about elm-spa-example. Keep focusing on Roc and your family. That’s higher priority.
I signed up with username simon/favourites. I don’t seem to be able to access my profile page, instead I see the favourites of the user simon. Also tried simon?cool but that was problematic too. Dang it, both my favourite user names!
Let me start by saying that I’m happy that there are multiple implementations of RealWorld using all the various frameworks that Elm has to offer. This helps developers get up to speed with those frameworks and I’m all for it. Keep them coming.
Now, before I decided to work on this project I surveyed the landscape to see if my solution was needed. Every other solution you all are sharing I already personally code reviewed and tested by using the application. What I learned throughout is that NO EXISTING implementation is production ready, 100% complete (in terms of meeting the spec), or has useful tests.
N.B.I’m not picking on @dillonkearns implementation in the video below but I’m just using his implementation to make the case about not being production ready and missing features. I could have used any of the previously existing solutions (even rtfeldman/elm-spa-example) to make the point.
Where’s the link to the user profile in the navigation?
The tag input feature, which broke the application in the video above, is interesting and subtle to implement in Elm. Maybe that’s why all previously existing implementations ignore it. And, when they do implement it, a comma-separated list is used instead of the pills as specified by the spec. In a weird way, this makes Elm look somewhat inferior to other solutions, for e.g. in React, since those frameworks all get that part of the spec right and it’s a non-issue.
I wanted 100% coverage of the RealWorld spec. Tag input MUST be implemented.
I wanted examples of useful tests used in a web application context.
I wanted someone coming from React/Vue or whatever other JS framework to see that Elm is fully capable of building the types of UIs that they are accustomed to. Even though this goal was out of my control.
No other implementation that I reviewed ticked those boxes.
Sorry if my earlier comment came off as negative, I’m very happy for all of these too exist! I think it’s more useful than just a single example, and I hope that it can help people to understand the variety of ways to build with Elm.
Yes, my version tries to be a port that is faithful to rtfeldman/elm-spa-example, not the realworld spec itself, so things like pill UI are out of scope because it would diverge from that example. I think for many of these framework demos that is the goal since many people are familiar with rtfeldman/elm-spa-example so it’s a useful reference point for comparison.
I think it’s a great idea to have a repo that aims to address any missing parts of the realworld spec
@dillonkearns and @wolfadex It’s all good. I just thought I needed to be clearer about my intentions with building yet another RealWorld. I know it’s easy to get the wrong idea with tone etc, via a textual medium.
Great work! Sounds like a useful implementation indeed. Just FYI after signing up I had a glitch with the signup form staying visible (screenshot below). Switching to another page and back fixed it.
@sylbru That’s interesting. However, I’m not able to reproduce it. If you’re able to reliably reproduce it then it would be helpful if you can file an issue with the steps. Thanks!