Team undefined
presentGood Neighbour

Good Neighbour Demo Video

Good Neighbour Demo Video

Support your neighbours!

This app designed to foster community support and connectivity. It allows users to request and offer help to neighbours living nearby, cultivating a stronger, more supportive community.
Some of the members of the team expressed their desire to help their neighbours, especially as they lived in communities with many elderly folk.
We designed this app's architecture with accessibility in mind - whilst at the moment we have not implemented such features, we have the flexibility to do through our design. Our user experience is catered for users who are less tech savvy, such as elderly people.

The Team

  • Team member imagePreview: Team member image

    Greg Wall

  • Team member imagePreview: Team member image

    Maksim

  • Team member imagePreview: Team member image

    Serhii

  • Team member imagePreview: Team member image

    Shaquille Kiragu

  • Team member imagePreview: Team member image

    Kam Cheng

Technologies

Logos for Jest, Open AI, FakerJS, React, Express, Figma, PostgreSQL, TypeScript, SwaggerPreview: Logos for Jest, Open AI, FakerJS, React, Express, Figma, PostgreSQL, TypeScript, Swagger

We used: Figma, Design Thinking, Layered Architecture, Presentational/Container Components Pattern, Jest TDD, TypeScript, PostgreSQL, Express.js, Swagger/OpenAPI, Faker.js, Ant Design, JavaScript, React

For the app architecture, we implemented a layered architecture for the backend. This ensured a modular and maintainable codebase.
For API documentation, we used Swagger, which allowed us to create interactive and easily understandable API documentation for developers and we can use this documentation for validation using the express-openapi-validator.
On the frontend, we used a presentational and container components pattern. The
presentational layer contains minimal logic, allowing us to easily rewrite our application in
React Native or another library with better accessibility support.
We set up our server using Express on TypeScript and chose PostgreSQL as our relational database for efficiently storing user data and requests. TypeScript improves the developer experience with many features like type checking and early error detection, ultimately making the code easier to understand and maintain. We used Express as the whole team was proficient in using it, and because it is lightweight and it works well with layered architecture. We chose a relational database because it ensures data integrity and allows complex queries and relationships between users, requests, and offers, which are crucial for maintaining the structured and interconnected nature of our data.
For testing, we implemented Jest to guarantee our TypeScript code is reliable and performs well. We followed Test-Driven Development (TDD) to ensure our features were thoroughly tested from the start. It ensured our development process was more predictable.
We used the Ant Design Library frontend component library as it gave us access to a comprehensive collection of high-quality and reusable components. This ensured a consistent and professional look for our application.
We chose React as it seamlessly integrates with React Native, allowing for a consistent development experience across both web and mobile platforms.

Challenges Faced

Architecture, planning and prioritising: our application is not simple, and so we went back to amend the plan and architecture after a couple of days of development. But we got there after a few days and were able to work well within the architecture we built.
Container presentational pattern: It was not easy to plan the front end architecture to make it reusable and make it flexible for future changes. But we did it well in the end.