Virtual event design can make or break your online event. There are two major parts of an event design. First, the concepts, programming, and run of show elements that encompass the event itself. Second, the visual elements that make a virtual event have a presence with the same “feel” as a live conference or session.…
We built a deployment SaaS from scratch, and recently got our first paying user (lessons learned + stats + UX evolution)
Hi Reddit!I’m Wouter Besems, co-founder of Launchdeck. I’d like to share with you our story and some of our key take-aways – outlining how me and my co-founder have spent time building our product and ultimately introducing a pricing model – and acquiring our first paying (“premium”) customer shortly after that.We’d love to get your feedback both on the product and our current strategy.tl;dr:https://launchdeck.ioLaunchdeck is an automated deployment service which lets you easily publish sites and applications from a Git repository to a server.Tech stackNode.js (express) back-endTypeScript (React.js) front-endLocal development environment runs directly on our machines “bare metal” – super fast integration and debugging workflow.Our staging- and production clusters are powered by a cloud provider and are based on a set of docker images with MongoDB and Redis providing our data layer.Stats7360 hours logged between the two foundersApproximately 35k lines of code23 internal repositories, of which 8 open source2100 signupsFirst paying customer on February 4, 2021Our storyLaunchdeck is founded, built by, and run by two people. My day job consists of front-end development and online marketing, and my co-founder is a full-stack developer. Even though we feel this is theoretically the perfect team for building and launching a SaaS product, a trajectory that was supposed to take one year ended up taking four (neither of us could work on the product full-time – my co-founder got his degree 2 years into the project and we are both still holding part-time positions, however we tried to take all this into account in our initial estimations).Where it beganLet’s backtrack a little bit. When I met my co-founder, we were both employed at a web agency and we ran into an issue where deploying code to a server wasn’t exactly straightforward.To deploy a small project, manually uploading using FTP seemed like the most obvious way. A huge hurdle was, however, keeping track of modified files that needed to be uploaded, and whenever something went awry, it was tricky to roll back to a previous version. On top of that, with all the build tooling entering the landscape, we would be forced to run a local build for every small adjustment made.At that point, existing deployment solutions were either overly complicated (especially for smaller projects) or were very expensive. We were looking for something well-suited for PHP-based and static applications (with or without a frontend bundle), and something that freelancers and small-to-medium size teams could understand without the need for a dedicated in-house DevOps – and we’ve mostly kept our focus there.Scratching our own itchIt wasn’t long before we had figured out our own solution: a CLI-based open source build automation toolkit that essentially just clones a repository, optionally runs some build commands, and uploads the resulting files to a server. Still, to this day, this core part of our build automation service remains open source: https://github.com/launchdeckioBecause a CLI tool can be somewhat limiting in user friendliness and visual appeal, we quickly realised we wanted to add a visual user interface and host the service in the cloud so that it didn’t have to run locally. 4 years and 7,360 hours of design- and programming work later, we’re now at the point of having a SaaS solution that allows web developers to quickly and easily ship their projects without needing to have the prerequisite knowledge of dev-ops or systems administration.Rolling out the pricing modelDuring this time, while we had beta users trying and testing our platform, we continued developing the product and eventually, earlier just this year, we introduced our premium pricing tiers.A lot of time has gone in the UI design, which throughout the years has been finetuned and most importantly: simplified. Screenshots of the various stages of this process have been included at the bottom of this post.Shortly after introducing our paid plans, we acquired our first paying customer: a great milestone! Currently we’re experimenting with various marketing campaigns and are still trying to find the optimal channels of communication. Advice would be really appreciated!Things we’ve learned along the wayPlanning: If there was one place where we were way off, it’s the amount of time it would take to build a solid deployment automation service. During most of the development process, we were both studying and/or working part-time on other projects, which meant time wasn’t always as abundant as we would have liked.Assumptions regarding functionality: over the years, we’ve made numerous assumptions regarding what we thought would make our service better. This caused us to, in at least a number of cases, focus on features that weren’t all that important to our end users. That is, in hindsight of course :)When working on new features, we iterated quickly and only once there was a functional version allowing us to actually test the feature, and we decided we actually wanted to move forward with this feature, we would go back in and clean up (or rewrite partly) the implementation to prevent build-up of ‘tech debt’ as much as possible. We’ve always been rather thorough with this – and it’s still paying off to this day.When picking the right technology we’ve tended to err on the side of safe and battle-tested frameworks, libraries and languages with a wide community backing. This has worked out very favorably in every single case although some luck may be involved there.Not a brand-new insight, of course, but splitting different parts of the codebase into individual modules or services forces you to think about abstractions (helpful) and means additional flexibility when you’d like to use a certain language or framework for a new feature or part of the ecosystem.As a first SaaS product, a deployment automation service isn’t exactly low hanging fruit. A lot had to be built from scratch (there’s no such thing as a “deployment SaaS starter kit”). Besides that, most similar competitors will have at least some 5 to 10 developers on their team. Only after 4 years of development, we’ve arrived at the point of being able to charge a fee for our product.Paid marketing: Costs for this tend to rise quickly when you’re still in the process of determining who exactly is your target audience, and what channel to use for optimal conversion. It seems to us that “conventional” channels such as AdWords, Facebook and LinkedIn are expensive but ineffective, or at least for the type of customer we’re trying to attract. We’re broadening our range now looking at sharing content to various communities such as Indie Hackers, Reddit and Hackernews.Mapping out the futureWe’re currently working to figure out the right marketing channels, and doing so with a limited budget. As our funnel becomes more profitable, we can afford to spend more time on building and expanding Lauchdeck. This is our current roadmap:Config file editor: Which lets users add and edit configuration files (such as wp-config.php or .env) without having to manually log into their server.Fully automated deployments for staging and test environments with an intelligent queue to deal with ongoing operations and starting new builds.More support for a variety of target servers or platforms such as DigitalOcean, AWS or even a proprietary hosting infrastructure so the user no longer has to bother with the server setup part of the configuration.Evolution of UXOur very first mockupFirst UI designUI redesignLaunchdeck UI 2021
We travel to feel alive. But as soon as we come back home, we want to share our experiences with the people we care about. Unfortunately, not even our cameras can really capture the atmosphere of a special moment; the vibrant sights, colors, smells, and the wind blowing in from the east that makes us…
What You’ll Be Creating With Firebase, creating real-time social applications is a walk in the park. And the best thing about it: you don’t have to write a single line of server-side code. In this tutorial, I’ll show you how to leverage Firebase UI to create a group chat app you can share with your…
In part 1, we explained how to use a monthly recurring revenue (MRR) model to grow your web design business. In this second part, we’ll explain how to use proven sales techniques to keep scaling your business profitably. If you’re an agency owner, you know that you need customers to grow. No matter how big…
DaVinci Resolve is the go-to video editing software for most professionals. High-quality editing tools, color correction, audio post-production tools, and the ability to use the software for free convinced more people to switch to DaVinci Resolve. Now, there’s one more reason to use DaVinci Resolve— templates! Thanks to its massive growth, the community around the…
Last month, I made a simple project which got spread in various tech communities and social media. On Github, It reached from 0 to 4k+ stars and 200+ forks within 7 days. Github featured it in Trending repositories of day section for straight 5 days or so.Some of you might remember 🙂 this was the project:Trending on Github – 13 Mar’21Clone Wars70+ open-source clones or alternatives of popular sites like Airbnb, Amazon, Instagram, Netflix, Tiktok, etc. List contains source code, demo links, tech stack, and, GitHub stars count.Project link: https://gourav.io/clone-warsGithub link: https://github.com/gorvgoyl/clone-warsMotivation behind this projectI usually lurk in programming subreddits like webdev, reactjs, etc. to see what other devs are building or if any new JS framework is popping up. I noticed many devs were making clones of popular sites like Instagram, Trello, Spotify, etc. as part of their learning purpose, and they were sharing it with others to get feedback in terms of code quality and best practices.These clones were scattered all over the communities. So, I thought why not create a single list of all these clones which people can bookmark and revisit later for whatever purpose they need it for. Honestly, I wasn’t entirely sure at that time whether it would provide any good value to others or not. So, there was a way to find out that is to build it myself!How I built it1. Scrapping RedditI wanted to get all posts that contain the “clone” keyword. I initially did it with default reddit search reddit.com/r/reactjs/search/?q=clone&source=recent&restrict_sr=1&sort=new, (means look for all posts in reactjs subreddit with “clone” keyword and sort by new). It returned all posts, but that also included low-quality posts with 0 upvotes, questions on how to build a specific clone, etc. It would be a headache figuring out good clone projects from that dump. So, I used redditsearch.io instead, which provides advanced Reddit filtering like return posts that have at least 10 upvotes, posted during a specific timeline, etc.Next, I made a list of all these clones, their Github repo, demo links, tech stack. It was manual work.Additionally, I googled “open-source alternatives” and found some fully-functional clones of Slack, Airtable, Bit.ly, Evernote, Google analytics, etc. I added these to the list.So, now there are 2 kinds of projects on the list. The first ones look quite similar (UI-wise) but aren’t fully-functional and the other ones which are fully-functional but UI is different (to avoid copyright issues, etc).BTW, I named my project after Star Wars 2008 TV Series: “The Clone Wars” and also kept the similar color scheme of OG image.2. Pretty view of tableI needed to make it look better (sticky header) which meant I needed to deploy this project somewhere else. I still needed it to be on Github so that others can collaborate easily. I decided to host it on my personal site https://gourav.io.My site is built using NextJS, and I was already using markdown (mdx) to write blog posts, so it was just a matter of copy-pasting markdown file from my Github project to new page https://gourav.io/clone-wars. And on top of it, I use Tailwind CSS with “typography” plugin which makes tables pleasing to read along with other text.I thought of automating it to the next level i.e. if any change happens to the Github project or someone’s PR gets merged, update the same on my site https://gourav.io/clone-wars. But, decided not to over-engineer it as changes weren’t that frequent.Making it ViralI posted in 2-3 relevant subreddits and it took off 🚀After effectsOnce the project gained some popularity many developers started raising PR to add their clone projects to the list. When I started it had around ~75 clones, but now it’s more than 120+ and I still get new PR every now and then.I got to know from a friend that it was picked by React Newsletter. Such a serendipitous moment.People were tweeting about Clone Wars. nickbulljs tweeted a neat idea for devs who are looking to get hired.I got 150+ new followers after this tweet :oAnd one person donated $5 from BuyMeACoffee link I put on the project. Love you stranger.Within 30 days of launch, 40k+ people came to my personal site and viewed my project (80k+ views).You can see users insights at the end of the article on my blog.I know it was a long read, I hope you enjoyed it.
Many professionals are now switching from Premiere Pro to DaVinci Resolve. Why? Because it offers amazing features compared to Premiere Pro and After Effects for free. Switching to DaVinci Resolve allows you to save up to $600 per year that otherwise spent on Adobe Premiere Pro. This gives professionals more money to invest in things…
How Did I Measure Popularity?
Preact : 13%
I’ve also taken into account “framework awareness” from the same survey:
There are, of course, many other metrics one could draw upon, such as job availability, GitHub stars, npm downloads, GitHub “Used by”, and so on. If you’d like an overview of some of these (for the big three, at least), please consult this GitHub Gist.
For an interactive view of how the frameworks stack up against each other, you can consult this graph from npmtrends.
How Are We Defining Front-end Framework?
The elephant in the room is that the most popular framework on the list (React) defines itself as a “library”.
I don’t want to go too deep down this rabbit hole, as there are complete articles dedicated to explaining the difference between frameworks and libraries. For the purposes of this article, I’ll use the following definition provided by Martin Fowler:
A library is essentially a set of functions that you can call, these days usually organized into classes. Each call does some work and returns control to the client.
A framework embodies some abstract design, with more behavior built in. In order to use it you need to insert your behavior into various places in the framework either by subclassing or by plugging in your own classes. The framework’s code then calls your code at these points.
In my opinion, React conforms more to the behavior of a framework than a library. And while it technically isn’t one, developers normally adopt a number of tools and packages from its ecosystem to make it function as such.
Developer tooling is good. The React team has built and maintains a CLI (Create React App) to quickly and easily scaffold out a new project, as well as a developer tools extension for both Chrome and Firefox. There are very many third-party packages available to accomplish a wide array of tasks (such as routing, dealing with forms, and animation), as well as several React-based frameworks, such as Next.js and Gatsby.
React subscribes to a “Learn once, write anywhere” philosophy. It can power mobile apps using React Native, and it can render on the server using Node. This means excellent SEO support, which will only get better as something called server components makes its way down the pipeline.
One of the main criticisms of React is that it is too unopinionated: it’s only concerned with the view layer of your application and leaves everything else to the developer. Some people like the freedom this offers, but others — especially new developers — can become overwhelmed by the unstructured approach to coding a React app this encourages.
React has a moderate learning curve. It encourages the use of various functional programming paradigms (such as immutability and pure functions), meaning that developers would do well to have a basic grasp of these concepts before attempting to build anything serious.
If you’re comfortable with React’s unopinionated approach and the fact that it leaves a sizable part of the development process to the developer, then it’s an excellent choice for data-driven apps of any size.
Angular is Google’s offering in the front-end framework space. It started life in 2010 as AngularJS (or Angular 1) and was an immediate hit, primarily because it was the first framework that enabled developers to build what we now refer to as single-page applications.
As for Angular, it’s something of a heavyweight in the front-end framework world. It’s used by companies such as Google and Microsoft in production, so is definitely well battle tested. There are also many resources available online (such as the excellent Tour of Heroes tutorial) and there are a good number of Angular-related questions on Stack Overflow.
Unlike React, which only handles the view layer, Angular offers a complete solution for building single-page client applications. Angular components can implement a two-way data binding, which allows them to listen for events and update values simultaneously between parent and child components. Templates are chunks of HTML that permit the use of special syntax to leverage many of Angular’s features. TypeScript is the primary language for Angular development, making the framework particularly suited to enterprise-grade applications.
Tooling is good. Angular offers a highly polished CLI to initialize, develop, scaffold, and maintain Angular applications. There are also Chrome and Firefox Dev Tools extensions available for debugging Angular applications. Out of the box, Angular has a solution for handling many common tasks, such as forms and routing, but there’s still a rich ecosystem of third-party libraries.
In my opinion, Angular has the steepest learning curve of all the frameworks listed here. Developers will need to be familiar with TypeScript, as well as concepts like decorators and dependency injection, to be able to work effectively with the framework. For this reason, it’s not a good choice for new developers. Rather, it lends itself more to building large-scale apps as part of a team.
If you’d like a full rundown of the differences between React and Angular, please see “React vs Angular: An In-depth Comparison”.
Please note that these stats are for Vue v2. Version 3 is available, but has to be installed as vue@next.
Third on our list is Vue.js, a Model–view–viewmodel (MVVM) front-end framework used for building user interfaces and single-page applications. It was written by Evan You and saw its first release in 2014. Vue has a very dedicated following of developers (it has more GitHub stars than React, for example), which is possibly due to the fact that it slotted so nicely into the gap left by AngularJS when this was rewritten to become Angular.
Vue is developed and maintained by a core team of some twenty developers, and although it’s not directly backed by one of the internet giants, it’s used in production by companies such as Alibaba, Gitlab and Adobe. Vue has arguably the best documentation of any of the frameworks on the list, and its forums are a great resource for getting help with coding issues. Vue is also popular in the PHP world and ships as part of the Laravel framework.
Tooling around Vue is superb. There’s an official CLI to scaffold and develop Vue apps, and there’s a devtools extension available for both Chrome and Firefox to aid in debugging. In sharp contrast to React, Vue offers official packages for routing and state management, which presents a pleasingly standardized way of doing things. There’s also a wide range of third-party tools, as well as frameworks based upon Vue, such as Nuxt.js and Gridsome (Vue’s answer to React’s Next.js and Gatsby).
Vue is an excellent choice for apps of all sizes. It’s suitable for less experienced devs, as well as those that prefer a little more structure and guidance from their framework.
Released by Rich Harris in 2016, Svelte is a relative newcomer to the framework scene and takes a different approach to building web apps than anything else on this list. Its website states:
Unfortunately, tooling is currently a bit of a pain point. Originally, Sapper (an app framework built on top of Svelte) was used to build Svelte apps with a predefined structure and equip them with slightly more advanced features such as routing and server-side rendering. However, in November 2020, Svelte’s creator announced that version 1.0 of Sapper would never be released and that SvelteKit is now the single recommended way to start building apps with Svelte. There are also browser devtools extensions available for Chrome and Firefox, as well as various third-party modules, although nowhere near as many as for the more established frameworks.
Although Svelte’s learning curve is very low, the community is still small and it hasn’t yet gained same traction as the top three frameworks mentioned here. But it is being used in production by companies such as IBM and the New York Times, and it’s definitely a framework worth keeping an eye on in the coming months and years.
Svelte is a good choice for smaller projects, due largely to its immaturity. This is changing, though. SvelteKit is in public beta, and the community is continuing to grow and thrive. Although Svelte is currently something of a newcomer, you should watch this space …
I’m featuring Ember as the final framework in this article because it’s been around since the early days of front-end frameworks. It was initially released in 2011, but maintains continuing popularity among developers:
It’s almost a decade old and dates back well before React, Vue, Svelte and all the others. The framework has never been on the forefront of the frontend hype train but quietly enabled teams to ship steadily and sustainably — among them Qonto and CLARK, two of Europe’s Top 50 FinTechs in 2020
A wide array of tooling has sprung up around Ember, from the Ember CLI — the official way to create, build, test, and serve Ember apps — to the Ember Inspector, the officially supported browser add-on that enables you to inspect Ember objects in your application. There’s also a number of third-party libraries available, and the CLI provides a common format (aka Ember Addons) to distribute them with.
Ember’s community isn’t as large as those of React and others, but it’s members are very engaged and has forums and a Discord server where you can ask for help with coding problems. Ember is the most opinionated of the frameworks listed here, and it adopts the “convention over configuration” approach. This, coupled with the fact that devs will need to be familiar with more advanced concepts — such as serializers and adapters — gives it a moderate to steep learning curve.
Ember probably isn’t the best choice for beginners or for smaller projects. It has a lot of moving parts and doesn’t offer much flexibility in how you structure things. But it does shine when used to build rich, complex front-end apps as part of a team.
So there we have it, my comparison of the five most popular front-end frameworks on the market today. While this wasn’t an exhaustive look at the features of each framework, I hope it’s given you an insight into which of the big players might be a good fit for your next project, or a good candidate for you to further explore.
If you’ve got any questions or comments, why not come join us in the SitePoint forums to discuss.
From hard-core ‘grammers to those that post the occasional pic, Instagram is the social media platform that’s practically made for designers because it is so visual. So, you’ll probably want to be on-trend when it comes to posting. Here are eight ways to create images that are perfect for 2021 with a few examples and…