- All projects should ideally be configured with the following solutions:
- Each project should have a linter configured and applied at commit and or on push to github Automatic build and deploy(CI/CD) on push to production branches
Front End Development
React.js + Typescript
Two of React’s most useful features are:
- use of the Virtual DOM (Document Object Model), which facilitates the creation of fast and responsive UIs while maintaining high app performance;
- component-based architecture, which is easier to maintain than other architectures.
Strict typing allows for easy debugging and cleaner code for complex projects. Code also becomes more self descriptive because the types’ definitions also work as documentation.
As a result, when you come back to the code after a while it’s easier to remember what it does by just reading it.
However Typescript has a slightly higher learning curve - currently not taught by any CS courses right now in BU. Leveraging the Create React App(CRA) Typescript setup is easy to add to existing or new React.js projects.
Create React App(CRA) is the easiest way to get started with React.js.
There are inherently less options for mobile applications. Either projects are built natively in which case, only a single option exists for each platform. Other projects would work well with a cross-platform development framework and should use one of the options below. Backend choices can be chosen from the backend section below.
Flutter - Cross-platform Mobile App Dev
Flutter is an open-source portable UI toolkit built by Google, it’s a comprehensive app Software Development Kit (SDK), complete with widgets and tools. Flutter enables cross-platform app development. It gives developers an easy way to build and deploy visually attractive, natively-compiled applications for mobile (iOS, Android), web, and desktop – all using a single codebase.
- It’s based on Dart – a fast, object-oriented programming language. It’s relatively new and easy to learn – especially for experienced developers more familiar with Java and C#.
- The architecture is based on the very popular reactive programming (it follows the same style as React)
- It provides its own widgets(similar to components in React), drawn from its own high-performance rendering engine – these are fast, attractive and customizable
- Excellent documentation with strong support from the Flutter team
- Very fast development time, good developer experience
Google provides excelent documentation and can be leveraged as your main source for documentation.
This is a non-comprehensive list of extensions and add-ons to the core flutter framework that Spark! recommends.
This is an inherently opinionated and project driven choice but we recommend the following:
- Flutter RiverPod - Most modern and fully featured. Stepper learning curve
- Provider - Less features but easier to learn, superseded by RiverPod
The backend of each project can be built using one of the combinations below. Severless provides the fastest time to run but does not enable as much customization as other options.
Firebase provides a pre-configured backend hosted and run by Google. Easy to learn and use.
Python Based API
Build a Python based API using:
- Flask, or FastAPI
- JWT or OAuth for all authentication
- Hosted SQL Database
- All running inside containers
Node.js Based API
Node.js API using the following technologies
- Node.js + Express
- JWT or OAuth for authenticated requests
- Hosted SQL Database All running inside containers