The Assembly tech stack
What is the Assembly tech stack?
Working primarily with small development agencies and technical people, we often get asked about the technology that powers the Assembly platform - and as a part of our effort to be transparent and honest, we love to share every inch of information that we can.
Our core application logic is handled by Laravel. We’re huge fans of the Laravel Framework and the PHP language in general. By using Laravel, we can very quickly prototype, deploy and monitor new features, which is critical to our fast-moving philosophy. Thanks to the opinionated & standardised approach taken by Laravel, we can onboard new developers much easier than we would with a homebrew solution.
Our beautiful dashboards are styled by the utility-first library Tailwind. Tailwind is our go-to styling library for a few reasons, but the primary reason is simply how fast we can design new features and integrate them into our design library. Tailwind automatically 🌳shakes too, which means we don’t have to worry (too much) about optimizing CSS file sizes.
We utilize Alpine to handle simple front-end interactions that don’t qualify for an entire Livewire component. Think toggling opening and closing of menu’s, keyboard shortcuts - that kind of thing. Coming in at 7.1kB gzipped, Alpine is absolutely tiny, and packs a big punch.
We make use of Github actions to handle our deployment process. Effectively, our pipe looks something like this: set up PHP, install Composer, NPM, and all dependencies. Run tests, deploy code, dump caches, and reboot listeners.
Digital Ocean Database Clusters
We use MySQL-managed databases provided by DigitalOcean. We opted for DO-managed clusters to give us, and our customers peace of mind in the knowledge that all of our data is backed up, scalable, and highly available, reducing DB-based downtime to a minimum. When DO notices degraded performance or node failure, their infrastructure automatically spins up replacement nodes, keeping our platform online when it’s most important.
We use Sentry to monitor application-level errors. When an unhandled error occurs, we are instantly notified, and provided with detailed stack traces and debugging information, to help us immediately pinpoint the error and provide resolution.
Using Pingdom to monitor application uptime allows us to provide public uptime status pages, which let you know when we’re having a bad day. Our team is notified when Pingdom sees something go wrong, giving us confidence that our application is online, and when it isn’t, we’ll know.
Sendgrid is a fantastic tool that allows to easily send emails with high reliability, with reasonable pricing and easy integration, it’s a no-brainer for us to use their service to make sure emails arrive on time, every time.
You guessed it, we use Stripe to handle payment and subscriptions. Why? Well, why wouldn’t you? We’re huge fans of their docs, pricing and features.
As you know, we provide Google Calendar integrations, for which… we use… the Google API. The Cloud Console is awesome, and pricing is pretty fair.
Open Source packages
We’d like to add a note that we’re huge fans of Open Source Software, and we extensively use OSS packages from awesome people like Spatie, jamesmills, and Guzzle.
We care for privacy. Instead of using free services like Google Analytics, where your data, and our data is the payment, we opted to use the fantastic privacy-first Fathom Analytics, who provide fast, private and anonymous analytics.
As you can hopefully tell, our stack is focused on allowing us to quickly, securely, and confidently prototype, build - and - ship new features. We like to use modern tools, and we aren’t scared of moving the stack around, previously, we did use Inertia, but we changed to Livewire - and we’re loving it.
Unify your tools
Having worked across multiple agencies, startups and larger companies, it pained me to see the desperate list of software used to collaborate, manage projects, and manage staff time. Let’s face it, t...
How to use IP Locks to authorize remote teams
With IP locking, it is now possible to create a list of authorized IP addresses that can access your team’s Assembly dashboard.