kwubbenhorst / helpful-stranger

A platform where seniors can offer pet services in exchange for daily-living help by pet owners. This full-stack app features a RESTful API built with Node.js and EXpress.js, Handlebars.js used as the template engine, MySQL and Sequelize ORM used to interact with the database, and npm's nodemailer package to email users. It's deployed with Heroku.
MIT License
0 stars 0 forks source link

Calendar Feature: Implement the calendar feature to showcase user availability and allow service booking (across all files) #7

Open kwubbenhorst opened 8 months ago

kwubbenhorst commented 8 months ago

Developer 2 (secondary task): Work with any files related to the calendar feature. Collaborate with Developer 1 to ensure that the calendar feature aligns with backend routes and logic. Coordinate with other developers to integrate the calendar feature into user profiles and service listings. Consider the calendar interfaces available from FullCalendar (a feature-rich calendar library that supports dragging and dropping events, various view modes, and customization options. It's open-source and available for free, website https://fullcalendar.io/), Flatpickr (a lightweight and customizable date/time picker library that can be integrated into a calendar interface), or Bootstrap Datepicker if using bootstrap, a component that can be used for selecting dates. React Big Calendar is also popular for projects that use React.
We want the calendar feature to do some if not all of the following:

User Availability Calendar: Allow service providers to set their availability by marking specific dates and times when they are willing to offer services. Use a calendar interface where users can easily select and mark their available slots.

Booking System: Implement a booking system that enables users seeking services to view the availability of service providers. Allow users to request a service for a specific date and time based on the provider's availability.

Real-Time Updates: Ensure that the calendar updates in real-time, reflecting any changes in a user's availability or booked slots. Implement WebSocket or a similar technology to provide instant updates without the need for manual page refreshes. Web sockets are a communication protocol that enables real-time, bidirectional communication between clients and servers over a single, long-lived connection. WebSockets are useful for implementing features that require instant updates, such as real-time notifications or live chat. Popular libraries for implementing WebSockets in Node.js include socket.io and ws. socket.io: It is a popular library that simplifies real-time communication between clients and servers. It supports both WebSocket and fallback mechanisms for environments where WebSockets are not available. ws (WebSocket): It is a simple and lightweight WebSocket library for Node.js. Both socket.io and ws are open-source and free to use.

Notifications: Integrate email or in-app notifications to inform users when a service request is made or accepted, along with details about the booked slot.

Timezone Considerations: Take into account the timezone of both service providers and service seekers to avoid confusion in scheduling. May not be relevant since service providers and seekers must live in local proximity.

Service Details and Descriptions: Allow service providers to include additional details about the services offered during specific time slots, helping users make informed decisions.

Calendar Filters and Search: Implement filters and search functionalities to help users find services based on specific criteria, such as location, type of service, or availability.

User Profile Integration: Display the availability calendar as part of each user's profile, creating a comprehensive view of their offered services and available time slots.

Booking Confirmation and Reminders: Upon booking, send confirmation emails or in-app messages to both the service provider and the service seeker. Implement reminder notifications closer to the booked date and time.

Cancellation and Rescheduling: Include features for users to cancel or reschedule bookings, with appropriate notifications sent to both parties.