# Final Project Report
## Summary/Debrief
Over the course of this term, we managed to ship a feature-complete product. We put a lot of hard work into perfecting it to make sure that our core functionalities worked correctly, and that the user experience was the best that we could make it. Overall, we feel proud in having shipped authentication, clip editing, video processing and trimming, transcript editing, and a clean upload/download experience. Although we did not have the time to ship YouTube publishing, we would consider our product to be feature complete, as the publishing feature is not central to our fundamental value proposition -- the user is still able to quickly and easily obtain clips from their videos.
## Validation
Initially, our plan for validation involved garnering user feedback and performing user testing. However, due to a variety of factors, this was not as successful as we had hoped. In the run-up to Technigala, we were heavily focused on fixing bugs and refining our user experience. We prioritized ensuring that the features we had built were functioning as expected and that the user interface was intuitive and user-friendly.
The significant time and resources required to debug and polish the application meant we did not have enough time to conduct comprehensive user testing. Although we managed to showcase the product to friends and get general feedback from them, we did not manage to obtain feedback from real content creators, which would have been invaluable in confirming whether our product met user expectations and requirements.
One of the features we initially planned for our product was the ability to schedule clips to be uploaded to YouTube. We envisioned this as an added functionality that would have potentially improved user convenience, allowing them to seamlessly share their edited content with a larger audience.
Unfortunately, our focus was on other core features of the application, ensuring they worked flawlessly and provided a high-quality user experience. As we neared Technigala, we made a conscious decision to focus our efforts on refining existing functionalities and polishing the application rather than risk introducing a potentially unstable feature.
## Potential Next Steps
There are three large features that came up in our team's discussions over the course of these two terms that are not included in our current release.
One of these features was to give the user a way to publish their clips directly to YouTube Shorts from our application, without having to download them to their computer. This feature could potentially be built into our Clip Review page (the page where the user can currently download their video), as there is enough space on this page to fit another feature like this. From there, once publishing is implemented, we could implement a publishing schedule feature, which would occupy a new tab in the Navbar (note that we removed the Navbar tabs from our project since the current version only has one tab, Videos, so having tabs became unnecessary. But as more features get added, we could bring tabs back.)
The second feature, which could occupy a third Navbar tab in addition to Videos and Schedule, would be a Clip Library. This Clip Library would contain a list of all clips that have been generated for the user (from all of their long-form videos), and it would allow them to filter by clips that the user has "starred". This simply would provide an alternate view of the user's clips (as opposed to all the clips being accessible only under their particular video).
The third feature would be to display on a clip card (within the clip grid) the primary emotion that was detected for that given clip (e.g. "happy," "angry," funny," etc.). In our model, we were able to draw out the total intensity of the emotions for each phrase, but unfortunately, after a lot of trying, we were ultimately unable to retrieve which specific emotion had the highest contribution to this scalar value. This is because we optimized our model to look for total amount of emotion rather than to pay attention to particular emotions, under the premise that this would lead our model to find the most interesting material. This meant that the sentiment analysis we ended up recieving was a scalar value of high or low sentiment, which isn't particularly useful for displaying what emotion was found. Ultimately, however, this would be a positive next-step -- but it would require some substantial restructuring of how we do our sentiment analysis.
## Final Takeaways
We learned a lot about react, flask, python, ffmpeg, and AI. We also gained a better understanding of what it takes to build, test, debug, and maintain a project that is significantly greater in scale than what is assigned in standard COSC classes. From the get-go, this project demanded a substantially different approach, and there were many consequential decisions that had to be made, both with the User Experience and User Journey in mind, as well as with our backend architecture in mind. Of course, we also gained a better understanding of how software can be developed efficiently within a team environment and the importance of consant communication.
One important thing that we learned, possibly a little too late, was the need for high iteration speed. When videos take almost 10 minutes to process, and each change you make takes that long to test, things become much harder to build. We should have started using shorter videos and testing components individually to reduce this end to end test time.
Additionally, we learned that pushing out PRs early, despite being imperfect reduces stress down the line. While PRs merging into main should certainly not introduce bugs, they don't always need to introduce massive changes or be absolutely perfect stylistically. Sometimes, code became irrelevant or incompatible because we either sat on that code too long in our own branches while the app was changing and improving, or because we decided to work on a feature that had not been comprehensively designed / thought through yet and that later had to be re-iterated. Of course, in a major project like this, it is difficult to prevent this from happening entirely, but there are things we could have done differently that would have helped, such as by discussing more decisions together as a team and through coming up with smaller, more modular milestones.
## Medium Article
Here's the link to our Medium article:
https://medium.com/dartmouth-cs98/revolutionize-your-content-creation-with-clipcloud-discover-create-and-share-the-best-moments-e79a82c902e3
## Deployment
ClipCloud is deployed at clipcloud.us
## Gifs
*lots of gifs of the cool parts of your project*!
#### Uploading a Video:

#### Navigating the Videos and Clips Pages:

#### Clip Timestamp Toggling:

#### More Editing:

#### Transcript Editing:

#### Downloading a Video:
