cos301-se-2022 / charity-spot Goto Github PK
View Code? Open in Web Editor NEWCharity-Spot: A platform to connect organisations who would like to donate items, and people in need who require those items.
Charity-Spot: A platform to connect organisations who would like to donate items, and people in need who require those items.
No more server-sent events xD
Create an API call and corresponding service that will fetch all of the notifications of a user. From now on we should refer to both assisting organisations and parties in need as users to prevent name confusion. The messages that have a "true" in the db for either the AlertClient or AlertOrg columns should return a notification for each chat given the id of a user. So we want a list of all of the chats that have a new message that the logged in user has not read yet. We should repeat the exact same process for scheduled deliveries. It could like like this:
You have a new message from user x
You have a new message from user y
A delivery has been scheduled with you by user z
There should also be an api call that will update the AlertClient or AlertOrg columns in the db. The logged in user will have a button that they can click called "viewed" for each active notification. Once the notification has been "viewed" it should no longer be in the list of active notifications.
Please ask David to create the repo functions that you need/ make changes to the tables where necessary.
The section/page should display all of the scheduled deliveries as a list that can be dropped down, etc. to display more information about the delivery/collection. It can look similar to the history section of the donate page
The flow of how an assisting party will reach this stage:
-->Party in need finds an assisting party with an item that they would like to have
-->Party in need navigates to the profile page of the assisting party and sends them a message asking for an item
-->Assisting party reads to the message and decides to donate item to that person
-->Assisting party navigates to the profile page of the party in need and clicks a button that will allow them to schedule the delivery
-->A form is presented to the assisting party where they can schedule the delivery
-->A notification is sent to the party in need that a delivery has been scheduled with them
-->If the party in need would like to change the date/ location of the delivery, they will have to message the assisting party and ask them to update the information of the delivery.
-->Both the parties in need and assisting parties should be able to view all of their schedule deliveries as a list by navigating to their profile and going to a "Scheduled deliveries" section
The form is going to make use of the google maps api for the location, but for now we can just have it be a string. The items should be displayed as a drop down list/ radio group from all of the items that the assisting party currently has available. The date and time of the delivery can be anything xD.
We can write the code in the organisation-profile repo layer
The flow of how an assisting party will reach this stage:
-->Party in need finds an assisting party with an item that they would like to have
-->Party in need navigates to the profile page of the assisting party and sends them a message asking for an item
-->Assisting party reads to the message and decides to donate item to that person
-->Assisting party navigates to the profile page of the party in need and clicks a button that will allow them to schedule the delivery
-->A form is presented to the assisting party where they can schedule the delivery
-->A notification is sent to the party in need that a delivery has been scheduled with them
-->If the party in need would like to change the date/ location of the delivery, they will have to message the assisting party and ask them to update the information of the delivery.
-->Both the parties in need and assisting parties should be able to view all of their schedule deliveries as a list by navigating to their profile and going to a "Scheduled deliveries" section
Create an API call that we can use to store a comment in our database. The API call should take the ID of the user that wrote the comment, the ID of the user that the comment was written for and the comment itself. Create a corresponding API call that we can use to store a rating.
Also, please create an API call that will return all of the comments that were left for a user given their ID. The API call should return the ID's of the users that wrote the comments and the comments themselves. Create an identical API call that we can use for ratings.
The api call should take in the type of the item, a location ("Pretoria", "Cape Town" , etc) and the day of the week that the person needs the item. The service layer will make use of the AI by sending requests to a port (ex. localhost:50 with a string containing the info). The AI will return a list of charities and their info that must then be returned to the client.
Create a table in our db that will be used to store the ratings and the comments that are left on the profile pages of users.
The table should have the id of a user, the id of the user who left the comment and rating, the comment , the rating
Other columns can be added if you feel that is is necessary. Also, please create the corresponding repo functions that we need to read and write to the table.
The flow of how an assisting party will reach this stage:
-->Party in need finds an assisting party with an item that they would like to have
-->Party in need navigates to the profile page of the assisting party and sends them a message asking for an item
-->Assisting party reads to the message and decides to donate item to that person
-->Assisting party navigates to the profile page of the party in need and clicks a button that will allow them to schedule the delivery
-->A form is presented to the assisting party where they can schedule the delivery
-->A notification is sent to the party in need that a delivery has been scheduled with them
-->If the party in need would like to change the date/ location of the delivery, they will have to message the assisting party and ask them to update the information of the delivery.
-->Both the parties in need and assisting parties should be able to view all of their schedule deliveries as a list by navigating to their profile and going to a "Scheduled deliveries" section
Unit
The tests that were written for demo 3 need to be working fully. I will help to fix the linting errors with the code so that the tests can be run on github. We should focus on the unit tests for each feature that we have at the moment. The unit tests for the notification and comment/rating features can be done in our second sprint. But the unit tests that we have for all of our current features need to be working perfectly. If we change some code for the features that are done I will help update the tests. We also need to create a document for the tests
Integration
Our integration tests can be done after all of the unit tests are done. We will still be working on the design of the UI so the integration tests we have currently might not be usable after. I will help write the integration tests if we do not complete the UI in time. We also need to add our integration tests to the testing documentation.
The page should be on the navbar. It should look similar to the donate page, but it does not need a history section. A client should be able to enter the type of item that they need, their location and the day of the week that they need the item. The page should then be reloaded to display a list of charities that the AI has predicted might be able to help them.
I will help research how we can do this. I know there is a way but I'm not exactly sure xD
The database should be normalized if possible. The names of columns could also be changed if needed since the structure of the system has changed somewhat.
The two python programs responsible for seeding our database and creating the files needed by the AI can also be updated to work with the new database structure. The data is filled with patterns that our AI is meant to find while being trained. We should add descriptions and ratings/comments to the program to make the mock donations feel more real.
We might change the patterns slightly if needed, but the overall structure of our mock data should not need to be changed.
Also, please add an AlertClient and AlertOrg column to the delivery table.
The new identity used to refer to assisting organisations in the db is assist and for organisations in need it is need. Both people in need and assisting organistions can be referred to as users or organisations. This naming scheme is to avoid confusion xD
Use NodeMailer
to send registration confirmation email.
The email should contain a secrete, randomly generated code that the user will input on the registration page for verification.
The user's information will not be saved on the database if this is not completed within an acceptable time frame. So, the user will not be able to use the interactive feature (Charity-Spot) if they are not verified.
Update registration page to allow a user to upload a picture.
The picture should be converted to base64
and the link to the image should be stored in the db.
Same as the pictures for donated items
Create a page that will display a logged in user's active notifications. Both parties in need and assisting organisations will be referred to as users from now on to prevent confusion about the names. The notifications could resemble something like this:
You have a new message from user y
You have a new message from user x
User z scheduled a delivery with you
Each active notification should have a button called "viewed" or something else that will remove the notification from the user's active list of notifications. You can decide what information you would like to show(profile pictures, etc) for each notification.
There should also be something on the nav bar that will alert the user if they have a new notification. It could be text "notifications" or an icon that will change colour if there are notifications that have not been "viewed" yet.
TASKS
Update profile to use the image from our database.
A user should be able to update their picture from the edit page.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.