Skip to content

Full-stack web app for browsing and streaming movies, built with React.js and Go, using Terraform for infrastructure provisioning. Example project used in Technical Skills for Product Managers course

Notifications You must be signed in to change notification settings

martishin/movie-search-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Movie Search

Movie Search is a full-stack web app for browsing and streaming movies.
It’s built with React.js and Go and uses Terraform for infrastructure provisioning.

You can find the live version here!

This project was built as an example full-stack service for the Technical Skills for Product Managers course.

🚀 Running Locally

Server

  • Navigate to server folder: cd server
  • Create the .env file from .env.example: cp .env.example .env
  • Start dependencies (PostgreSQL and Redis): make start-all
  • Run the server: make run
  • API will be available at http://localhost:8100/

Client

  • Navigate to client folder: cd client
  • Install dependencies npm install
  • Start the client npm run dev
  • UI will be available at https://localhost:5173/

⚙️ Features

Frontend (React.js, Tailwind CSS, Vite)

  • Responsive UI built with React.js and Tailwind CSS
  • Client-side routing using React Router
  • Browse a list of movies
  • View detailed movie information
  • Search movies by title or genre
  • Like/unlike movies and view your liked list
  • Fully responsive layout optimized for all screen sizes
  • Tested with Jest and Testing Library

Backend (Go)

  • RESTful API built with Go and the Chi router
  • Supports CRUD operations for movies, users, and likes
  • Authentication via OAuth and passwords using Goth and Gorilla Sessions
  • Data persistence in PostgreSQL using pgx, with SQL migrations via golang-migrate
  • Caching with Redis using go-redis
  • Structured logging via Go’s built-in slog package
  • Monitoring and metrics collection using Alloy and Prometheus
  • Fetches movie posters from TMDB and trailers from YouTube

DevOps & Infrastructure (Terraform + AWS)

  • Dockerized for local development and testing
  • CI/CD powered by GitHub Actions and Vercel
  • Infrastructure provisioned via Terraform, including:
    • ECS (Fargate) for container orchestration
    • Application Load Balancer (ALB) with custom routing
    • PostgreSQL (RDS) and Redis (ElastiCache) provisioning
    • VPC, subnets, NAT gateways, and route tables
    • IAM roles, security groups, and policies
  • Observability and alerting with Grafana

About

Full-stack web app for browsing and streaming movies, built with React.js and Go, using Terraform for infrastructure provisioning. Example project used in Technical Skills for Product Managers course

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published