summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2025-10-13 15:58:20 +0300
committerA Farzat <a@farzat.xyz>2025-10-13 15:58:20 +0300
commitdc24310ab404f99fc1abec538dfce865da0a1c5f (patch)
tree6a9b52375c37c799f3e992766cdfcc264f85fc34
parente4dd604e0fb47d48cb357ef0870d82c906d44a6f (diff)
downloadcsca5028-dc24310ab404f99fc1abec538dfce865da0a1c5f.tar.gz
csca5028-dc24310ab404f99fc1abec538dfce865da0a1c5f.zip
Add the requirements specifications
-rw-r--r--README.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/README.md b/README.md
index 9f75c68..5d9c61b 100644
--- a/README.md
+++ b/README.md
@@ -92,3 +92,36 @@ MongoDB before and felt comfortable with its JSON-like syntax. I was set on lear
SQL, but that was going to take some time and I did not want to wait until I learned
it to start the project. Now that I am taking the [Databases](https://www.colorado.edu/program/data-science/databases)
specialisation though, if I were to redo the project I would definitely use SQL.
+
+## Requirements
+
+### User requirements
+
+1. The user should be able to add subscriptions using their YouTube URLs (channels
+or playlists).
+2. The user should be able to set and modify the duration between fetches for each
+subscription (some may upload more frequently than others).
+3. The user should be able to delete subscriptions.
+4. The user should be able to see the videos of each subscription along with the
+duration of each video.
+5. New videos (added since last time viewed) should be indicated to the user.
+
+### System requirements
+
+1. The application should be able to verify valid YouTube URLs.
+2. The application should be able to identify valid subscription.
+3. The application should be able to convert channel/playlist URLs to feed links.
+4. The flask application should have CRUD APIs set up.
+5. The data collector should be able to fetch each subscription with the appropriate
+interval between fetches (set duration + <= 60s).
+6. The data collector should be able to identify new/updated videos.
+7. The data analyser should update all non-analysed videos in each iteration.
+8. The data analyser should get the correct duration (as long as the video is not
+private for example).
+9. The database (MongoDB in this example) should store the data persistently.
+10. The React.js application should be able to correctly communicate with the appropriate
+APIs from the flask application.
+
+All of these are easy to test. That being said, some of them, like 5., would take
+a considerable time to test, even for an integration test. For the purpose of this
+project, only tests taking under a minute were allowed into the integration test.