An open API service indexing awesome lists of open source software.

https://github.com/brandonperfetti/filmpire

A cinematic movie discovery app powered by the TMDB API โ€” built with React, TypeScript, Redux Toolkit, and Tailwind CSS.
https://github.com/brandonperfetti/filmpire

alan-ai movies react react-router redux tailwindcss tmdb-api typescript vite

Last synced: about 2 months ago
JSON representation

A cinematic movie discovery app powered by the TMDB API โ€” built with React, TypeScript, Redux Toolkit, and Tailwind CSS.

Awesome Lists containing this project

README

          

# Filmpire






**A cinematic movie discovery app powered by The Movie Database API.**

[Live Demo](https://filmpire-beta.vercel.app) ยท [Report Bug](https://github.com/brandonperfetti/filmpire/issues)

---

## Overview

**Filmpire** is a full-featured movie and TV discovery application built with React, TypeScript, and Redux Toolkit. It connects to the [TMDB API](https://www.themoviedatabase.org/documentation/api) to surface popular films, actor profiles, crew details, and curated movie collections.

The app features advanced browsing with genre/category filtering, full movie detail pages (cast, crew, trailers), actor and crew deep-dives, a user approval/watchlist system, and an AI-powered voice assistant via the Alan AI SDK.

---

## Features

- ๐ŸŽฌ **Movie Discovery** โ€” Browse popular, top-rated, upcoming, and now-playing films
- ๐Ÿ” **Search** โ€” Full-text search across the TMDB catalog
- ๐ŸŽญ **Movie Detail Pages** โ€” Overview, cast/crew, trailers, similar films, and metadata
- ๐Ÿ‘ค **Actor Profiles** โ€” Biography, filmography, and known-for movies
- ๐ŸŽฅ **Crew Profiles** โ€” Director and crew member filmographies
- โœ… **Watchlist / Approved** โ€” Mark films as approved and browse your personal list
- ๐ŸŽ™๏ธ **Voice Assistant** โ€” Alan AI integration for voice-controlled navigation and search
- ๐ŸŒ™ **Dark / Light Mode** โ€” Tailwind-powered theme system
- ๐Ÿ“ฑ **Responsive Design** โ€” Mobile-optimized layout

---

## Tech Stack

| Technology | Purpose |
|---|---|
| [React](https://reactjs.org/) | UI component library |
| [TypeScript](https://www.typescriptlang.org/) | Type-safe development |
| [Redux Toolkit](https://redux-toolkit.js.org/) | Global state management |
| [React Router DOM](https://reactrouter.com/) | Client-side navigation |
| [Axios](https://axios-http.com/) | HTTP client for TMDB API |
| [Tailwind CSS](https://tailwindcss.com/) | Utility-first styling |
| [shadcn/ui](https://ui.shadcn.com/) | Accessible component library |
| [Radix UI](https://www.radix-ui.com/) | Headless component primitives |
| [Embla Carousel](https://www.embla-carousel.com/) | Carousel/slider component |
| [Alan AI SDK](https://alan.app/) | Voice assistant integration |
| [Vite](https://vitejs.dev/) | Fast build tooling |
| [TMDB API](https://developers.themoviedb.org/3) | Movie and actor data |

---

## Getting Started

### Prerequisites

- [Node.js](https://nodejs.org/) v18+
- [npm](https://www.npmjs.com/)
- A [TMDB API key](https://www.themoviedb.org/settings/api) (free)
- An [Alan AI](https://alan.app/) project key (optional, for voice features)

### Installation

```bash
git clone https://github.com/brandonperfetti/filmpire.git
cd filmpire
npm install
```

### Environment Variables

Create a `.env` file in the project root:

```env
VITE_TMDB_API_KEY=your_tmdb_api_key
VITE_ALAN_SDK_KEY=your_alan_sdk_key # Optional
```

### Development

```bash
npm run dev
```

Open [http://localhost:5173](http://localhost:5173) in your browser.

### Production Build

```bash
npm run build
npm run preview
```

### Linting

```bash
npm run lint
```

---

## Project Structure

```
filmpire/
โ”œโ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ app/ # Redux store configuration
โ”‚ โ”œโ”€โ”€ components/
โ”‚ โ”‚ โ”œโ”€โ”€ shared/ # Navbar, sidebar, footer
โ”‚ โ”‚ โ””โ”€โ”€ ui/ # shadcn/ui base components
โ”‚ โ”œโ”€โ”€ features/ # Redux slices (auth, movies)
โ”‚ โ”œโ”€โ”€ hooks/ # Custom React hooks
โ”‚ โ”œโ”€โ”€ pages/ # Route-level page components
โ”‚ โ”‚ โ”œโ”€โ”€ Movies/ # Home/browse page
โ”‚ โ”‚ โ”œโ”€โ”€ MovieInfo/ # Movie detail page
โ”‚ โ”‚ โ”œโ”€โ”€ ActorInfo/ # Actor profile page
โ”‚ โ”‚ โ”œโ”€โ”€ CrewInfo/ # Crew member profile page
โ”‚ โ”‚ โ”œโ”€โ”€ Profile/ # User watchlist/approved page
โ”‚ โ”‚ โ””โ”€โ”€ Approved/ # Approved films list
โ”‚ โ”œโ”€โ”€ services/ # TMDB API service layer
โ”‚ โ”œโ”€โ”€ context/ # Theme and app context
โ”‚ โ””โ”€โ”€ types/ # TypeScript type definitions
โ””โ”€โ”€ public/ # Static assets
```

---

## Deployment

Deploy to [Vercel](https://vercel.com/) or [Netlify](https://netlify.com). Set `VITE_TMDB_API_KEY` in your platform's environment variable settings.

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/brandonperfetti/filmpire)

---

## License

MIT ยฉ [Brandon Perfetti](https://brandonperfetti.com)