Our SDLC has a systematic approach to the development of BlueWave Labs, which includes building, deploying and maintaining our software. We use a combination of Waterfall Model and Agile Development. Combining Waterfall and Agile methodologies, (“Water-Scrum-Fall”) is beneficial in situations where there are both predictable and unpredictable elements in a project.
In this model, the following phases are Waterfall:
- Initial Planning Phase
- Integration and Testing
- Documentation
Those phases are Agile:
- Iterative Development
- Deployment and Maintenance
- Feedback Loop
Steps to build our products
There are several steps to build our products in BlueWave Labs, and here is a non-exhaustive and non-definitive list.
- We first examine similar products and build a design on Figma. The dashboard design doesn’t have to be final, but the design system does.
- Each design component is assigned to frontend developers.
- We build a backend database schema with the help of Prisma. We think about which tables are required, and which relations there are between tables.
- We build the frontend without API connectivity.
- We build the backend that requires queries with REST API.
- On the front end, we connect to those APIs. We implement caching where required (e.g like, follow) so they don’t wait for the API.
- When APIs are connected, we implement the API permissions on the backend. If a user shouldn’t access a specific resource, we implement the limitation associated to that resource.
- We deploy the backend and frontends on AWS.
- Domain is setup on Cloudflare and DNS definitions are done (this is mostly done only once).
- Another frontend and backend copy is deployed on Staging, again on AWS.
- Once the deployments are done, CircleCI is integrated so that every commit is moved automatically to live instance.
- Backups are triggered for the live server (dai̇ly or weekly, depending on the project).
Other design and development decisions are as follows:
- We use React.js and MUI framework together with Node.js and PostgreSQL. There are other helper libraries we use as well (eg. Prisma).
- Bugs and issues are reported, tracked, and resolved using GitHub’s issue tracking system.
- Continuous Integration (CI) is set up on CircleCI to automate code integration and testing.
- Deployments are scheduled every 2 weeks, aligning with the team’s sprint cycles
- All issues are monitored on Github Issues.
- Feedback from users and stakeholders is collected on Github boards and roadmaps.