Database Implementation
While I was coding the steps functionality, I realized that I needed a way to reference the videos for each step. I added a junction table because I needed unique videos reference for each step and to enable proper ordering of multiple video clips within individual steps.

Database Schema and Relationships:
Core Tables:
- • adventures - Contains main adventure records
- • steps - Individual steps within adventures (up to 7 per adventure)
- • videos - Video files and metadata
- • step_videos - Junction table connecting steps to videos (many-to-many relationship)
- • thumbnails - Thumbnail images linked to videos
Key Relationships:
- • Adventures have a one-to-many relationship with steps
- • Steps connect to videos through the step_videos junction table, allowing multiple video clips per step with ordering
- • Each video has a one-to-one relationship with a thumbnail
Thumbnail Generation:
When a video recording stops, the system automatically generates a thumbnail by:
- 1. Taking a frame capture from the video at a smart-calculated time (default 1 second)
- 2. Using intelligent seek time calculation that adapts to video duration
- 3. Resizing the captured frame to 1/4 of the original dimensions for optimal storage
- 4. Converting the frame to a JPEG format with 80% quality
- 5. Storing the thumbnail as a base64-encoded data URL in the database
Final Internship Presentation
My final presentation highlighting key contributions during the internship, including designing decision diagrams, implementing video recording features, and refactoring a class from a monolithic controller to a separation-of-concerns model.