Tech Stack
Client (Frontend)
-
JavaScript and TypeScript
-
- UI library
-
- Routing
-
Tanstack Query and Axios
- Data fetching and caching
-
- Headless tables
-
React Hook Form and Yup
- Form state management and validation
-
Reactstrap, Bootstrap and Bootstrap Icons
- Components, styling and icons for the UI
-
Various other libraries for specific components and utilities including:
Server (Backend)
- Ruby 3
- PostgreSQL and PG Search
- Database
- Ruby on Rails
- APIs and backend services (including ActionCable for WebSockets, ActiveStorage for file uploads, and ActiveJob for background jobs)
- Resque
- Background job processing
- Devise, Devise Token Auth and Omniauth
- Authentication
- Pundit
- Authorization
- ActiveAdmin, ActiveAdmin Addons and Arctic Admin
- Super admin interface
- Activity Notification
- Notifications
- Ancestry
- Hierarchical data
- Acts As Taggable On
- Tagging
- Friendly ID
- Slugs
- GeoCoder
- Geocoding
Common Questions
Why aren't you using TypeScript?
This project started as an internal project before it was clear that TypeScript was going to match our philosophy . We are gradually converting to TypeScript as we go and generate types as part of the package builds.
Rhino projects have always supported both TypeScript and JavaScript for implementation, currently providing Typescript 5.5 support.
Why aren't you using Next.js or Remix?
These are possible future directions for Rhino, as early adopter of Tanstack Query (rather than Redux) and drive for React Server Components and as a path for. We have also managed to keep the lower levels of our stack React Native friendly this way.
We also chose to go with Vite as we were migrating an existing Create React App project at the time (https://react.dev/learn/add-react-to-an-existing-project) and there are good Vite integrations for Rails. Additionally the Vite Plugin API allowed us to implement virtual modules and other tools. Remix is moving towards Vite as well.
Why are you using Ruby on Rails?
At the time the decision was made, Ruby on Rails was the most productive and well understood web framework for building web applications. It has a large ecosystem of libraries and tools, and a strong community as well as a track record of being used to build companies like Github and Shopify. It is also a good fit for the modular monolith architecture that we are using.
Still not satisfied? Start a discussion