Skip to content

duwcston/Movie-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

28 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Movie Streaming Application

A full-stack video streaming web application built with the MERN Stack (MongoDB, Express.js, React, Node.js) with TypeScript and exploring data crawling techniques for content aggregation.

🎯 Project Purpose & Learning Objectives

This project serves as a comprehensive learning platform for:

MERN Stack Development with TypeScript

  • MongoDB: Database design, schema modeling, and data relationships
  • Express.js: RESTful API development, middleware implementation, and server architecture
  • React: Component-based UI development, state management with Redux Toolkit, and modern hooks
  • Node.js: Server-side JavaScript, TypeScript integration, and package management

Data Crawling & Web Scraping

  • Learning web scraping techniques to gather movie/video content data
  • Understanding data extraction, cleaning, and normalization processes
  • Implementing automated data collection pipelines
  • Working with external APIs for content metadata

Full-Stack Integration

  • Connecting frontend and backend seamlessly with type safety
  • Authentication and authorization implementation with JWT
  • Real-time data updates and user interactions
  • Deployment and production considerations

πŸš€ Features & Functionality

Current Features

  • βœ… User authentication system (register, login, logout)
  • βœ… JWT-based secure session management
  • βœ… Modern responsive UI with Tailwind CSS v4
  • βœ… Component-based React 19 architecture
  • βœ… Movie search and discovery
  • βœ… Admin movie management dashboard
  • βœ… Rating and review system
  • βœ… Movie request system for users
  • βœ… Video streaming capabilities

Planned Features

  • πŸ”„ User watchlists and favorites
  • πŸ”„ Movie recommendations AI system
  • πŸ”„ Enhanced user profiles
  • πŸ”„ Movie request status for each user
  • πŸ”„ Data crawling for content aggregation

πŸ›  Tech Stack

Frontend

  • React 19 with TypeScript
  • Vite for fast development and building
  • Tailwind CSS for styling and responsive design
  • Redux Toolkit for state management
  • React Router for navigation
  • React Slick for carousels and sliders
  • React Toastify for notifications

Backend

  • Node.js with Express.js 5 framework
  • TypeScript for type safety
  • MongoDB with Mongoose 8 ODM
  • JWT for authentication
  • bcryptjs for password hashing
  • Multer for file uploads
  • Swagger/OpenAPI for API documentation
  • Cookie Parser for session management

Development Tools

  • TypeScript 5.8+ for type safety across the stack
  • ESLint 9 for code quality
  • TSX for TypeScript execution with watch mode
  • Vite for frontend development server

πŸ“ Project Structure

movie-application/
β”œβ”€β”€ README.md                    # Project documentation
β”œβ”€β”€ TODO.md                      # Development roadmap
β”œβ”€β”€ backend/                     # Express.js API server with TypeScript
β”‚   β”œβ”€β”€ package.json            # Backend dependencies and scripts
β”‚   β”œβ”€β”€ tsconfig.json           # TypeScript configuration
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ index.ts            # Server entry point
β”‚   β”‚   β”œβ”€β”€ config/             # Database and app configuration
β”‚   β”‚   β”œβ”€β”€ controllers/        # Business logic handlers
β”‚   β”‚   β”œβ”€β”€ docs/               # API documentation (Swagger)
β”‚   β”‚   β”œβ”€β”€ middlewares/        # Custom middleware functions
β”‚   β”‚   β”œβ”€β”€ models/             # MongoDB data models
β”‚   β”‚   β”œβ”€β”€ routes/             # API route definitions
β”‚   β”‚   β”œβ”€β”€ types/              # TypeScript type definitions
β”‚   β”‚   └── utils/              # Helper functions
β”‚   └── uploads/                # Uploaded files storage
└── frontend/                    # React application with TypeScript
    β”œβ”€β”€ package.json            # Frontend dependencies and scripts
    β”œβ”€β”€ tsconfig.json           # TypeScript configuration
    β”œβ”€β”€ vite.config.ts          # Vite configuration
    β”œβ”€β”€ public/                 # Static assets
    └── src/
        β”œβ”€β”€ App.tsx             # Root component
        β”œβ”€β”€ main.tsx            # Entry point
        β”œβ”€β”€ components/         # Reusable UI components
        β”œβ”€β”€ pages/              # Page components
        β”‚   β”œβ”€β”€ Admin/          # Admin dashboard pages
        β”‚   β”œβ”€β”€ Auth/           # Authentication pages
        β”‚   β”œβ”€β”€ Movies/         # Movie-related pages
        β”‚   └── User/           # User profile pages
        β”œβ”€β”€ redux/              # Redux state management
        β”‚   β”œβ”€β”€ api/            # API integration
        β”‚   └── features/       # Redux slices
        β”œβ”€β”€ assets/             # Static assets
        β”œβ”€β”€ hooks/              # Custom React hooks
        └── types/              # TypeScript type definitions

🚦 Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • MongoDB (local installation or MongoDB Atlas)
  • npm or pnpm package manager

Environment Setup

  1. Clone the repository
  2. Create a .env file in the backend directory:
MONGO_URI=your_mongodb_connection_string
PORT=3000
JWT_SECRET=your_secret_key
NODE_ENV=development

Installation & Running

# Install and run backend
cd backend
npm install
npm run dev      # Start development server with TSX watch

# In another terminal, install and run frontend
cd frontend
npm install
npm run dev      # Starts Vite dev server

# For production build:
cd backend
npm run build    # Compile TypeScript
npm run start    # Run compiled JS

cd frontend
npm run build    # Build production frontend

πŸ“š Learning Progress & Milestones

Phase 1: Foundation βœ…

  • Project setup and folder structure
  • Express.js server with TypeScript configuration
  • MongoDB connection and User model
  • JWT authentication system
  • React 19 app with TypeScript setup
  • Tailwind CSS v4 styling system

Phase 2: Core Features βœ…

  • Movie data model and API implementation
  • Search functionality with filters
  • User interface components and pages
  • State management with Redux Toolkit
  • Admin dashboard for content management
  • User movie request system

Phase 3: Advanced Features οΏ½

  • API documentation with Swagger
  • Rating and review system
  • User watchlist and favorites
  • Performance optimization and caching
  • Configure Docker containers
  • Testing and deployment

πŸŽ“ Learning Resources & References

MERN Stack with TypeScript

Data Crawling & APIs

Modern Frontend Development

🀝 Contributing & Development

This is a learning project!

Development Workflow

  1. Check the TODO.md for current tasks
  2. Create feature branches for new functionality
  3. Follow the existing code structure and TypeScript conventions
  4. Ensure type safety across the codebase
  5. Test changes before committing

πŸ“„ License

This project is created for educational purposes!


🎯 Current Focus (July 2025)

Learning Objective: Building a complete understanding of full-stack TypeScript web development while creating a functional video streaming platform.

Next Steps:

  1. Complete the user watchlist and favorites feature
  2. Explore data crawling for content aggregation
  3. Add Redis for caching and performance optimization

This project represents a journey through modern web development technologies and practices. Each feature implemented contributes to a deeper understanding of the MERN stack ecosystem with TypeScript.

About

Movie Streaming Website using MERN Stack

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages