DEV Community

Cover image for šŸš€ Introducing `neo`: A CLI Tool for Your NeoHaskell Projects
Nick Tchayka for NeoHaskell

Posted on

šŸš€ Introducing `neo`: A CLI Tool for Your NeoHaskell Projects

We're excited to announce the release of neo, the official command-line interface for NeoHaskell ā€” a growing dialect of Haskell focused on clarity, composability, and modern tooling.

This release marks a major milestone: for the first time, you can create, build, and run a NeoHaskell project from the terminal using a single tool.

āš” What Can neo Do?

The current version of the CLI supports three core commands to help you get started fast:

šŸ†• neo new -n "my-project"

Generates a new NeoHaskell project scaffold with:

  • A MainModule.hs entry point
  • A neo.json configuration file
  • A clean layout with everything you need to start writing NeoHaskell code

Just run the command and start codingā€”no boilerplate or manual setup needed.

šŸ”Ø neo build

Compiles your project using NeoHaskellā€™s internal build pipeline.

āš ļø Note: The build process is currently slower than ideal.

Weā€™re aware of the bottlenecks and have improvements scheduled for future sprints.

ā–¶ļø neo run

Runs your compiled project. This command wires everything together and launches your NeoHaskell program with zero configuration.

Perfect for quick feedback loops and iterative experimentation.

šŸ§Ŗ Try It Out

You can install neo and create your first project in seconds:

curl --proto '=https' --tlsv1.2 -sSf https://sh.neohaskell.org | bash
neo new -n "my-project"
cd my-project
neo build
neo run
Enter fullscreen mode Exit fullscreen mode

šŸ›¤ļø Whatā€™s Next?

With the foundational CLI in place, the next sprint will focus on:

  • šŸ“¦ Designing the project structure and conventions for NeoHaskell's built-in event sourcing framework
  • šŸ§± Scaffolding support for events, commands, and read-models
  • āœØ Adding commands like neo generate to create components and wire them into your application automatically

The goal is to make event-driven apps idiomatic and ergonomic in NeoHaskellā€”without requiring external libraries or complex setups.

šŸŖž Retrospective on Sprint 1

Well, Iā€™ve completed the first sprint of NeoHaskell. The experience has been pretty goodā€”it gave me a block of time where I could say, ā€œOkay, I commit to these tasks,ā€ and that helped me avoid falling into the endless loop of optimization and perfectionism, which is probably what kills a lot of projects like this.

Itā€™s also helped a lot in starting to treat NeoHaskell as an investment project. Ultimately, itā€™s something Iā€™d really like to see succeed, and ideally, Iā€™d love for it to become a tool I use to create productsā€”something that allows me to build full-stack apps ten times faster than any tool currently on the market. Of course, it will have trade-offs like any toolā€”thereā€™s no silver bulletā€”but a boost in productivity is very likely. This is something I already achieved when I worked with the Booster Framework team, and I think integrating that into a programming language with the vision of NeoHaskell is absolutely possible.

Back to the sprint: things I liked ā€” I enjoyed giving the sprint a theme. The goal of this first sprint was to have an MVP of the NeoHaskell CLI tool. And an MVP is just thatā€”minimum. Like LinkedInā€™s former CEO said: if you're proud of what youā€™ve just launched, then you launched too late. And Iā€™m definitely not proud of the MVP of the NeoHaskell CLI šŸ˜… but hey, thereā€™s now a tool that, despite being slow and not offering the best user experience yet, allows you to compile, run, and create NeoHaskell projects easily.

Also, the installer now supports a one-click install and integrates with Nix. So behind the scenes, there's already quite a bit of machinery in place to make future configuration and extensions easier.

Things that didnā€™t go as well ā€” Iā€™m not sure if a two-week sprint is the right cadence. Less than that feels too rushed to match the theme, but two weeks might be dragging it a bit too much. Still, Iā€™ll stick with two weeks for now and see how it goes.

For the future, I want to keep the practice of having just a few tasks in each sprint. This time, it coincided with a very intense work period, which drained my energy to contribute as much as I wanted. But thanks to keeping the sprint scope really tightā€”and keeping the tasks smallā€”I was able to make it satisfying.

For the next sprint, I want to start rethinking the core framework of NeoHaskell. Right now, itā€™s heavily inspired by Elm, and while thatā€™s fine, Iā€™d like to shift more toward event modeling. That could make it easier to design and architect projects. These two approaches arenā€™t mutually exclusive, of course, so for Sprint 2, the theme will be to have at least a basic event modeling plan in place.

Iā€™m not totally sure how Iā€™ll break that down into tasks yet, especially in terms of code, but at the very least Iā€™ll work on it and hopefully generate some documentation around it.

To sum up Sprint 1: aside from deprioritizing the REPL task (because I think it's more valuable to focus on solidifying the event modeling / event sourcing foundation for now), Iā€™m happy with the results. Once that base is solid, the CLI structure can be rethought. We might even get to a point where thereā€™s a neodev command to run the project in development modeā€”which would include executing the main, and potentially having a REPL for exploring and testing functions interactively.

In the future, this could even open the door to more tooling around event sourcing, like a debugger that works like a time machine, or a way to visualize the project architecture.

But for now, there is a working CLIā€”itā€™s not perfect, but it works, it installs, and it does what itā€™s supposed to. For the next sprint, Iā€™ll be doing the same: building something that works as a solid base, this time for the NeoHaskell framework itself.

Thatā€™s the updateā€”I hope you're as excited as I am. Letā€™s keep going and bring the best programming language ever into existence.

Want to help shape the future of NeoHaskell? Weā€™re building it in the openā€”contributions, feedback, and ideas are all welcome. Jump into the GitHub repo or join our Discord server to connect with the community.

Heroku

Amplify your impact where it matters most ā€” building exceptional apps.

Leave the infrastructure headaches to us, while you focus on pushing boundaries, realizing your vision, and making a lasting impression on your users.

Get Started

Top comments (0)

Image of DataStax

AI Agents Made Easy with Langflow

Langflow is the easiest way to build and deploy AI-powered agents. Try it out for yourself and see why.

Get started for free

šŸ‘‹ Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someoneā€™s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay