← Back to Projects

Movie Night

A collaborative social media app for film discovery and recommendations

Overview and Summary

Movie Night is a web-based social media application developed collaboratively by a four-person team using agile Scrum methodologies. The app enables users to search for films, write and share reviews, receive personalized recommendations, and connect with other movie enthusiasts. Built with JavaScript and HTML, Movie Night demonstrates team coordination, agile development practices, and the ability to implement complex features in a collaborative environment.

Project Information

Timeline

October 2023 - December 2023

Development Method

4-person Scrum Agile collaboration

Primary Tech Stack

JavaScript, HTML, CSS

Focus

Social movie discovery with reviews, recommendations, and responsive user experience

Key Features

  • Film Search and Discovery: Users can search for movies, view details, ratings, and cast information through integrated APIs
  • Review System: Users can write, edit, and delete their own reviews, with ratings from 1-5 stars
  • Personalized Recommendations: The app recommends films based on user viewing history and preferences
  • Social Features: Users can follow other movie enthusiasts, see their reviews, and share recommendations with friends
  • Responsive Design: Fully responsive interface that works seamlessly across desktop, tablet, and mobile devices

Technologies and Skills

JavaScript

ES6+ features for interactive functionality, DOM manipulation, and API integration

HTML and CSS

Semantic HTML5 structure with responsive CSS Grid and Flexbox layouts

Git and Version Control

Collaborative development using Git branches, pull requests, and conflict resolution

Scrum Agile

2-week sprints with daily standups, sprint planning, and retrospectives

Implementation Highlights

Team Coordination and Agile Development

Successfully coordinated with team members using Scrum methodologies, including sprint planning, daily standups, and regular retrospectives. Managed feature conflicts through Git workflows and code reviews, ensuring code quality and team alignment.

Dynamic Feature Implementation

Implemented complex features including real-time search functionality, review management system, and recommendation engine. Used JavaScript event listeners and asynchronous API calls to create responsive user interactions.

Responsive Design and User Experience

Built a fully responsive interface using CSS Grid and Flexbox that adapts seamlessly to different screen sizes. Implemented intuitive navigation and consistent visual design across all pages.

Learning Outcomes

  • Developed strong collaborative software development skills through daily team interactions and code reviews
  • Gained practical experience with Scrum methodology and agile development practices in a real-world team setting
  • Enhanced ability to manage merge conflicts and coordinate code changes across multiple team members
  • Improved API integration skills by working with third-party movie databases and services
  • Strengthened problem-solving abilities by debugging issues that arose during collaborative development
  • Learned to communicate technical ideas effectively to team members with varying levels of experience
  • Developed a deeper understanding of responsive design principles and mobile-first development
  • Gained experience in creating and maintaining clean, readable code that adheres to team standards

Future Enhancements and Features

  • Implement a backend database to persist user accounts, reviews, and watchlists across sessions
  • Add advanced filtering options including genre, year, rating range, and director/actor
  • Create a watchlist feature allowing users to save movies they want to watch
  • Develop a recommendation algorithm that provides smarter, more personalized suggestions
  • Add social features including user profiles, follow/unfollow functionality, and direct messaging

Code Segments

Here are some key code examples from the Movie Night project:

HTML - Movie Search Component

<section class="movie-search">
    <div class="search-container">
        <input
            type="text"
            id="searchInput"
            placeholder="Search for movies..."
            class="search-bar"
        >
        <button id="searchBtn" class="search-button">Search</button>
    </div>
    <div id="movieResults" class="movie-grid">
        <!-- Results populated by JavaScript -->
    </div>
</section>

CSS - Responsive Movie Grid

.movie-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
    padding: 20px;
}

.movie-card {
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.movie-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

JavaScript - Search Functionality

const searchBtn = document.getElementById('searchBtn');
const searchInput = document.getElementById('searchInput');
const movieResults = document.getElementById('movieResults');

searchBtn.addEventListener('click', async () => {
    const query = searchInput.value.trim();
    if (query === '') return;

    try {
        const response = await fetch(`/api/movies/search?q=${query}`);
        const movies = await response.json();
        displayMovies(movies);
    } catch (error) {
        console.error('Search error:', error);
        movieResults.innerHTML = '<p>Error fetching movies</p>';
    }
});

function displayMovies(movies) {
    movieResults.innerHTML = movies.map(movie => `
        <div class="movie-card">
            <img src="${movie.poster}" alt="${movie.title}">
            <div class="movie-info">
                <h3>${movie.title}</h3>
                <p>Rating: ${movie.rating}/10</p>
            </div>
        </div>
    `).join('');
}