KraftFlix - a full-stack web application
KraftFlix - a full-stack web application
Kraftflix is a full-stack web application which is showcasing skills in both server-side and client-side development.
It allows movie enthusiasts to browse a movie database for information about different movies, directors, and genres. Users can create profiles, save their favorite movies, and manage their personal data.
The application is built using the MERN stack (MongoDB, Express, React and Node.js).
The backend consists of a REST API and a MongoDB database. The frontend offers a responsive, user-friendly interface built with React.
The Kraftflix Movie API is a RESTful API application created with Node.js and Express. It interfaces with a MongoDB database to store movie and user information and perform CRUD (Create, Read, Update, Delete) operations. It allows users to create and manage an account, browse a selection of movies, and save favorite movies to their profile. This API is protected by JWT-based authentication, and data is securely stored in a MongoDB database.
· Return a list of all movies
· Retrieve detailed data on a single movie (title, description, genre, director, image)
· Retrieve information about a specific genre (e.g., “Thriller”) (bio, birth year, etc.)
· Retrieve information about a specific director (bio, birth year, etc.)
· Allow new users to register.
· Allow users to update their profile (username, password, email, date of birth).
· Users can add or remove movies from their favorite list.
· Enable users to deregister their account.
· JavaScript runtime environment for server-side applications.
· Web framework for Node.js.
· NoSQL database.
· ODM (Object Data Modeling) library for MongoDB.
Authentication middleware for Node.js.
· passport-local - Strategy for local username and password authentication.
· passport-jwt - Strategy for authenticating using JWT.
· Library for hashing passwords
· For creating and verifying JSON Web Tokens (JWTs).
· Cross-Origin Resource Sharing, enables restricted resources on a web page to be requested from another domain.
· Middleware for request data validation.
· Logging middleware to capture requests.
· For managing environment variables (e.g., MongoDB connection URI, JWT secrets).
The app is deployed on heroku
The Kraftflix frontend is a single-page application (SPA) built using React. It is interfacing with the Kraftflix Movie API to display movie data, manage user sessions, and enable users to modify their profiles and store their favorite movies. The UI with its different Views provides a polished, responsive user experience that can be accessed on any device.
· JavaScript library for building user interfaces with component-based architecture.
· Manages routes within the application, enabling navigation between pages.
· Provides responsive, pre-styled components for a professional UI design.
· React hooks for managing component state and handling lifecycle events within functional components.
· JavaScript API for making asynchronous HTTP requests to communicate with the backend server.
· used to persist user data, like login tokens and user information, between sessions.
· Ensures that components receive props of the expected data type, aiding in development and debugging.
· employed as the build tool.
The app is deployed on heroku
· Displays a list of all movies with search and filter functionality.
· Ability to select a movie for more detailed information.
· Provides navigation to the profile view and allow users to log out.
· Allows users to add a movie to their list of favorites
· Allows users to remove a movie to their list of favorites
· Shows detailed data about a selected movie (description, genre, director, image).
· Allows users to add a movie to their list of favorites
· Allows users to remove a movie to their list of favorites
· Users can log in with their username and password.
· New users can register by providing a username, password, email, and birthdate.
· Displays the user data.
· Displays the user’s favorite movies
· Allows users to update their profile data.
· Allows users to remove movies from their favorites.
· Allows users to delete their account.