Contact form & email deployment project

(Jon) #1

I think that folks here might be interested in my current tech project. Since I am still a contractor, I am taking a voluntary break from full-time client work to build my own software, with the hope of turning something into an income stream.

Some of you may recall that I was building a recruitment search engine. I very much believe that idea still has legs, but I wonder if I bit off more than I could chew, so the idea is postponed a bit while I build something rather simpler. I am minded presently to build something in three months, rather than committing to something that could take substantially longer. :blush:

My current project was inspired by one of the most common difficulties I see on Stack Overflow - beginner programmers trying to develop and deploy simple email-based forms on a LAMP server. That ought to be the easiest thing in the world, but email is a bit of a “black box” - you use a program to send an email, and then try to debug it. Did the mail() function get called? Were the parameters correct? What PHP system did it talk to to hand off the mail? Sendmail? SMTP? What special idiosyncrasies does your terrible consumer-grade host suffer from when it comes to sending email? Has it got caught in a spam trap? etc.


So, I am building a little system to help with that. It presents a web-based wizard-style interface to take a bunch of details, and then deploys a working and tested email form on the user’s server. You can even sign up for a completely free LAMP host these days, so I’m using one of those as a test bed.

My system works by allowing the user to deploy a sequence of test scripts to check the system meets the minimum server requirements, what email sending protocol to use, and then finally deploy a real app and send a test message to it. My intention is for the base system to always be free, and then to charge for add-ons.

The basic system will allow users to send an email to an admin address, and another email to the user, customisable in a text-based designer. The deployed form will have a number of fields, and optionally a CAPTCHA device. Upon clicking a button it will call the freshly deployed script via AJAX to send the email(s). It’ll add a rate-limiter too, to stop spammers having a field-day.

My intention is that once users are happy with their basic system, they can use it as a base to hack upon further if they wish.


So, that’s the free stuff. I’ll run that for free for a few months and open a dialogue with users to see what they want. I think people would pay £5 for a MailChimp/CRM integration, and the same for a WordPress plugin. A “pro” account for WordPress designers, so they can log into my system and it remembers all their client’s deployment details/choices, might also be worth looking at.

I am as yet undecided if my best pricing model is low-cost, high-volume, or whether I should be choosier about by customers and work on a higher-price model.


I’m a good way through the project, and it’s fun to build. I’m using a micro-services architecture, everything is split into Docker containers, and I’m using cool new stuff like Traefik. It’s just managed with Docker Compose for now, but I guess I will move to Swarm or Kubernetes once I have worked out what my deployment needs are. The front page is a SPA (jQuery, tell me off now) and mostly uses Web Sockets to communicate. I’ve not used WS before, but I :heart_eyes: love it. Pushing data to a web app, supported across desktop and mobile!

I wish I knew how to get user feedback without actually building stuff - I am rather envious of the cool kids in San Francisco who put up a holding page, somehow attract an email list of several hundred people based on nothing more than vapourware, and then build the damn thing in a week! So this post is partly my expressing interest in critical feedback.

Is there a market for people paying for automated deployments? Would beginners struggling to build stuff rather struggle on and learn, and suffer the security consequences? Would the culture of everything-for-free trip me up, and people would only use the free tier? Would people trust my system with their server credentials? Any thoughts welcome.

Happy New Year - what are your resolutions?
(Andy Wootton) #2

@halfer I’ve only read your message once, as most people will, and I don’t understand what this email/form use-case is. Obviously other people might.

If someone is trying to learn to program then I think they are either:
a) learning out of necessity because they can’t afford to pay or don’t understand that programming is hard. Writing code is a means to a different end. These seem like your potential customers but they may not have any money, or
b) want to know how to program and this is an exercise, in which case they seem likely to want to do the whole job, or at least be helped to understand everything that’s going on.
I think they might be 2 different versions of the problem.

(Jon) #3

That’s a good point, and of course I need to understand my users. Whilst I mentioned folks who are learning, I get the impression they’re learning as a means to an end, rather than because they want to be software engineers. For example, there’s plenty of HTML designers and WordPress hackers who aren’t programmers (and don’t much wish to be either) but they have to dabble in email sending on LAMP servers because their clients ask them to.

Anecdotally, I notice a lot of these folks are in India, which may influence pricing decisions. However, where I will get my customers from, after I set up an advertising campaign, is yet to be discovered.

(Dom Barnes) #4

Sounds a bit like FormKeep+Sendgrid?

(Jon) #5

I’d not heard of that, but yes, it sounds similar to FormKeep. However I’d say their target market is design agencies, and theirs is a hosted service - which will set the payer back USD59/month on the low tier - ouch!

The starting point for my service is free, since it is self-hosted. I’m planning for the build wizard in mine to be public too, though it needs a verified email to take it to deployment.

Thanks for the tip though, will add it to the research pile!

(Stuart Langridge) #6

I may be missing something here. But your target user is someone who doesn’t know how to set up their email sender, but does know how to deploy docker containers and already has hosting where they can deploy them?

On first read I thought it was, y’know, a PHP thing to drop onto convenient shared hosting, and I can absolutely see it as useful there! (Especially if it tries out a bunch of stuff and tells me “to set this up, do this”.) But I’m not sure how big the demographic you’re aiming at actually is, unless I’m misunderstanding…!

(Jon) #7

Heh, sorry - probably just my poor description. Everything is automated for the user - the Docker stuff is how the code on my server works (just getting excited over shiny tech). They don’t see that, and what is deployed for them is a great deal simpler - basically they just get a LAMP application.

All the user needs is a usernames and passwords for their host and a bunch of other stuff they enter into a wizard. They do need sufficient nous to know they need a web host, of course, but if a user can’t cope with that, they probably need a cloud solution, like the one Dom refers to.

As for signing up for a host, there are free ones around, so it takes a couple of minutes and no payment card is needed.

Yeah, I’m going on a bit of hunch! I see this problem a fair bit, but I am not sure how I would quantify it yet.

(Jon) #8

Folks here may be interested in my progress on this project, and to see what an early incarnation looks like before feedback and alpha testing. The frontend is organised into a wizard-style UI, and the user needs to step through most screens in order to complete it.

Here’s an automatically-stitched-together image output by my integration tests (the control rendering is a bit rudimentary, that’s PhantomJS for you):

I’m about 90% done on the wizard and the deployable LAMP app is rather “early days”. The first version will not have paid options while I work out what users want (custom form validation? JS-only frontend with PHP server API? easy templating for non-devs? integration with MailChimp/CRM? etc).

I expect it will be a month or two before I can ask folks to kick the tyres on a real web app, but getting there…

(Jon) #9

I am quite excited that this project is nearly ready to unveil. Over the last week (while ostensibly on holiday!) I have been writing some documentation - past projects I have been involved with have left alpha testers a bit in the dark because I’ve not offered enough help to get them started.

A last minute walk-through has, of course, revealed a number of UI hiccups. I will fix those over the next couple of days, and then I shall be very grateful if any folks would be willing to kick the tyres for me. You’ll need a web server account on a shared/dedicated LAMP host (the free host linked in a post above is fine) and an SMTP account as well. Established folks on this board can PM me for an SMTP account, if you don’t have a low-value one to hand.

Sendmail is supported as an alternative to SMTP, but free hosts don’t tend to support the PHP features that make using it possible. So, if you have a PHP hosting account with Sendmail, I’d love to know how you get on. I will see if I can find a free host that supports this.

Watch this space! :persevere: :smiley: :nerd_face: :drum:

(Jon) #10

Ha, so much for “nearly ready”. On the basis that software is never “done”, here it is. I did a very smooth deployment today (only one minor bug) and I think it is time I let folks offer their opinions if they wish, and - for anyone who is curious and has 15 minutes to spare - to give it a go.

Test app

Notes to alpha testers

General docs (roadmap, customisation notes for devs, etc.)

At this early stage, I recommend using low-value accounts for deployments. You can get a free PHP hosting account here and for SMTP, get a new GMail account. Gmail specific settings are noted here.

Thank you to anyone for feedback!

(Daniel Hollands) #11

Some feedback:

  • The X’s next to the items on the navigation make it look like they can be closed. I realise, they’re meant to be a status indicator to show progress, but I think an X is the wrong symbol. Maybe have nothing at all to start with, then show the tick with the page is complete?

  • I’m not sure the buttons on the end of the input fields communicate their intent very well. If not for accidentally hovering over them and seeing my cursor turn into a hand, I’m not sure I’d have realised I’m meant to press them.

  • The automatic connection to the web server makes me nervous - and I know you. That, along with the fact I typically don’t have any password credentials for the servers I use - it’s all private keys and SSH. That said, I’m not sure I’m your target audience.

That’s as far as I got with it. I might sign up for a throwaway digital ocean account and do some further tests, but for now I need to do some work.

(Jon) #12

Thanks muchly @LimeBlast - good thoughts.

  • There is probably a better icon for incomplete tabs, I’ll take a look.

  • Fair enough on the buttons, I’d not considered that. The merged input/button thing is a Bootstrap design called input groups, but if it causes confusion I’d happily rethink it.

  • The issue of trust is likely to be my biggest hurdle, yes. I’ve written about how my system works to help alleviate that, and I have a number of plans to help reassure potential users. For example, I’d like a live banner that says:

    Missive has made 3,457 successful deployments so far.

    I’d also be happy to offer the software for people to download and use themselves, but I’ve been working on the assumption that a single control panel offers beginner users the convenience they need.

    If I went down that route, I’d release the deployable app as open source and design some remote-side configuration forms to do mail server testing. My app would then just be a portal to buy add-ons.

    A “best of both worlds” might be to get users to deploy the set-up files to their web server, including a time-limited remote access key that allows me to reconfigure/deploy new things via PHP. That will mean they can still use the interface on my side. However, I’d still need to handle their mail server credentials - not much of a way around that.

(Daniel Hollands) #13

It seems similar to Cloud 66, where they provision and deploy the servers for you. The difference is, they’re fully in charge of the servers, and would only have access to anything they put on there in the first place.

You’re looking to add software to an existing server, which already has other purposes.

I think some folks, myself included, would probably prefer to install the software myself.

(Jon) #14

Yeah, although that sounds like it’s for VPS/cloud servers. My system is rather more like Fantastico, which is often bundled with cPanel.

Yep! I do overwrite checks, and the system installs to a missive-app folder, which is unlikely to be taken by something else. But, it’s a fair point.

(Jon) #15

I’ve pointed a UX designer at this page, and received an excellent page of feedback. The short form is:

  • Make it clearer that the orange buttons are meant to be tabs
  • Avoid orange colouring in tabs to mean “incomplete”, as that’s usually used as a danger indicator. Grey is probably better
  • As per Daniel’s notes, the X in tabs is misleading
  • Enforce the linearity of the wizard more strictly, even if that means hiding incomplete sections (this is a tough one for me, as I like openness)
  • Text is too chatty and needs to be cut down - too much information for readers to process
  • Errors are either too verbose or too technical - make them short, and consider when a visual indicator would do on its own
  • When a system is no longer required (e.g. a CAPTCHA that is used once) it is sometimes appropriate to hide it, to reduce visual clutter

(Daveyon Mayne) #16


(Jon) #17

I’ve been thinking about that, and here is how I would deal with it.

As an alternative to supplying credentials, a user can upload an installer package themselves, which I can subsequently control over HTTP. This package contains a unique shared secret that permits me some limited remote-control of their installation (in fact, I use this technique already for a number of other things, so this would be just one more use of it).

Here’s a quick mock-up of what it might look like, using a tabbed interface. Self-installation first:

And the current credentials approach is available in the second tab:

So, that will allow users to still run through the system completely, with the minor task of uploading one installer file, without giving away their web server credentials. Would that approach make beginners less nervous, do you think?

(Daniel Hollands) #18

Something like that seems more trustworthy, and I’m far more likely to trust it.

(Alex Russell) #19

Of course, if package.php just forwards arbitrary incoming commands to the shell, or creates arbitrary files, it’s not going to be much different to giving SSH/FTP access, but still.

(Jon) #20

Good point. It doesn’t, but a careful user might reasonably suspect that. If necessary I will open-source the base package so that folks can see what will be deployed; it is actually quite restrictive what can be done via remote control.

Here’s the possible remote commands.


I’ve fixed some recently broken links.