I am a church leader, and two weeks ago I asked my church family to join in with a national day of prayer by lighting a candle and putting it in their front window.
I posted a picture of ours on Facebook, and received a deluge of people posting / emailing / messaging me photos of their own candles. I collated them all in an album on Facebook, and people were really encouraged to feel part of the church family again - not simply alone.
Then I thought, how encouraging would this be if I could create a 'prayer wall' on our website, for people to share written prayers, photos, maybe even videos. I started to plan it out, and then discovered this, which gave me the impetus to actually write the code!
What it does
It is a WordPress plugin, which creates a custom post type 'prayer-wall'. An adminstrator can create multiple walls, each with a title and a short description of that wall's purpose.
Anyone can then navigate to the page, view the prayers, and add their own. Prayers (currently only text) are added as comments to the original page, hooking into WordPress's own approval system. Once prayers are approved by an administrator, they are viewable on the wall.
Each prayer also has an 'Amen' button, so even if people can't or don't want to write a prayer, they can still participate by praying the prayers themselves.
How I built it
I decided to use WordPress, as it's a) free and b) I've written plugins before. It also means it would instantly work with any church that uses WordPress - but be very easy to setup, and widely supported, for churches that don't.
I researched WordPress best practices, including i18n (though I don't have the skills to translate it myself, it could be!). I have developed WordPress plugins before, so used some previous code.
I also used PHP namespacing - with a view to merging this into my other WordPress plugin for church management.
The templating system works so that individual parts of the template can be overriden / changed by a theme developer.
The interface uses the latest Bootstrap (so it's mobile friendly) namespaced so the design shouldn't clash / be overriden by a theme, and jQuery (slim, to keep down page size).
Challenges I ran into
Working with unknown themes and styles was difficult - finding ways of the wall being displayed consistently.
Working within WordPress's comment limitations - I still haven't fully overcome this. The process of approving comments is useful, but when it comes to supporting photos / videos, I'm not entirely sure how to handle that yet, as the commenting system is not designed for that!
Also at the moment the individual prayers would be merged with other comments on the site - I am looking for a way to highlight them differently without completely rewriting the WordPress comment page.
Accomplishments that I'm proud of
Actually writing the thing - it was exciting being part of a hackathon (I only heard about it on 2 April) - and getting it from planning to working in two days.
And, to be honest, the 'Amen' button, which isn't exactly ground-breaking (pretty much the Facebook 'Like' button) suddenly made the project feel more like something that's living - it means the page will be different almost every time someone views it, as the prayers are added together.
What I learned
I normally write in C#, and my other WordPress templates don't use namespacing, so working with that was fun (my background is in writing PHP software).
WordPress is powerful - but sometimes difficult to make it do what you need! I had to adjust the way I was planning the project to fit with it - normally I'm in control of the whole stack so don't need to worry about that.
What's next for Together
I'd love a designer to look at it and give the design a bit of a lift - I've been focusing on functionality, so it uses default Boostrap colours etc. It looks a bit like a developer has designed it (!)... and could do with looking a bit more friendly.
Today (submission day) I will be working on supporting photos, and I hope it will be done in time - but if not, that's the next stage. Then videos.
Once I've done a bit more testing, I'll put it live on my own church's website and see what people think!
Try It out