NextMovie is a full-stack web application platform that allows users to manage their favorite movies and TV shows, including functionalities such as user management, personalized lists, and recommendations.
This repository contains both the Laravel-based backend and the React-based frontend, designed to be robust, scalable, and user-friendly.
- Frontend (Vercel): https://nextmovie-xi.vercel.app/
- Backend (Railway): https://nextmovie-production-b9b8.up.railway.app
β The project is currently finished and in production.
- π€ User management (CRUD) for creating, updating, and deleting user profiles.
- π JWT Authentication for secure user login and registration.
- π Custom lists for favorite movies and series.
- β Rating and Recommendations system (Planned).
- π₯ API Consumption of TMDb (The Movie Database) for movie and series data.
- π Database migrations and seeders for easy setup and testing.
- π Built with Laravel & React, using routes, controllers, models, API resources, and modern React components.
-
Backend:
- Laravel (PHP)
- MySQL
- JWT (JSON Web Tokens)
- Postman (for API testing)
-
Frontend:
- React (Vite)
- JavaScript (ES6+)
- CSS Modules
- Axios (API requests)
- React Router
-
Deployment:
- Frontend deployed on Vercel β https://nextmovie-xi.vercel.app/
- Backend deployed on Railway β https://nextmovie-production-b9b8.up.railway.app
# Clone the repository
git clone https://github.com/samuel-un/nextmovie.git
# Enter the backend directory
cd nextmovie-backend
# Install dependencies
composer install
# Configure the .env file with your database information
cp .env.example .env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=backend-nextmovie
DB_USERNAME=root
DB_PASSWORD=
# Generate a new application key
php artisan key:generate
php artisan jwt:secret
# Run migrations and seeders
php artisan migrate --seed
# Start the server
php artisan serveThe frontend for NextMovie is a fully responsive React application that connects seamlessly to the backend API. It provides users with an intuitive and visually appealing interface to manage their favorite movies and TV shows.
Key features:
- User registration and login with real-time validation and password security checks
- JWT authentication integrated with the backend
- Custom movie and series lists for each user
- Responsive design for both desktop and mobile (based on Figma design)
- Error and success messages for all user actions
- Movie list component connected to the API
- Navigation between login and registration using React Router
Technologies:
- React (Vite)
- JavaScript (ES6+)
- CSS Modules
- Axios (for API requests)
- React Router
Repository:
The frontend code is available in the frontend-nextmovie folder of this repository.
# Enter the frontend directory
cd frontend-nextmovie
# Install dependencies
npm install --legacy-peer-deps
# Start the development server
npm run devThe application will be available at http://localhost:5173 by default.
Note:
The frontend requires the backend API to be running and accessible at the configured URL (default:http://localhost:8000).
This project includes a fully functional user CRUD API. Here are the Postman tests for each CRUD operation:
- Request JSON:
{
"name": "Samuel",
"email": "[email protected]",
"password": "123456"
}- Expected response: Status 201 and created user data.
- Expected response: Status 200 and array of users.
- Expected response: Status 200 and user data.
- Request JSON:
{
"name": "Samuel Actualizado"
}- Expected response: Status 200 and updated data.
- Expected response: Status 204 and no content.
To ensure code quality and reliability, I implemented unit and integration tests for both the backend (Laravel/PHPUnit) and frontend (React/Vitest).
php ./vendor/bin/phpunit --coverage-textπΈ Coverage result (Backend)
npx vitest run --coverageπΈ Coverage result (Frontend)
β The project currently meets the minimum 60% coverage for the backend and frontend codebases.
This project was developed using the SCRUM methodology and Pair Programming to ensure efficient collaboration and agile development.
This project is licensed under the MIT license.














