mirasoldavila13 / NeighborhoodAid

NeighborhoodAid is an interactive platform designed to empower communities by enabling users to report local issues like potholes, vandalism, and streetlight outages.
MIT License
0 stars 0 forks source link

NeighborhoodAid

License

MIT License

Description

NeighborhoodAid is a RESTful API and React-based platform designed to empower citizens to report local issues such as potholes, streetlight outages, or vandalism. The platform provides a seamless user experience where individuals can track the progress of their reports, receive real-time updates when issues are resolved, and engage with others in their community. By bringing communities together, NeighborhoodAid aims to foster civic engagement, transparency, and collaboration in solving local problems.

Motivation

The motivation behind NeighborhoodAid is to provide a practical and comprehensive solution for civic engagement and local issue resolution. The goal is to streamline the process of reporting, tracking, and managing community issues while fostering community interaction and collaboration. We believe that when communities work together, they become stronger and more resilient, and our platform serves as a bridge to facilitate that collaboration.

NeighborhoodAid encourages users to:

Core Features

Table of Contents

What We Did

During the development of NeighborhoodAid, we gained hands-on experience and deep insights into various technologies and concepts, building a robust, user-friendly platform focused on civic engagement and issue reporting.

1. Frontend Development with React, Tailwind CSS, and Vite

2. Backend Development with Node.js, Express.js, and Sequelize

3. Authentication and Security Techniques

4. API Integration and State Management

5. Full-Stack Development and Deployment

6. Database Management and Migrations

7. Responsive and Accessible Design

8. Collaboration and Version Control


Technologies Used


NeighborhoodAid has evolved into a dynamic platform, providing users with tools to report, track, and engage with community issues. The platform emphasizes security, accessibility, and scalability, ensuring seamless user experiences across devices and browsers. Through continuous development, the platform is well-positioned to foster meaningful community interactions and collaborations.

Features

Installation

  1. Clone the repository: git clone https://github.com/mirasoldavila13/NeighborhoodAid.git
  2. Navigate to the project directory: cd NeighborhoodAid
  3. Install the required dependencies: npm install
  4. Run the application:
    • For development: npm run start:dev
    • For production: npm start

Usage

NeighborhoodAid allows users to report community issues, track their progress, and engage with others in their neighborhood. To get started:

  1. Clone the repository and install dependencies as described above.
  2. Run the application using npm start.
  3. Access the platform through your browser at http://localhost:3001.

Note: Ensure that all required API keys are set up in your environment variables.

Attribution Watermark

NeighborhoodAid initially originated as a group project. However, due to team availability and shifting responsibilities, the project has since been further developed and expanded individually by Mirasol Davila. All subsequent feature implementations, optimizations, and refinements were led solely by Mirasol Davila to enhance the platform’s functionality, scalability, and user experience.

Credits

Version 1.0 Contributions

Mirasol Davila served as the Lead Full Stack Developer for the initial version of NeighborhoodAid, taking charge of the majority of development tasks. Below is a summary of the key contributions made by Mirasol Davila:

Component/Feature Description Details
GitHub Issue Template Created a standardized GitHub issue template for user stories and issues. - Ensured consistency in the creation of 16 GitHub issues, covering frontend, backend, and API integration tasks.
Official Logo Designed the official logo for the platform. - Developed multiple logo concepts emphasizing community, support, and local engagement. LandingPage.tsx Developed as the main entry point for the Neighborhood Aid platform. Integrated child components (Nav, Hero, Features, FAQ, Testimonials, Newsletter, Footer) using React and TypeScript for a cohesive, maintainable, and responsive design with Tailwind CSS.
Nav.tsx Designed and developed the navigation component for desktop and mobile views. Implemented dynamic menu state management, responsive design with Tailwind CSS, accessibility enhancements using semantic HTML, and consistent visual styling for hover and interaction states.
Newsletter.tsx Created a subscription section to encourage user engagement and sign-ups. Developed responsive form elements, incorporated Tailwind CSS for consistent styling, and ensured accessibility with semantic structuring and clear placeholder texts.
FAQ.tsx Built an interactive FAQ section using an accordion-style interface. Managed state with useState, implemented dynamic styling for active states using Tailwind CSS, and ensured accessibility with semantic HTML and screen reader support.
Features.tsx Showcased platform features using an interactive tab system. Developed dynamic feature panels with React, integrated SVG assets, and used Tailwind CSS for responsiveness and consistent styling.
Pricing.tsx Developed the Pricing component highlighting different subscription plans. Designed tiered pricing cards with Tailwind CSS, integrated navigation components, ensured responsive behavior across devices, and included interactive CTAs to drive user engagement.
Testimonials.tsx Built the Testimonials component to showcase user feedback. Implemented a responsive grid layout, applied Tailwind CSS for consistent styling, and created a dynamic testimonial display system with hover effects and interactive design elements.
MapWithAddress.tsx Developed an interactive map component using React, TypeScript, and React Leaflet. Integrated OpenStreetMap, Nominatim, and OpenWeather APIs for robust geolocation capabilities and developed dynamic marker handling and state management for a user-friendly experience.
ReportPage.tsx Created the Report page for users to submit detailed reports about local issues. Integrated MapWithAddress for location selection, weather data fetching, and developed a comprehensive form with Tailwind CSS for a streamlined reporting experience.
authService.ts Enhanced the authentication service to include registration, login, and Spotify API integration. Developed robust JWT token management, error handling, and session management functionalities. Implemented Spotify API calls for fetching user playlists and managing authentication tokens.
Middleware Implementations Added critical middlewares to manage and secure server requests. Implemented CORS for cross-origin requests, logger for monitoring and debugging, and error handling middleware for consistent API responses.
Database Migrations Developed migrations for essential tables such as Users, Issues, Feeds, and Comments using Sequelize. Applied up and down migrations to manage schema changes, implemented validation rules, and ensured schema alignment with project requirements.
Database Modeling Defined and managed associations between Sequelize models for Feeds, Comments, and Users. Implemented relationships (belongsTo, hasMany) and ensured proper model initialization for data integrity.
API Routes Contributions Developed robust API routes for managing authentication, community feeds, and reporting issues. Implemented routes for creating, updating, deleting, and fetching feed posts. Integrated report submission routes with weather and geolocation APIs for enhanced context and error handling mechanisms.
Database Seeding Contribution Created seed scripts for populating authority reports for testing and development purposes. Developed seed files using Sequelize’s bulkCreate with error handling and structured sample data for realistic testing scenarios.
.sequelizerc Configuration Customized the .sequelizerc file to ensure organized paths for migrations, models, and seeders. Configured paths for models, seeders, and migrations, ensuring consistent file structuring and ease of access for development and database management.
Server Configuration Enhanced the server.js file with middleware integration, route organization, and production setup. Integrated CORS, logger, and error handling middleware, structured routes for clarity, and set up production configuration for serving the client-side application.
Modal.tsx Developed a reusable modal component for displaying dynamic messages. Implemented flexible props for type safety, dynamic rendering based on state, and used Tailwind CSS for styling. Ensured reusability and accessibility across modules.
Weather.tsx Developed a component to provide real-time weather updates. Integrated multiple APIs (browser geolocation, OpenWeather) and used Axios for API calls. Styled with Tailwind CSS for a clean and responsive display. Included error handling for user feedback.
Hero.tsx Designed the hero section for the platform’s landing page. Structured a visually engaging layout with responsive flex settings, integrated SVG images, and styled text for emphasis. Ensured the component is responsive and accessible.
DashboardNav.tsx Developed the dashboard navigation component for logged-in users. Included navigation links, integrated authentication checks, and implemented logout functionality. Styled with Tailwind CSS for responsive behavior and user experience.
Dashboard.tsx Developed the Dashboard page, providing an interactive community feed and weather updates. Implemented authentication checks, dynamic post management (like, comment, edit, delete), and integrated the Weather component. Styled for consistency using Tailwind CSS.
Login.tsx & UserRegistration.tsx Created the login and registration pages for secure user authentication. Integrated form validation, used authService for login and registration functionality, implemented a modal for feedback, and styled with Tailwind CSS for a professional and responsive design.
RESTful API Implementation Built the backend API using Express.js to follow RESTful principles for efficient and organized data handling. Developed routes for CRUD operations across various models (e.g., user registration, feeds, reporting), ensuring data integrity and secure interactions with authentication middleware.
Full-Stack Development Combined frontend and backend technologies to create a seamless and integrated platform. Utilized React and TypeScript for frontend development and Express.js with Sequelize for the backend, connecting components using Axios for RESTful API interactions and state management.

In Collaboration With


Version 2.0 Contributions

Overview

The development of Version 2.0 of NeighborhoodAid was completed under the leadership of Mirasol Davila, building on the solid foundation established during the early stages of the project.

While Justin Kao, Isaiah Skidmore, and Sammy Kordi made early contributions during Version 1.0, they have since shifted focus to other commitments. Their efforts provided helpful starting points for the project, and we appreciate their involvement in the initial stages.

All new features, improvements, and refinements in Version 2.0 were designed, developed, and implemented solely by Mirasol Davila. This release introduces key enhancements that significantly expand the platform’s functionality and usability, laying the groundwork for future developments.


Version 2.0 Completed Contributions

Frontend Pages


Frontend Components


Backend Routes and Models


Auth and Services


API Integrations and Middleware


Version 2.0 Summary

The updates in Version 2.0 have significantly improved the platform by introducing:

  1. Comprehensive Reporting System

    • Users can now create, view, edit, and delete reports for both community and authority issues.
  2. Interactive Maps

    • Location-based reporting is enhanced with drag-and-drop marker functionality.
  3. Authentication and Security

    • All routes are protected using JWT authentication, ensuring secure access.
  4. Weather and Geolocation Features

    • Reports display real-time weather updates and accurate geolocation data.
  5. UI/UX Enhancements

    • New pages, including Careers, Blog, and Our Team, offer an engaging and informative user experience.

Filtering Functionality


Report Actions


Community Report Page (CommunityReportPage.tsx)

  1. Authentication Check

    • Redirects users to the homepage if they are not logged in.
  2. User Input Management

    • Tracks user input for issue title, description, email, and phone number.
  3. Map Integration

    • Users select the location of the issue on an interactive map.
    • Captures latitude, longitude, address, and city.
  4. Submitting the Report

    • Uses JWT tokens to authenticate users and submit reports.
    • Redirects users to their reported issues dashboard upon success.

Tracking and Interaction


Notes

NeighborhoodAid has evolved with Version 2.0, delivering enhanced reporting systems, interactive maps, and seamless user authentication.

As Version 3.0 begins, the focus will shift toward new integrations, such as the Spotify API, allowing users to share music and create collaborative playlists. Under Mirasol Davila’s leadership, the project will continue to expand, ensuring NeighborhoodAid becomes a vibrant and connected tool for communities.

Reflection: The rapid progress in Version 2.0 highlights the dedication and collaborative spirit of the project. With these enhancements, NeighborhoodAid is well-positioned to grow further, making meaningful contributions to community life.

License

This project is licensed under the MIT license.

Badges

MIT License JavaScript] TypeScript React Node.js Express Sequelize PostgreSQL Tailwind CSS RESTful API Axios Leaflet OpenWeather Nominatim Spotify API GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub stars GitHub forks LOC GitHub last commit GitHub contributors

Features

How to Contribute

Contributions are welcome! To contribute to NeighborhoodAid, follow these steps:

  1. Fork the Repository: Click the 'Fork' button at the top right of this page to create a copy of this repository under your GitHub account.
  2. Clone Your Fork: Use git clone to download the forked repository to your local machine.
  3. Create a Branch: Create a new branch for your feature or fix using git checkout -b branch-name.
  4. Make Your Changes: Implement your changes or additions to the project.
  5. Commit Your Changes: Use git commit -m "Description of changes" to commit your changes.
  6. Push to Your Fork: Use git push origin branch-name to push your changes to your forked repository.
  7. Create a Pull Request: Navigate to the original repository and click the 'New Pull Request' button. Provide a detailed description of your changes in the pull request.

Tests

To test the NeighborhoodAid platform, follow these steps:

Future Implementations

Spotify API Integration

AI-Based Sentiment Analysis

Questions

If you have any questions about the project, you can contact me via my GitHub profile at mirasoldavila13

Walkthrough Video

Check Out the Project on Render

The live version of NeighborhoodAid is hosted on Render. Click the link below to explore the platform and experience all the features implemented in Version 2.0:

NeighborhoodAid on Render

Feel free to create reports, explore the interactive map, and browse the community features. Your feedback is always welcome as we continue to enhance the platform in future versions.

NeighborhoodAid in Action