Nightflix is a movie browsing application that allows users to manage favorite lists and update profiles. The web application provides users with access to information about different movies, directors, and genres. Users are able to sign up, update their personal information, and create a list of their favorite movies.
Nightflix is a personal project developed during my web development course at CareerFoundry, showcasing my expertise in full-stack JavaScript development and my ability to design and implement a fully functional application from concept to deployment.
The goal of this project was to create a sophisticated full-stack application that could serve as a standout addition to my professional portfolio. I set out to tackle the challenge of building both the server-side and client-side components entirely from scratch, showcasing my ability to design and implement a complete, end-to-end solution.
I started the Backend part of the project in March’2024 with my first commit and the official work on the project ended in July’24.
Backend Project Techstack: Express.js, MongoDB, MongoDB, Passport.js, JSDoc, CORS, Bcrypt
Frontend Project Techstack: Node.js, Express, MongoDB, and React.
Other tools: Terminal, Git, Chrome Web Tools, GitHub Desktop, Parcel.
Once the API was complete, I shifted my focus to developing the user interface that facilitates interaction with the server-side. The result is a responsive, single-page application crafted using React. This dynamic interface offers a range of views to enhance user experience, including:
The main problem was to connect the server-side to the client-side of the application using the correct endpoints and attributes: The most frustrating mistake was to use „Favourite“ instead of „favorite“ in the backend and using capitals where it was not necessary. On the other hand I gained a lot of understanding of the correlations in the code through my mistakes.
I had to create the MainView, MovieCard, and MovieView components for my Nightflix app using JSX. I didn't pass the right key to my movies in the map, in the mainView component... Instead of using key={movie._id}, I used key={movie.id} where the movie id isn't the right one used in the movies array.
Another problem that I faced was even if a user logged out, on the site there was still active the log-out button. So I had to find a solution to correct this to only show the log-out button only and only if the user is logged in:
During the development process, I identified a critical issue within my backend application that required a complete overhaul of my MongoDB database. The existing data, including images, lacked consistency, and the ObjectIDs for directors and genres were mismatched. To resolve this, I meticulously curated proper images from reliable sources and restructured the database for consistency. I then reloaded the database in MongoDB Atlas and redeployed the updated version on Heroku. Although the process was intricate and time-intensive, it significantly enhanced the application's reliability and data integrity.
Another challenge was the styling. I think I managed to create exceptional style for the app and I hope it will find it's user!
This project was both my most rewarding and most challenging endeavor. I thoroughly enjoyed designing the API and delving into database structures, which allowed me to strengthen my foundational knowledge. I also quickly became comfortable navigating and utilizing the terminal, a skill I found both empowering and essential. The transition to developing the client-side presented new hurdles, particularly in understanding the intricate interplay between the backend and frontend. Achieving the desired results required persistence and a willingness to learn. However, with the invaluable guidance of my exceptional mentor and a few intensive debugging sessions with an experienced developer, I was able to overcome these challenges and successfully bring the project to life. This experience solidified both my technical expertise and my resilience as a developer.