Tools and services
Stack and services
Or Ab-stack-tion! 🤦♂️
This document lists the tools and services that we use on our projects.
Finding a balance between trying out something new or using a well-known tool is tricky. There are several things to consider: can a tool that we previously used solve the problem? Is the learning curve of the new tool justified by the gained efficiency? Is the new (or old tool) GDPR compliant?
Programming languages
- JavaScript (TypeScript)
- Ruby
- C#
Managing DBs and runtimes
- asdf to easily install the required runtimes for most of our projects
- docker-compose to easily get the DBs started - using the right versions
.NET has its own built-in SDK manager.
Frameworks
Web apps
- Ruby on Rails using our Rails template
- .NET using our .NET template
Websites
* WordPress has its own guideline as it’s a whole separate ecosystem
Mobile apps
Tooling
Testing
- Jest for JavaScript/TypeScript
- Playwright for JavaScript/TypeScript E2E
- RSpec for Ruby
- xUnit for C#
Frontend
- React
- Tailwind CSS
- SASS
- BEM
- Muffibook (our component library using all of the above)
Databases
- postgresql
- redis
- MS SQL Server only for .NET
- MySQL only for WordPress
Services
We have a three-color system, for keeping track of the services we’ve used and our experience with using them.
- 🟢 These services have been widely used at Abtion, and they usually provide the necessary functionality that we expect from them.
- 🟡 We’ve used the services before, and we are satisfied. The services in this list should be considered before the team decides to use a different tool.
- 🔴 These services have been used or analyzed, and they do not live up to Abtion standard.
Use the 🟢 services unless there’s a good reason not to. If there is a 🔴 service that the team wants to use the team must first check with the Principal Engineer or CTO.
Hosting
- PaaS (Platform as a Service)
- Storage
- 🟢 Amazon S3
- 🟢 Scaleway Object Storage (European alternative)
CI
CD
- 🟢 Through the chosen PaaS (Heroku / Scalingo)
- 🟡 Or GitHub Actions (for the more peculiar projects)
Monitoring
- 🟢 Rollbar
- 🟢 Librato
- 🟢 Papertrail
- 🟡 New Relic. In Heroku: use the addon.
- 🔴 Sentry In Heroku: use the addon. Avoid on small projects as it is cumbersome to set up to notify in Application Service when the project goes into maintenance.
Emails
- 🟢 Mailtrap for staging/review-apps.
- 🟢 SendInBlue: You’ll need to manually create a project account. Default configuration on Muffi Rails. Remember to set up DKIM.
- 🔴 SendGrid Countless issues when using the addon on Heroku. Accounts are banned on regular basis.
- 🔴 MailGun Countless issues when using the addon on Heroku. Accounts are banned on regular basis.
Mail testing
- 🟢 Use mail-tester to test mail setup.
DNS management
- 🟢 Cloudflare Use dns-configuration to manage the configuration.
Sending and receiving SMS
- 🟢 InMobile