Skip to content

nrgrill/nq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nq

Go TypeScript React Native Expo GraphQL Neo4j License: MIT

University of Senior Design — Final Design Report

People

Developers: Nathan Grilliot, Computer Science Advisor: Dr. Will Hawkins, Computer Science


Table of Contents

  1. Project Description
  2. User Interface Specification
  3. Test Plan and Results
  4. User Manual
  5. Spring Final Presentation
  6. Expo Poster
  7. Assessments
  8. Summary of Hours and Justification
  9. Summary of Expenses
  10. Appendix

1. Project Description

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.

Full Project Description

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.


2. User Interface Specification


3. Test Plan and Results


4. User Manual


5. Spring Final Presentation


6. Expo Poster


7. Assessments

Initial Self-Assessments (Fall Semester - CS5001)

Final Self-Assessments (Spring Semester - CS5002)


8. Summary of Hours and Justification


9. Summary of Expenses

No costs were incurred during the development of this project.


10. Appendix


Languages and Tools

  • Backend: Go, GraphQL (gqlgen), Neo4j
  • Frontend: TypeScript, React Native, Expo
  • Database: Neo4j Aura or local Neo4j

External APIs and Integrations

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

Project Structure

  • backend/ - Go GraphQL API server with database repositories and resolvers
  • frontend/ - React Native mobile app built with Expo
  • db/ - Database models, constraints, and repository implementations
  • integrations/ - Third-party service integrations (Spotify, YouTube Music, Twitch, etc.)
  • metadata/ - Media metadata providers for books, games, movies, and TV shows
  • examples/ - Example code and integration demos
  • graph/ - GraphQL schema and generated code
  • sr_design_deliverables/ - Design documents and project deliverables

Getting Started

Prerequisites

  • Go 1.19+
  • Node.js 18+
  • Neo4j (Aura cloud instance or local installation)

Neo4j Docker

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 -d

Stop (keep data):

docker compose -f backend/docker-compose.yml stop

Stop and delete volumes:

docker compose -f backend/docker-compose.yml down -v

Backend Setup

  1. Navigate to the backend directory:

    cd backend
  2. Copy the environment template:

    cp .envtemplate .env
  3. Update .env with your Neo4j credentials and other configuration.

  4. Run the server:

    go run .
  5. Access the GraphQL playground at http://localhost:8080

Frontend Setup

  1. Navigate to the frontend directory:

    cd frontend
  2. Install dependencies:

    npm install
  3. Start the development server:

    npx expo start
  4. Follow the prompts to open in emulator, simulator, or Expo Go app.

Database Schema

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.

About

Whats next iN Queue? Find out by bringing together all of your favorite media watches in one place.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages