- 🤖 Introduction
- ⚙️ Tech Stack
- 🔋 Features
- 🤸 Quick Start
- 🕸️ Snippets (Code to Copy)
- 🔗 Assets
Built with React.js for the user interface, Appwrite for the Trending Movies Algorithm, and styled with TailwindCSS, Filmmzila is a website project that offers a sleek and modern experience for browsing and discovering movies.
- React.js
- Appwrite
- Tailwind CSS
👉 Browse All Movies: Explore a wide range of movies available on the platform.
👉 Search Movies: Easily search for specific movies using a search function.
👉 Trending Movies Algorithm: Displays trending movies based on a dynamic algorithm.
👉 Modern UI/UX: A sleek and user-friendly interface designed for a great experience.
👉 Responsiveness: Fully responsive design that works seamlessly across devices.
and many more, including code architecture and reusability
Follow these steps to set up the project locally on your machine.
Prerequisites
Make sure you have the following installed on your machine:
Cloning the Repository
git clone https://github.com/AkashkumarChoudhary/Filmmyzila
cd filmmzilaInstallation
Install the project dependencies using npm:
npm installSet Up Environment Variables
Create a new file named .env.local in the root of your project and add the following content:
VITE_IMDB_API_KEY=
VITE_APPWRITE_PROJECT_ID=
VITE_APPWRITE_DATABASE_ID=
VITE_APPWRITE_COLLECTION_ID=Replace the placeholder values with your actual TheMovieDatabase API and Appwrite credentials. You can obtain these credentials by signing up on the TheMovieDatabase and creating a new project on the Appwrite
Running the Project
npm run devOpen http://localhost:5173 in your browser to view the project.
index.css
@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap");
@import "tailwindcss";
@theme {
--color-primary: #030014;
--color-light-100: #cecefb;
--color-light-200: #a8b5db;
--color-gray-100: #9ca4ab;
--color-dark-100: #0f0d23;
--font-dm-sans: DM Sans, sans-serif;
--breakpoint-xs: 480px;
--background-image-hero-pattern: url("/hero-bg.png");
}
@layer base {
body {
font-family: "DM Sans", serif;
font-optical-sizing: auto;
background: #030014;
}
h1 {
@apply mx-auto max-w-4xl text-center text-5xl font-bold leading-tight tracking-[-1%] text-white sm:text-[64px] sm:leading-[76px];
}
h2 {
@apply text-2xl font-bold text-white sm:text-3xl;
}
main {
@apply min-h-screen relative bg-primary;
}
header {
@apply sm:mt-10 mt-5;
}
header img {
@apply w-full max-w-lg h-auto object-contain mx-auto drop-shadow-md;
}
}
@layer components {
.pattern {
@apply bg-hero-pattern w-screen h-screen bg-center bg-cover absolute z-0;
}
.wrapper {
@apply px-5 py-12 xs:p-10 max-w-7xl mx-auto flex flex-col relative z-10;
}
.trending {
@apply mt-20;
& ul {
@apply flex flex-row overflow-y-auto gap-5 -mt-10 w-full hide-scrollbar;
}
& ul li {
@apply min-w-[230px] flex flex-row items-center;
}
& ul li p {
@apply fancy-text mt-[22px] text-nowrap;
}
& ul li img {
@apply w-[127px] h-[163px] rounded-lg object-cover -ml-3.5;
}
}
.search {
@apply w-full bg-light-100/5 px-4 py-3 rounded-lg mt-10 max-w-3xl mx-auto;
& div {
@apply relative flex items-center;
}
& img {
@apply absolute left-2 h-5 w-5;
}
& input {
@apply w-full bg-transparent py-2 sm:pr-10 pl-10 text-base text-gray-200 placeholder-light-200 outline-hidden;
}
}
.all-movies {
@apply space-y-9;
& ul {
@apply grid grid-cols-1 gap-5 xs:grid-cols-2 md:grid-cols-3 lg:grid-cols-4;
}
}
.movie-card {
@apply bg-dark-100 p-5 rounded-2xl shadow-inner shadow-light-100/10;
& img {
@apply rounded-lg h-auto w-full;
}
& h3 {
@apply text-white font-bold text-base line-clamp-1;
}
& .content {
@apply mt-2 flex flex-row items-center flex-wrap gap-2;
}
& .rating {
@apply flex flex-row items-center gap-1;
}
& .rating img {
@apply size-4 object-contain;
}
& .rating p {
@apply font-bold text-base text-white;
}
& .content span {
@apply text-sm text-gray-100;
}
& .content .lang {
@apply capitalize text-gray-100 font-medium text-base;
}
& .content .year {
@apply text-gray-100 font-medium text-base;
}
}
}
@utility text-gradient {
@apply bg-linear-to-r from-[#D6C7FF] to-[#AB8BFF] bg-clip-text text-transparent;
}
@utility fancy-text {
-webkit-text-stroke: 5px rgba(206, 206, 251, 0.5);
font-size: 190px;
font-family: "Bebas Neue", sans-serif;
}
@utility hide-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
&::-webkit-scrollbar {
display: none;
}
}Public assets used in the project can be found here