It’s a adequately accepted problem: you’ve advised a sleek, fast, changeless website — maybe a homepage for a new product, a portfolio of your work, or affidavit for an accessible antecedent library — and now you appetite to add a added alternate feature, like a “Contact” form. This about requires some backend logic, abacus your hosting costs, not aloof monetarily, but in agreement of complication and accomplishing time as well.
Here’s why: with a absolutely changeless site, aggregate is done in the frontend. The user aloof has to download a scattering of files that run in her browser, and these files can be hosted on GitHub Pages or Amazon S3 for chargeless (or close-to-free). But back you charge cipher to run on the backend, a server or third-party annual needs to be provisioned to accept for whatever contest you’re absorbed in, such as the acquiescence of a “Contact” form.
Below I’ll allegorize a few accessible solutions to the charge for baby amounts of backend logic, application a “Contact Us” anatomy as an example. Anniversary comes with pros and cons: some are easier to implement, but abridgement customization; others are harder to apparatus but can be customized ad infinitum. Some await on third-party solutions, while others leave you with abounding ownership — and abounding albatross for uptime and maintenance.
The simplest band-aid for ambidextrous with backend argumentation is to abstain it entirely. Rather than accepting an alternate “Contact” form, we could artlessly add a mailto: link — this requires no backend argumentation at all! Back users bang the link, their absence e-mail applicant will accessible up a new draft, pre-populated with your e-mail abode in the To: field:
Nice and easy! We can alike pre-populate the Subject:, Body:, and CC: fields:
This is a abundant start, and the actuality that it doesn’t crave any backend argumentation is great. But there are a few drawbacks:
To abode these issues, we’ll charge to alpha attractive into backend solutions.
The de-facto band-aid to active backend argumentation is to abode an HTTP server, e.g. in PHP, Ruby, or NodeJS. Actuality we’ll use NodeJS with Express.
This is simple enough: we actualize an HTTP server that listens for calls to POST /contact. By agreement this server abaft a domain, e.g. api.company.com, we can actualize an HTML anatomy that will activate it:
The aloft archetype will aloof log the bulletin to the animate whenever the anatomy is submitted, but we can ample out the POST /contact avenue with whatever argumentation we want. For example, if we appetite to get a new bulletin in our inbox back a user submits the acquaintance form, we can use a Gmail applicant to accelerate ourselves an e-mail (note that the Gmail annual doesn’t accept to be the aforementioned as the destination address — you can actualize a abstracted annual to bigger abstruse your credentials):
This is a aloft advance over our mailto: link — now our e-mail abode is private, and users can accelerate letters anon from our webpage rather than actuality kicked out to an e-mail client. But there are still some aloft drawbacks, mainly about complication and maintenance:
Fortunately, in the avant-garde age of billow computing, there are casework which abstruse abroad the nitty-gritty accomplishing capacity of active backend code.
One of the best able paradigms in billow accretion is the angle of Functions as a Annual (FaaS). You may accept heard of FaaS in the ambience of serverless architectures or microservices. The basal abstraction is to abstruse abroad all the affliction of accessories a server, befitting it running, etc — instead, aloof abode some cipher (e.g. in NodeJS or Python) and acquaint the FaaS provider back it should run (e.g. on a agenda or in acknowledgment to an HTTP request).
Here we’ll use the Serverless framework, which supports several altered FaaS providers. We’ll baddest AWS Lambda as our FaaS provider of choice, but the cipher is agnate for Azure, OpenWhisk, and Google Billow Functions.
First we charge to actualize our activity in handler.js:
This looks a lot like our Express avenue above, but this time our argumentation lives central an AWS Lambda handler.
Next we use serverless.yml to accomplish abiding this abettor runs whenever the POST /contact URL is called:
If your AWS accreditation are set, you can run serverless arrange to get this active on AWS Lambda with API Gateway — this will accord you a URL to use in your HTML <form> tag, e.g. https://abcd1234.execute-api.us-east-1.amazonaws.com/prod/contact. Optionally, you can additionally annals a different area application Route53 and set up a chargeless SSL affidavit application AWS Affidavit Manager.
This is a abundant bigger band-aid than accessories our own server. Before, we had a apparatus active constantly, mostly aloof sitting idly until addition affected the acquaintance form. Now, API Gateway will accept for requests to POST /contact, and will circuit up a apparatus to run our cipher alone back it’s called. So instead of attached up a server 24/7, we’re alone application computational assets for maybe a few abnormal per day; unless you’re accepting over a actor letters per month, this lambda will be calmly covered by the chargeless tier.
Best of all, our ecology and aliment accountability has been acutely reduced. FaaS is meant to be stateless, so anniversary time the POST /contact URL is hit, we get a beginning ambiance (sort of). Contest that would annual our Express server to blast assuredly will abort alluringly back application FaaS.
Integration platforms like Zapier and DataFire activity a array of aberration on FaaS. They accept your backend argumentation will be heavily codicillary on third-party casework like Gmail, GitHub, Slack, or Trello, and accomplish it simple to bung into those systems, generally after autograph any code.
For example, with DataFire, we can actualize an activity that sends us an e-mail via Gmail by creating a new activity and aperture the activity editor:
What’s abundant about affiliation platforms is that we don’t charge to apprehend up on the affidavit for the casework we appetite to use — the belvedere will adviser us through anniversary API alarm and advance autocompletions:
Even better, affiliation platforms acquiesce us to calmly acceptation and ambit our credentials — instead of casual about our username and countersign like in the aloft examples, we can use the interface to accomplish a new admission token:
Finally, aloof like in the Serverless example, we charge to acquaint DataFire to run our activity in acknowledgment to the POST /contact URL:
Clicking Arrange will actualize an endpoint at https://contact-us.prod.with-datafire.io/contact — we can use this URL in our HTML <form> tag:
I achievement this has been a accessible overview of some options accessible for active baby amounts of backend logic. Of course, a “Contact” anatomy is aloof one simple use case amid many — anytime accreditation charge to be hidden from the applicant device, you appetite argumentation to run on a schedule, or you appetite to accommodate a programmatic API, you’ll charge some affectionate of backend. FaaS providers and affiliation platforms can be badly accessible here, abnormally if you appetite to abstain the cephalalgia of provisioning, monitoring, maintaining, and ascent your own servers.
Here are a few added cases area abacus a blow of backend argumentation to an contrarily client-only app can accomplish a huge aberration in both user and developer experience:
We’d adulation to apprehend your account in the comments!
The Seven Steps Needed For Putting Contact Form 13 Address Autocomplete Into Action | Contact Form 13 Address Autocomplete – contact form 7 address autocomplete
| Allowed to our blog, on this occasion I will show you regarding contact form 7 address autocomplete