Go to main contentGo to page footer

The LeanPanda blog

How to write migration scripts to change content schema with DatoCMS

In this tutorial, we will go over how to make changes to content schema in a DatoCMS project safely, without interfering with production, and with maximal flexibility for testing before merging.

How to Use DatoCMS's Awesome Structured Text Field in a NextJS App

At Cantiere Creativo, we are proud to be the place where DatoCMS was born, and we use Dato in a vast majority of our projects. In early 2021 Dato launched a revolutionary new feature that greatly enhances the experience of editors while inserting and managing content. In this post, we're going to walk through all you need to know as a developer to start using Structured Text in your website today.

  • Natalia BaezaNatalia Baeza
  • 16 November 2021

How to issue notifications using PubSub in Elixir Phoenix

As we continue to work more and more with Elixir and Phoenix, there is a growing number of features we have implemented in this framework to suit specific needs we have come upon.

Recently, we had a problem with flash notification messages in LiveView and decided to implement our own way of issuing notifications throughout an application using PubSub instead of live flash, not just to solve the bug but also to have greater flexibility and control over the notifications system.

How we helped the Italian Public Administration innovate their stack

Here at LeanPanda, we were delighted to see the new website of the Department for Digital Transformation of the Prime Minister’s Office go online last 4 February. It made us proud as both citizens and professionals. 

Authentication and Authorisation in Phoenix Liveview

Lean Panda is currently developing a number of Elixir applications using Phoenix LiveView. Working with LiveView is a pleasure, but we still have some unsolved situations, or, at least, we don’t have a standard way of solving them. One of those problems is authentication and authorisation: authentication is where you prove who you are and authorisation is where the application decides what you can do.

On this article, we implement authentication and authorisation in Liveview, explaining the code and our decisions.

Gatsby JS vs. Next.js - What static site generator should you choose?

One advantage of React is the clean modularity of its components. While most React sites are dynamic single-page applications, the modularity React offers means that it is also used in static sites.

The first big static site generator that used React was Gatsby, but now the new cool kid on the block is Next.js. How does it fare?

Two years of Lean UX ✌

In this article we are going to walk through our last two years experimenting Lean UX with more than 80+ clients.

Hot topics: Our way of selling Lean UX and the importance of marketing in UX.

Let's go! 👉

  • Amir AtiAmir Ati
  • 5 March 2019

Create a static website with authentication tutorial with React and Netlify Identity

Tutorial to add authentication logic to a static website hosted by Netlify, using React and Netlify Identity's GoTrue JS library

Mastico, the new gem by Lean Panda!

Writing simple Elasticsearch queries can often be tedious and complex, using Chewy can help but it increases the difficulty of keeping our code DRY. We would love to show you our solution to make t work easier.

Simple email forwarding with AWS Lambda and Serverless (and SES)

If forwarding emails (with some calculations in-between) is what you need, then AWS Lambda is the simplest solution for you.

How To Run A Lean UX Workshop (For Agencies And Freelancers)

We are an agency with several clients and have fallen in love with Lean UX. But one of our first feelings was that Lean UX is perfect for one-product-focus teams.

What about us, agencies and freelancers?

We are now going to cover everything concerning the kick-start phase of a project as soon as a client gets in touch, and with the determination to do it following Lean UX principles and methodology.

Smart Integration Testing in Rails

When we start to talk about testing we always seem to end up discussing integration testing. But is integration testing really our favourite superhero? Or can it become our worst enemy? In this post I'm going to try, using a practical example, to work out how far we can take integration testing and when it would be better to delegate testing to other parts of the application.

Our Guide to Javascript and single-page apps

The world of Javascript is currently characterized by extreme fragmentation and intense competition between different ideas. This has caused us to ask ourselves a couple of questions. Firstly, is this proof of the community's vitality, or of its immaturity? Secondly, how is it possible to survive the current churn rate?

In this new series of articles we will do our best to clearly explain what the different alternatives available to those working with Javascript are, and to set out our ideas about what constitutes solid, maintainable development.

Ruby, NodeJS and Go: advantages and disadvantages for backend development

For single-page applications there is a pretty clear-cut distinction between frontend and backend. The presentation and interaction aspects are handled entirely by the frontend, while the backend takes care of the logic: reading the data passed to it by the frontend, processing that data and returning the results.

Introducing Dato: CMS for static sites

The web is not in good shape: think about how often we find ourselves confronted with broken sites. One in four websites are currently on Wordpress, where some 70% of installations are vulnerable to attack. Not so long ago, 12 million Drupal sites were compromised by malware.

RubyDay 2015, we're nearly there!

It's almost time! There are just a few weeks to go until the 5th edition of Rubyday, the annual get-together of RubyItalia: the association representing Ruby developers and the Ruby ecosystem of gems and frameworks (such as Ruby on Rails) in Italy. Cantiere Creativo \ LeanPanda, together with two other companies — Nebulab and Welaikahave decided to take part in organizing the 2015 event.

BazaarJS: our criticisms of Angular

Angular is now, without doubt, the Javascript Framework par excellence®, with popularity far exceeding that of any of its competitors. But is all that shines really gold? In this latest post in our #BazarJS series, which looks at the development of Single Page Applications, we will describe our personal experience with the framework.

Machine Learning made simple with Ruby

How is it possible to make automatic classification work properly without resorting to using external prediction services? Starting with Bayesian classification, you can use the ruby gem classifier-reborn to create a Latent Semantic Indexer. Hands on!

BazaarJS: CSS pre and post processors

Our BazaarJS series continues. In this article we're going to take a brief (digestive, if you will) pause from the world of Javascript to confront another, equally important, topic: stylesheets. Based on our extensive experience with Sass, we will examine the principle Javascript alternatives available (Less.js and Stylus). Is it worth changing preprocessor? To finish, we will take a look at a range of postprocessing tools that have grown in popularity during 2014.

What we're talking about when we talk about startups

The term startup has been a buzzword for quite some time now, and we find that many of our potential clients like to use it to describe themselves. As with all buzzwords, the term is often over-used and abused. As we see it, however, the greatest risk arising from this misuse is that of associating the word startup with a strategy and way of operating which are totally unsuited to the nature of a startup. In this article, we want to explain the meaning of the term as we see it and how it fits into our way of working.

Ecommerce Forum 2015, a short summary

We participated in the tenth edition of the Ecommerce Forum, prominent workshop in the development of electronic commerce. One of the points that most interested us was the process of products delivery. Here is a brief recap of the day.

Fiware Hackathon Italy, we (almost) won again!

A new victory and a prize as best developers! This all happened last week at the IMPACT hackathon, a #fiware promotional event, the European answer to the technological monopoly from across the ocean. We came in second again; we’ll win the next one, because a pig that doesn’t fly, is just a pig (cit. Porco Rosso).

Should you talk to clients about testing?

Over the years we have found that there are huge advantages to testing. However, we have also found that the process brings with it certain problems, some of which are not easily solved. One of these is explaining the value\cost of testing to clients, and deciding whether to confront the issue during the sales phase.

Multilingual applications: how to manage sitemaps and meta-tags for better indexing

If you're using Rails then managing the SEO component of a web application is as simple as it is important to implement. You can easily find guides on how to do so online.

  • David LibreraDavid Librera
  • 10 February 2015

BazaarJS: Javascript preprocessors

BazarJS series, this time dedicated to the history, past and future of Javascript. We'll start by taking a look at the CoffeeScript and TypeScript pre-processors, then get to know ECMAScript 6 to find out whether we can finally start taking Javascript seriously.

BazaarJS: Module loaders e package managers

This is the second episode of our BazarJS series on the magical world of single-page applications... today we're going to be taking a serious look at module loaders, bundlers and package managers: three of the most "confused", controversial and peculiar topics in the Javascript world.

As always, after giving an overview of the available solutions, we will explain the advantages and disadvantages that have led us to our personal choice.

BazaarJS: the Node.js task runner diaspora

This is the first episode of our new BazaarJS series, dedicated to exploring the world of SPAs (single-page applications)... today we'll be talking about build tools and task runners!

Ruby Day 2014: our experience

Conferences are important to us for a number of reasons: they let us meet old friends; discover faces behind twitter accounts; get to know people; share our experiences; and generally find out about what's going on in our sector. Ruby Day has, for several years, been a point of reference for those like us who love using this language to develop projects.