Over the past two months I’ve written an implementation of the RealWorld project for Halogen. You can see all 3,000 lines of the completed project here (pending some tests):
It’s the only project I’m aware of that showcases how to build a non-trivial application in PureScript. It follows the ReaderT pattern and comes with a long-form guide (still in progress) explaining the ideas and principles behind the implementation.
I am nearly ready to submit the project to the official RealWorld project by Thinkster, a 20,000-star repository that lets you compare and contrast the same application implemented in different frameworks. It’s a fantastic opportunity to showcase PureScript and Halogen to a wide audience.
Before I do that, however, I would love to make sure I really am showcasing the best of PureScript!
Call for technical review (Halogen users)
I’m not quite ready to share this project widely or submit it to the Thinkster repository. I would like to get a few other folks’ eyes on the project to help call out places where:
- I have written something clunky or verbose, which could be done better
- I have written something unnecessarily complex, which might scare off beginner-intermediates
- I have done something that typically wouldn’t be done in the real world, OR I have failed to do something that would be done in the real world.
- I have done something incorrect and diverged from the RealWorld spec
I understand that technical / code reviews are a big time investment. But even a quick glance over the project might lead to an issue jumping out at you. If you can spare 15 minutes to read through some of the key parts of the application and see what you think, it could lead to meaningful improvements to this resource.
Here’s the link:
RealWorld Halogen
Next steps
I plan to release the project officially in the new year (hopefully Halogen 5 doesn’t come out before I do!). The guide will be updated and completed in that time, and so by mid-January we should have a real world demonstration application ready to go for Halogen!