When to use a Nerves Poncho Project?

I’m playing around with my GrovePi and I’m looking to add or update some of the example projects in the Elixir grovepi library.

Some of the current projects don’t use Nerves and are made to run from Raspbian, for example the demo project for PivotPi. I was wondering if this is a better approach.

Should I always build the business logic of my projects outside of the Nerves application as a poncho project?

For a description of Poncho Projects, see

In the past, e.g. my All of the Lights project, I’ve kept the hardware related business logic in the Nerves firmware app and brought in my Phoenix app as a poncho project.

Can you also bring in the your hardware business logic as a poncho project and just use the Nerves app to burn and manage the firmware? What are the pros/cons of that approach?

I can’t say when to use a “poncho” style project, but i can say at a certain point of complexity, you will know you need it. I don’t usually bother with small scale projects as i find it to be intrusive and cumbersome to flip flop between. But i will say that starting with the multi-app setup is much easier than splitting an existing large app up. I’m in the process of splitting a large, mature app up into a ponch application right now. I started it in April and am nearing completion now.

743 files changed, in 213 commits has been a big commitment. I’d say if you think your project is going to be mature and maintained by someone other than you one day, start with Poncho