The assignment concerns building a social media platform. Users will be able to create stories (text and multiple images) and post them on the platform. They will also be able to access stories written by others. Users will be able to like or dislike stories using a 0-4 marking scheme (0= dislike, 4=love). They will see the stories in an order tailored to their interests.
任务涉及建立社交媒体平台。 用户将能够创建故事(文本和多个图像) 并将其发布在平台上。 他们还将能够访问其他人撰写的故事。 用户将能 够使用0-4标记架构(0 =不喜欢,4 =喜爱)来喜欢或不喜欢故事。 他们 将按照自己的兴趣按顺序观看故事。
1.建立PWA
构建一个渐进式Web应用程序,使所有用户能够: ● 发布故事,包括文字和多张图片
Post stories including text and multiple images
● 他们的故事显示在他们的个人墙上,在那里他们还可以看到别人的点赞
Their stories are displayed on their personal wall where they can also see the likes left by others
● 阅读其他人创建的故事,这些故事将显示在故事墙上。 ❏ 以时间顺序显示
❏ 以系统推荐显示
Read the stories created by others which will be presented on a stories wall:
❏ in chronological order
❏ in order of preference as suggested by the recommender system
● 喜欢或不喜欢别人写的故事(范围0-4)。
Like or dislike a story written by others (range 0-4).
页面如下
Photos
PWA允许通过使用相机将它们添加到故事中,或者通过从文件系统或电话库中上传现有照片 来将它们添加到故事中。
The PWA will allow you to add photos to the stories either by taking them with the camera or by uploading existing photos from the file system or a phone‘s library.
Stories
● pictures(0-3张)
● text (最多150字符)
● date and time
● author
其他要求
PWA必须具有以下特征:
● 它必须使用网络工作者来允许离线工作(常见的移动体验)。 离线模式必须同时用于
查询和存储故事/喜欢
● 它必须在本地将数据存储到IndexedDB结构中
● 在线时必须与远程MongoDB服务器同步
● 在从服务器检索数据时,它绝不能让用户等待; 即网络支持PWA的工作人员将不得不
使用诸如获取时过时或网络与缓存之间竞争的策略。
2.构建一个NodeJS服务器以从PWA收集数据 建立一个服务器,收集PWA捕获的数据。 它将允许与PWA同步-例如,如果用户A将事件添加
到事件中,则该故事应在PWA的所有用户访问站点时提供给他们。 该服务器必须由MongoDB数据库支持以存储和搜索信息。
服务器必须在Express / NodeJS中实现,并且必须同时使用Ajax和socket.io与客户端进行通 信。 这意味着不能接受来自HTML表单的简单直接POST; 一些功能将使用Ajax实现,其他功 能将在socket.io中实现。
数据通信必须使用JSON实现。 服务器必须可扩展到潜在的数千个用户,因此您的解决方案必须在服务器端无阻塞。
MongoDB数据的组织由您自己决定。 但是,请注意第1.3节中建议的组织。
3.推荐故事
当用户在线时,墙上将显示新故事。
离线时,它将仅显示已缓存的故事。 用户将能够选择是以时间顺序还是以推荐算法建议的顺序观看故事。该算法将使用所有用户及 其喜欢的数据以及特定用户的喜欢的数据来提供推荐。它将采用基于项目的推荐策略(即将根 据到目前为止喜欢的故事来建议故事)。
系统将为您提供n个用户及其故事的库,以及提供给故事的赞。您必须开发一种推荐程序算法 ,该算法能够根据给定的个人历史为用户提供正确的建议。您需要使用讲座中介绍的方法。 用户和故事库将包含:
● a json array of stories {storyId, userId, text}
● a json array of users including their likes {userId, [{storyId, vote]}
建议在MongoDb中使用此组织,以便可以直接上传文件。