Skip to main content

LOMO In Person Gaming App

Replace FOMO with LOMO, find other gamers and play together in person!

Open in Codespaces

LOMO logo by Carla Delima

LOMO In Person Gaming App

LOMO Web App Documentation Website Link

Report Issue on Jira Deploy Docs Netlify Status Deploy Backend Test Backend

Logo created by Carla Delima

Keywords

Lomo, gaming, social media, social gaming, web app, geolocation, map, real-time, networking

Project Abstract

It facilitates in-person gaming in a real time environment using geolocation on a 2d map and networking between users and their posts. This service is made to address those who want to play games that have little to no online functionality and those who want to make friends beyond exclusively online environments.

When a user opens the app, they will see the interface of a 2d map in a top down perspective. A user can see a list of people that currently want to play games, and can choose to let others know they want to play something as well. When a user has a game they want to find people to play, they establish a “Beacon” that details how many people they want, what the game is, and a list of other factors that detail what those viewing the beacon can expect. Users can then apply to a beacon, with their name, supplies they can provide, and an optional attached message. Users will be able to browse beacons by category, distance, and by friends/groups only. Being friends with someone lets the user create more beacons tailored to them only, such as ones with more detailed and personal information. The user will also be able to adjust their preferences for their profile pertaining to games, controllers they have, and tags that tell others what they want to do.

High Level Requirement

Conceptual Design

This will be a progressive web application using React as a frontend with Laravel PHP serving as our backend. Our backend will use PostgreSQL for establishing and maintaining a database. Laravel provides many built-in functions that can be expanded on to meet the needs of the project in a more productive fashion.

Background

This app is similar to Niantic Campfire, which is a companion app developed for Niantic games meant to facilitate in-person meetups for games like Pokemon Go. While many features in Pokemon Go require players to be in close proximity, the mainstream gaming environment today is primarily online. In many cases, there are people that, as much as they want to make in-person friends and play in-person games, they have a hard time finding a good method to do so. The name LOMO is inspired by the term FOMO, which stands for “fear of missing out”. For those that want an in-person connection when gaming, Lomo is intended to be as non-invasive as possible, where only essential communication is used by the app to facilitate getting together.

Required Resources

A background/understanding of web app development would be required. For software, React is most likely to be used. The utilization of APIs will also be required, such as a comprehensive list of games that the app can update and utilize. Everyone will need proper workspaces such as laptop or desktop computers compatible with our software. Software requirements include Docker, Git and Github.

Setup Instructions

Instructions on how to setup a local instance of the app.

System requirements and prerequisites

Any of these operating systems should work for development:

  • Windows 10 and above, or any Windows version that can run WSL2 and Docker Desktop 4+
  • Ubuntu 22.04.3 LTS (Jammy Jellyfish) and above
  • MacOS 10.15.7 Catalina and above
  • Other OS's that can run Docker Desktop 4+

Your system MUST have these installed:

Setup local machine

For Windows users only, start up and use WSL2 as your development machine.

1. Git clone the repo

git clone https://github.com/Capstone-Projects-2023-Fall/project-lomo-in-person-gaming-app.git

2. Setup frontend

  1. Go to the frontend/ folder
    cd frontend
  2. Install node dependencies:
    npm install
  3. Copy the .env.example file to .env
    cp .env.example .env
    # add secret keys to .env

3. Setup backend

  1. Go to the backend/ folder

    cd backend
  2. Start the Docker Desktop application (Docker Desktop must be running the background to run any docker commands)

  3. Install composer dependencies (composer is a package manager for php)

    docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php82-composer:latest composer install --ignore-platform-reqs
    • PROBLEM: If you run into problems installing dependencies, then first check to make sure that you're in the backend folder and on the correct branch
    • PROBLEM: If you continue to have problems with docker, then install php82, php82-openssl, and composer onto your machine, and use your machine's composer to install the dependencies composer install --ignore-platform-reqs. IMPORTANT! Afterwards, only use the container's composer and php commands so that they'll make changes to the container and not to your machine! sail composer and sail php
  4. Copy the .env.example file to .env

    cp .env.example .env
    # add secret keys to .env
  5. Build the image and start the docker container (in detached mode)

    ./vendor/bin/sail up -d
  6. Generate Laravel app key

    ./vendor/bin/sail artisan key:generate
  7. Go to http://localhost in your browser to make sure that you can see the laravel welcome screen, and you're set!

    1. PROBLEM: If you see a 500 server error and no detailed explanation of the error, then you forgot to copy the env file

    2. PROBLEM: If you get permission errors for the storage/ folder. Run the commands below one line at a time, in order:

      # enter the docker container command line as the root user
      ./vendor/bin/sail root-shell
      # recursively change permissions on storage to allow read,write,execute for owner and group
      chmod -R 777 storage/

      # recursively change owner and group to root
      chown -R root:root storage/

      # setup the storage link between storage/ and public/storage folders
      php artisan storage:link

      # clear the cache and config
      php artisan cache:clear
      php artisan config:clear

      # exit the docker container command line
      exit

To stop the container: from your terminal, run ./vendor/bin/sail down

(Optional) Setup sail alias

Add this line to your ~/.bashrc or ~/.zshrc in your home directory:

alias sail="./vendor/bin/sail"

4. Setup docusaurus

  1. Go to documentation/ folder
    cd documentation
  2. Install node dependencies:
    yarn install

Run

Run the app

  1. Start the backend server
    cd backend
    ./vendor/bin/sail up -d
  2. Start frontend server Use build files, otherwise development server can sometimes cause Beacon display issues.
    cd ../frontend
    npm run build
    serve -s build
  3. Go to https://localhost:3000 to see the app

Stop running the app

  1. Stop backend
    ./vendor/bin/sail down
  2. Stop the frontend server: enter Ctrl+C or Cmd-C into the terminal tab running the frontend server.

Run docusaurus

Go into the documentation/ folder and run:

cd documentation
yarn start-lomo

# or use the long form
# PROJECT_NAME=project-lomo-in-person-gaming-app ORG_NAME=Capstone-Projects-2023-Fall yarn start

Collaborators

JonathanAltenburg
Jonathan Altenburg
Andy-Olshanky
Andy Olshanky
tuk04480
Emma Pincus
Ziyike1
Ziyi Ke
del-cj
Carla Delima
AlanU21
Alan Uthuppan
jenniferlieu
Jennifer Lieu
ApplebaumIan
Ian Tyler Applebaum