Skip to content
kiinshukPublic

About

Free, open-source movie and TV show discovery platform. Browse 80+ movies, 250+ TV shows, streaming integration, and SEO optimized. Built with React + Vite.

Topics

Resources

Contributing

Stars

13 stars

Watchers

0 watching

Forks

Repository files navigation

🎬 Kinshow β€” Cinema Discovery Platform

A free, open-source movie and TV show discovery platform. Browse 40+ curated films, 250+ TV shows, check ratings, cast info, episode guides, and find where to stream β€” all in one place.

Live: kinshow.vercel.app
Blog: kinshow.vercel.app/blog


🏁 Want to contribute? Start here

Getting the repo running locally takes about two minutes:

git clone https://github.com/kiinshuk/kinshow.git
cd kinshow
npm install
npm run dev        # β†’ http://localhost:5173

Then pick an issue tagged good first issue, fork, branch, and open a PR. Full guidelines: CONTRIBUTING.md (see the label glossary if you're not sure what a label means).

Before your first PR: run npm run build β€” it must pass. If the build dirties src/data/contributors.json, restore it with git checkout -- src/data/contributors.json before committing.


✨ Features

Discovery

  • 40+ Curated Movies β€” Top-rated films with ratings, cast, and streaming links
  • 250+ TV Shows β€” Full season and episode guides from TVmaze
  • Smart Search β€” Instant search across movies and TV shows, with clear error/retry states when an API is unreachable
  • Genre Explorer β€” Browse by Action, Comedy, Drama, Horror, Sci-Fi, Thriller, and more

Personalization

  • Watchlist β€” Save titles to watch later (localStorage, no account needed)
  • Viewing History β€” Track what you've watched
  • Recently Viewed β€” Quick access to recently browsed titles

Player

  • 7 Streaming Servers β€” VidSrc, VidSrc3, VidSrc2, VidCore, Peachify, VidFast, CineSrc
  • Episode Navigation β€” Previous/next episode buttons for TV shows
  • Server Switching β€” Change servers mid-session (keyboard 1–7, s to cycle)
  • Keyboard Shortcuts β€” / search, Ctrl/Cmd+K command search, ? shortcut help

SEO & Performance

  • Schema.org β€” Movie, TVSeries, WebSite, Organization, FAQPage, BreadcrumbList, BlogPosting, VideoObject
  • Open Graph & Twitter Cards β€” Rich social previews with article metadata on blog posts
  • Pre-rendered HTML β€” Every static route emitted at build time
  • 24hr Cache β€” Reduced API calls, faster load times

UX

  • Fully Responsive β€” Desktop, tablet, and mobile
  • Light & Dark Themes β€” System preference detection + manual toggle (persisted)
  • Cookie Consent β€” GDPR compliant
  • Blog β€” Movie guides, recommendations, and lists

πŸ›  Tech Stack

Technology Purpose
React 18 UI Framework
Vite 5 Build Tool & Dev Server
React Router 6 Client-side Routing
React Helmet Async SEO Meta Tags
TVmaze API TV Show Data & Images
OMDb API Movie Data & Posters
Vercel Hosting, Analytics & CI/CD

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm (or yarn/pnpm)

Installation

# Clone the repository
git clone https://github.com/kiinshuk/kinshow.git

# Navigate to project directory
cd kinshow

# Install dependencies
npm install

# Start development server
npm run dev

The app will be available at http://localhost:5173

Build for Production

npm run build

This runs three steps: fetches the contributor roster (prebuild), bundles with Vite, then prerenders static HTML for SEO (prerender.mjs).

Preview the Production Build

npm run preview    # β†’ http://localhost:4173

Environment Variables

No environment variables required β€” the app uses public TVmaze/OMDb endpoints with keys that ship in the client bundle.

Local Gotchas

  • TMDB is blocked on some networks β€” the app uses TVmaze + OMDb only; you don't need TMDB to run anything.
  • src/data/contributors.json changes after every build β€” it is regenerated by prebuild. Restore it (git checkout -- src/data/contributors.json) if you don't intend to commit roster changes.
  • Preview runs on port 4173, dev server on 5173. If a port is busy, stop the stale process or use vite --port <other>.

πŸ“ Project Structure

kinshow/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ robots.txt
β”‚   └── sitemap.xml
β”œβ”€β”€ scripts/
β”‚   └── fetch-contributors.mjs   # Regenerates contributor roster on build
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Navbar.jsx           # Navigation + search overlay
β”‚   β”‚   β”œβ”€β”€ Hero.jsx             # Featured content carousel
β”‚   β”‚   β”œβ”€β”€ MediaCard.jsx        # Movie/TV show card
β”‚   β”‚   β”œβ”€β”€ ContentRail.jsx      # Horizontal scroll section
β”‚   β”‚   β”œβ”€β”€ CastCard.jsx         # Actor profile card
β”‚   β”‚   β”œβ”€β”€ EpisodeCard.jsx      # Episode list item
β”‚   β”‚   β”œβ”€β”€ CookieConsent.jsx    # GDPR cookie consent
β”‚   β”‚   β”œβ”€β”€ RecentlyViewed.jsx   # Recently viewed section
β”‚   β”‚   β”œβ”€β”€ ScrollButton.jsx     # Back-to-top button
β”‚   β”‚   β”œβ”€β”€ Toast.jsx            # Toast notifications
β”‚   β”‚   β”œβ”€β”€ EmptyState.jsx       # Empty/error state views
β”‚   β”‚   β”œβ”€β”€ ErrorBoundary.jsx    # Route error fallback
β”‚   β”‚   β”œβ”€β”€ Skeletons.jsx        # Loading states
β”‚   β”‚   └── SEO.jsx              # SEO, Schema.org, breadcrumbs
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ Home.jsx             # Landing page with hero + rails
β”‚   β”‚   β”œβ”€β”€ Movies.jsx           # Movie browser with tabs
β”‚   β”‚   β”œβ”€β”€ TVShows.jsx          # TV show browser with tabs
β”‚   β”‚   β”œβ”€β”€ Detail.jsx           # Movie/TV details + episodes
β”‚   β”‚   β”œβ”€β”€ Player.jsx           # Multi-server video player
β”‚   β”‚   β”œβ”€β”€ Watchlist.jsx        # User watchlist + history
β”‚   β”‚   β”œβ”€β”€ Explore.jsx          # Genre explorer
β”‚   β”‚   β”œβ”€β”€ Blog.jsx             # Blog listing page
β”‚   β”‚   β”œβ”€β”€ BlogPost.jsx         # Blog article page
β”‚   β”‚   β”œβ”€β”€ About.jsx            # About page with contributors
β”‚   β”‚   β”œβ”€β”€ Contact.jsx          # Contact page
β”‚   β”‚   β”œβ”€β”€ Privacy.jsx          # Privacy policy
β”‚   β”‚   └── NotFound.jsx         # 404 page
β”‚   β”œβ”€β”€ hooks/
β”‚   β”‚   └── useInfiniteScroll.js
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”œβ”€β”€ poster.jsx           # SVG poster generator
β”‚   β”‚   └── cookies.js           # Cookie utilities
β”‚   β”œβ”€β”€ api.js                   # API functions + caching
β”‚   β”œβ”€β”€ blogData.js              # Blog articles
β”‚   β”œβ”€β”€ store.js                 # State management
β”‚   β”œβ”€β”€ index.css                # Global styles
β”‚   └── main.jsx                 # Entry point
β”œβ”€β”€ prerender.mjs                # SEO prerender script
β”œβ”€β”€ vercel.json                  # Vercel SPA config
β”œβ”€β”€ CONTRIBUTING.md              # Contribution guidelines
β”œβ”€β”€ LICENSE                      # MIT License
└── package.json

🀝 Contributing

We love contributions! Whether it's fixing a bug, adding a feature, or improving docs β€” all help is welcome.

Quick start:

  1. Fork the repo
  2. Create a branch: git checkout -b fix/my-bug
  3. Make your changes and verify npm run build passes
  4. Commit: git commit -m "fix: description"
  5. Push and open a PR (reference the issue: Fixes #123)

See CONTRIBUTING.md for full guidelines.

Open issues: 300+ issues tagged good first issue are waiting β€” pick one that interests you.


πŸ“„ License

MIT License β€” see LICENSE for details.


πŸ™ Acknowledgments

  • TVmaze β€” TV show data and images
  • OMDb API β€” Movie data and posters
  • Vercel β€” Hosting and analytics

πŸ“¬ Contact

Kiinshuk β€” kinshuksharma2024@gmail.com

Project Link: https://github.com/kiinshuk/kinshow


If you found this project helpful, please give it a ⭐ on GitHub!

About

Free, open-source movie and TV show discovery platform. Browse 80+ movies, 250+ TV shows, streaming integration, and SEO optimized. Built with React + Vite.

Topics

Resources

Contributing

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages