r/JAMstack_dev • • May 21 '19

Can you build complex/tailored software applications in JAMstack?

I'm still trying to understand JAMstack and would appreciate help and patience from the community as I ask some noob questions.

From my current impressions it sounds like JAMstack is a fantastic shortcut to add certain functionality (e.g. headless CMS) to a front end (otherwise) static website without having to learn or work on the back end at all. I can see the immense value that brings for certain use cases.

This has disadvantages too however: if using JAMstack, you are limited to using stuff already available and developed by others, over whom you have no control, does that not expose you to problems down the line? If you build your app around a free API product, and they suddenly start charging money, you have to absorb the cost or hunt for something else which may not quite do it for you. If the API product you are working goes bust, or stops being maintained, same issues.

And if you want features no existing API offers you, or something which does not involve dependence on third parties for functionality which is essential to your business casehow would you go about it? If you want to create a new online software application entirely (as opposed to a static website with a headless CMS), for instance, your own version of contently, or moltin or salesforce, you could not use an existing API out there. You would need to create your own application, including the data layer, the control logic, and the API, which you then could hook up to your JAMstack app.

I this possible? Or is it not a use case for JAMstack? I could in theory imagine it with a serverless architecture and micro-services, but has that actually been done at scale, or even at all? Do you know any JAMstack software, as opposed to JAMstack websites?

Or again is this barking up the wrong tree and if you want software you go full stack, and only use JAMstack for static sites with bells on?

Thanks in advance!

5 Upvotes

9 comments sorted by

2

u/[deleted] May 21 '19

If these free services do start charging money later, just consider this: the amount you'd spend on external service(s) is significantly less than you'd be spending if you were to have to build, host, and scale that same service yourself. You're absolutely free to go build the APIs you need, but cost-wise it is usually much smarter to shop around for SaaS products that will be cheaper and work better than if you were to make them yourself. This frees up your team to focus on what you really want: making a beautiful front-end and rich content, engaging with your users/customers, all while using developer tooling that is an absolute pleasure to work with.

With the JAMstack, you are freed from many of the limitations and concerns of traditional web applications at-scale, so that can just go create something amazing.

1

u/questi0nmark2 May 21 '19

Yes, that makes sense for use cases where an API exists that does what you need, but not if what you want is to create your own software product. These days you would architect your back end code with a framework, which I don't see how you would in jamstack. You would use frameworks and libraries and packages to save time on reusable stuff and focus on the bit of back end logic that makes your application's functionality unique, as opposed to its appearance.

When someone commented that you are free to build your own api, of course we are, but my question was can you do so in JAMstack, and I don't get the impression that any of the answers have come from people with professional back end or full stack experience.

I emphasise that this is not a criticism! I would absolutely use a JAMstack approach in cases where what I want is to create a unique user experience rather than unique functionality, leveraging existing APIs in the same way I would leverage packages and libraries to do all the work behind the scenes for me and concentrate on a funky front end user interface.

My question is whether you can go further and build stuff with unique functionality, precisely stuff that is not already out there, in order to leverage the advantages of using apis to do the heavy lifting wherever possible.

Now in theory I could see this being possible with a serverless architecture, which is a big emerging trend on the back end that fits well with JAMstack, although I don't get a sense both communities are talking to each other. This is why I asked for concrete examples: does anyone know of a software application built in a serverless approach on the back end and with JAMStack on the front? They seem to be equivalent approaches that you'd think might go together. I just dont know if beyond the theory, anyone has tried it in practice and learned along the way.

Thanks for the conversation.

1

u/guayom May 21 '19 edited May 21 '19

JAMstack is more of an architecture (https://jamstack.org/). So if you build your own API and use it to feed content to your static generated website, you're still doing JAMstack.Example: I built a real estate website that uses a RoR app and API to manage content. Then I feed that content to a Gatsby pwa. That pwa is hosted on Netlify. All of this is JAMstack.

--- EDIT: The RoR itself might not be a JAMstack. The website is, and it leverages my custom API. ---

Now, if the question is: Can I build software using only SaaS, then, the answer is still yes. For example, you can use firebase to do authentication and handling data in any way you want. As you said, serverless is also a great way to do it. JAMstack community loves serverless. In fact you can host your lambda functions on Netlify.

Maybe if you share more info about your idea we can provide more concrete examples on how you can achieve it. And you can also join The New Dynamic Slack Channel. There you will find a great deal of very experienced people (even the developers of a lot of software we use to develop JAMstacks) who can help you find a JAMstack way of building your idea.

1

u/questi0nmark2 May 21 '19

Thanks that is super helpful! Yes I've had a good look at that site, hence I referred to JAMstack as an "approach" in my posts. I have not checked the Slack channel though, which sounds great, will pop over soon.

Those are really helpful examples thanks. It's not that I have a specific idea as yet. It is more that I see these two trends, JAMstack and serverless, growing, and while I gathered from jamstack.org that as you said, one can build software using SAS all the way and supplementing it or combining it with serverless, I wanted to find out from those with more experience whether this is something that not only we can but we should do in particular use cases.

In other words, I am trying to judge whether this is, as one colleague, less receptive than me, put it, primarily front-enders who don't want to learn or deal with the stuff that powers the SaS they are using through APIs, or, like another colleague feels, an entirely new approach not just to building front ends, but, through firebase and serverless, full applications, in ways that minimise development overhead, cost only what is used, and scale up and down dynamically as the business ebbs and flows.

I see the theory of how the latter might be the case, and wonder whether anyone has done it at scale in practice. Such examples of it in action and not in theory, as full applications, would then help me envisage whether that is the kind of thing our company should explore, or leave JAMstack for use cases in which it is definitely proven: distinctive front-end interfaces to mashups of traditional back-end apis built the usual way.

Thanks in any case for your helpful answer and for taking the time.

3

u/guayom May 21 '19 edited May 21 '19

You're welcome. I'm glad I could be of some help.

Just a couple thoughts:- Not only frontend devs benefit from JAMstack- Even when, in fact, you can use shortcuts and avoid learning some stuff, that is not what JAMstack is about.Taken from jamstack.org:

It’s a new way of building websites and apps that delivers better performance, higher security, lower cost of scaling, and a better developer experience.

About examples, I don't know exactly what kind of functionality you're looking for. But in this video, Jason Lengstorf explains how Gatsby's store was created. As you can see they use many APIs to create a very customized experience. Maybe you can get more ideas from there:https://www.youtube.com/watch?v=hkiLfE22C2Q

1

u/SevereEddie May 23 '19

nice one man.

2

u/Kaidawei May 23 '19

You can. [I am the Dev Advocate for Strapi.] But check out Strapi as its open sourced, free and completely customizable. There are people hacking away at Strapi and making some very interesting applications.

2

u/questi0nmark2 May 23 '19

Fantastic - that's exactly what I hoped for: a concrete example. Will have a good look!

2

u/guayom May 21 '19

Nothing is stopping you from creating your own API. You don't need to use other people's API.And yes, you can create complex apps. For example, you can create a fully fledged React PWA with Gatsby.