Skip to main content

Research

Community-driven feedback platforms have proven essential for allowing for collaboration between local residents, businesses, and governments. These platforms enable users to report issues, make suggestions, and keep updated with events and initiatives in their community. In our research into various existing platforms, we identified best practices and design considerations for our Community Impacts Portal, conducting an in-depth review of existing solutions that address similar challenges. These solutions include Nextdoor, FixMyStreet, and Reddit, each offering unique insights into community engagement and issue management.

Nextdoor

alt text

Nextdoor is a neighbourhood-based social networking service designed to facilitate communication and information sharing amongst residents within specific geographic areas. It allows users to report local issues, share recommendations for services, and organise community events, fostering a sense of local community [1].

Main FeaturesDescription
Localised FeedsTailored to specific neighbourhoods, ensuring users receive relevant information to their immediate surroundings. This feature enhances the platform's utility for addressing local concerns.
Incident ReportingUsers can report local incidents, such as suspicious activity or neighbourhood disruptions, and share information with their neighbours.
Community Organisation ToolsTools for organising community events, discussions, and local initiatives, promoting active participation and collaboration.
Lessons LearnedInsights
Relevance of LocalisationThe importance of delivering highly localised content feeds for maintaining relevance and context. We incorporated location-based filtering, to display local reports, articles and events, making it more personal and relevant to a user, similar to Nextdoor. This approach enhances user engagement by providing immediately relevant information.
Fostering Community EngagementThe emphasis on making it easy to share information and organise community activities. We recognised the need to provide intuitive tools that encourage active participation and interaction among users.

FixMyStreet

alt text

FixMyStreet is a platform that enables citizens to report public issues, such as potholes, graffiti, or broken streetlights, to local authorities. It streamlines the reporting process by providing a user-friendly interface for submitting issues and a tracking system for monitoring their resolution [2].

FixMyStreet’s success lays in its simplicity and transparency, offering clear status updates on reported issues. However, these systems were often limited to specific issue types and lacked broader community engagement features or multi-business involvement.

In our project, we expanded on this model by incorporating feedback for businesses and local services through discussions, allowing for a more dynamic and comprehensive approach. Additionally, we integrated AI-driven chatbots to respond to user queries in real time, ensuring immediate support without human intervention.


Main FeaturesDescription
Simple and Intuitive InterfaceDesigned to minimise time consumption during the issue reporting process, making it easy for citizens to submit reports.
Location-Based Issue ReportingUtilises location data to accurately pinpoint the location of public issues, ensuring reports are directed to the appropriate authorities.
Tracking SystemProvides a system for tracking the status of submitted reports, keeping citizens informed about the progress of issue resolution.
Lessons LearnedInsights
Minimising FrictionThe significance of designing a simple and intuitive user interface to optimise the use of time. We prioritised user experience to ensure that submitting and tracking issues is straightforward and efficient.
Importance of Location DataThe crucial role of location-based reporting in accurately identifying and addressing public issues. This informed our decision to incorporate location-based filtering, relying on user-provided location information.

Reddit

alt text

Reddit is a social news aggregation, web content rating, and discussion website where users can submit content, which is then voted up or down by other users. This system allows the community to influence the visibility of content and promote relevant discussions [3].

Main FeaturesDescription
Upvote/Downvote SystemA community-driven content ranking system that allows users to influence the visibility of posts and comments.
Categorised SubredditsDedicated spaces for focused discussions on specific topics, allowing users to engage with communities that share their interests.
Community-Driven ModerationA system of community moderators who help maintain relevant content and enforce community guidelines.
Lessons LearnedInsights
Community-Driven Content RankingThe value of a community-driven content ranking system in highlighting the most significant issues. We implemented a similar upvoting mechanism to ensure that the most important issues are given prominence.
Community ModerationThe importance of community moderation in maintaining relevant content and fostering a positive user experience. We have a content management page, where users with authorised access can moderate and edit events, articles, and reports.

Technology Review

Frontend Framework Comparison

FeatureReact with TailwindCSSHTML with Bootstrap
ArchitectureComponent-based architecture facilitates the creation of dynamic and interactive UIs.Lacks the modular approach of React, often leading to a more rigid structure.
State ManagementUses hooks and the Context API for seamless state management, enhancing modularity and maintainability.No inherent state management system, requires external libraries for complex state handling.
CustomisationTailwindCSS offers utility-first CSS classes, enabling rapid development and customisation, reducing the need for extra custom styling.Bootstrap offers pre-built components but is less flexible for customisation. Requires more effort to override default styles.
ReusabilityReact allows for the creation of reusable components, which speeds up development time and ensures UI consistency.HTML and Bootstrap don't offer the same level of component reusability, making code less modular.
MaintainabilityReact with TailwindCSS provides a more flexible and organised codebase, making it easier to maintain, especially in complex applications.HTML with Bootstrap can become less maintainable in complex applications due to its rigid structure and lack of modularity.
Learning CurveModerate, requires familiarity with React concepts (hooks, state management) and Tailwind’s utility classes.Low to moderate, familiar for those already accustomed to HTML and CSS, but may require some learning for customisation and layout adjustments with Bootstrap.
Development SpeedReact and TailwindCSS together speed up development due to modular components and pre-defined utility classes.Bootstrap offers ready-to-use components, speeding up initial development but lacks the flexibility for complex applications.
Community & EcosystemReact and TailwindCSS have large, active communities, offering extensive documentation, tutorials, and plugins.Bootstrap is widely used and has a large community, but lacks the level of customisation and extensibility that React and TailwindCSS provide.
ScalabilityReact’s component-based structure and TailwindCSS’s utility classes provide excellent scalability for large applications.Bootstrap’s rigid grid system and predefined components may make scaling more challenging, especially in complex applications.

Reason for Choosing React with TailwindCSS

The combination of React and TailwindCSS ensures a modern, fast, and responsive frontend with efficient state management and rapid development capabilities. React's virtual DOM optimises rendering performance, while TailwindCSS reduces the need for bulky external style sheets. Our team also had experience in using React and TailwindCSS for past projects as shown below, making the decision process of what to choose easier.


Backend Framework Comparison

FeatureDjango with SQLiteSpring Boot
Framework TypeHigh-level Python web framework with built-in tools for rapid development, including the Django Rest Framework (DRF) for building RESTful APIs.Java-based framework for creating stand-alone, production-grade applications, particularly microservices.
Data ManagementDjango’s powerful ORM simplifies data management, and SQLite is lightweight and easy to set up for development purposes.Requires manual configuration for data management, typically using JPA/Hibernate, which may increase setup time.
Security FeaturesBuilt-in security mechanisms protect against common vulnerabilities like SQL injection and cross-site scripting (XSS).Strong security support, but requires additional configuration and third-party libraries for common security features (e.g., CSRF protection, authentication).
ConfigurationFollows a convention-over-configuration approach, allowing for faster setup and reducing boilerplate code.Requires more configuration and setup compared to Django’s convention-over-configuration approach.
Development SpeedRapid development due to Django’s high-level abstractions and the DRF for building APIs.Development speed may be slower due to the need for more configuration and boilerplate code.
Suitability for Small ProjectsIdeal for rapid development of small to medium-sized projects, especially when quick prototyping and ease of use are priorities.More suitable for larger, more complex applications or microservices-based architectures, though it can also be used for small projects.
PerformanceExcellent for handling small to medium loads, but may need to be optimised for larger-scale applications.High-performance capabilities, especially for enterprise-level applications. Optimised for scalability, particularly in microservices environments.

Reason for Choosing Django over Spring Boot
Django’s simplicity, security, and robust data handling capabilities made it the ideal choice. Its high-level abstractions reduce boilerplate code and enhance productivity, while the DRF enables building APIs efficiently. Furthermore, Django’s community-driven packages add versatility without compromising code quality.

Summary of Technical Decisions

Our technical decisions were driven by the need to create a scalable, responsive, and secure platform that effectively addresses community needs. We leveraged React for its dynamic UI capabilities, TailwindCSS for rapid and consistent styling, and Django for its robust backend and security features.

References

[1] Nextdoor. "About Nextdoor." [Online]. Available: https://about.nextdoor.com/. [Accessed October 2024].

[2] FixMyStreet. "FixMyStreet." [Online]. Available: https://www.fixmystreet.com/. [Accessed October 2024].

[3] Reddit. "Reddit." [Online]. Available: https://redditinc.com/. [Accessed October 2024].

[4] React. "React Documentation." [Online]. Available: https://react.dev/. [Accessed October 2024].

[5] TailwindCSS. "Tailwind CSS Documentation." [Online]. Available: https://tailwindcss.com/docs. [Accessed October 2024].

[6] Django. "Django Documentation." [Online]. Available: https://docs.djangoproject.com/en/5.1/ [Accessed October 2024].