Developers: Nathan Grilliot, Computer Science Advisor: Dr. Will Hawkins, Computer Science
- Project Description
- User Interface Specification
- Test Plan and Results
- User Manual
- Spring Final Presentation
- Expo Poster
- Assessments
- Summary of Hours and Justification
- Summary of Expenses
- Appendix
Abstract (400 characters): NQ is a cross-platform media recommendation system that unifies user preferences across movies, TV shows, games, books, and music. It aggregates data from multiple external APIs into a Neo4j graph database, enabling personalized "next in queue" suggestions based on your consumption history. Built with Go, GraphQL, and React Native.
NQ aims to develop a cross-platform media recommendation system that unifies user preferences across movies, shows, games, books, and more to deliver personalized "next in queue" suggestions. By aggregating and restructuring data from multiple APIs, the system will create a graph of your media consumption history. This enables context-aware recommendations based on your preferences. NQ focuses on backend functionality first, creating an API that assigns fitness scores to potential recommendations. The ultimate goal is to produce a functional tool that simplifies media discovery and adds everyday value.
No costs were incurred during the development of this project.
- Full Appendix
- Commit History
- ABET Concerns Essay
- Team Contract
- Professional Biography
- User Stories
- Design Diagrams
- Backend: Go, GraphQL (gqlgen), Neo4j
- Frontend: TypeScript, React Native, Expo
- Database: Neo4j Aura or local Neo4j
The system integrates with the following external APIs for media data and user activity:
- IGDB (Internet Game Database) - Game metadata and information
- Open Library - Book metadata and ISBN lookups
- YouTube Data API - Video content and playlists
- YouTube Music API - Music tracks and albums
- Twitch API - Streaming and gaming activity
- Spotify Web API - Music listening history and recommendations
- Steam Web API - Game library and playtime data
- Apple Music API - Music catalog and user data
- Instapaper API - Reading list and article bookmarks
backend/- Go GraphQL API server with database repositories and resolversfrontend/- React Native mobile app built with Expodb/- Database models, constraints, and repository implementationsintegrations/- Third-party service integrations (Spotify, YouTube Music, Twitch, etc.)metadata/- Media metadata providers for books, games, movies, and TV showsexamples/- Example code and integration demosgraph/- GraphQL schema and generated codesr_design_deliverables/- Design documents and project deliverables
- Go 1.19+
- Node.js 18+
- Neo4j (Aura cloud instance or local installation)
A docker-compose.yml in the backend/ directory runs a local Neo4j instance (browser UI on port 7474, Bolt on port 7687, credentials neo4j/testpass).
Start:
docker compose -f backend/docker-compose.yml up -dStop (keep data):
docker compose -f backend/docker-compose.yml stopStop and delete volumes:
docker compose -f backend/docker-compose.yml down -v-
Navigate to the backend directory:
cd backend -
Copy the environment template:
cp .envtemplate .env
-
Update
.envwith your Neo4j credentials and other configuration. -
Run the server:
go run . -
Access the GraphQL playground at
http://localhost:8080
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npx expo start
-
Follow the prompts to open in emulator, simulator, or Expo Go app.
The system uses a graph database with the following main entities:
- Users - User accounts
- Media Items - Movies, TV shows, books, games, music
- Creators - Actors, directors, authors, developers
- Platforms - Streaming services and stores
- Tags - Content categorization
Relationships connect these entities to enable personalized recommendations.