A GeoGuessr-style game focused on Manipal locations! Test your knowledge of the Manipal campus by guessing locations from photographs.
Hosted at https://manipal-guessr.vercel.app/
- Location Guessing Game: View photos of various Manipal locations and guess where they were taken
- Interactive Map: Click on the map to place your guess
- Scoring System: Earn points based on how close your guess is to the actual location
- User Authentication: Sign up and track your progress with NextAuth
- Leaderboard: Compete with other players and see who knows Manipal best
- Responsive Design: Play on desktop or mobile devices
- Weekly Resets: Fresh challenges with weekly leaderboard resets
- Frontend: Next.js, React, TypeScript
- Backend: Express
- Styling: Tailwind CSS
- Authentication: NextAuth
- Database: MongoDB
- Maps: Leaflet
- Image Handling: EXIFTool for metadata extraction
- Deployment: Vercel
This project is organized as a monorepo:
frontend/- Next.js frontend applicationbackend/- Express.js backend API
-
Clone the repository
git clone https://github.com/your-username/manipal-guessr.git cd manipal-guessr -
Install dependencies
npm install
This will install dependencies for both frontend and backend.
-
Set up environment variables
Create a
.envfile in thebackend/srcdirectory:CONNECTION_STRING=your_mongodb_connection_string DB_NAME=your_database_name PORT=8000Create a
.envfile in thefrontend/directory:AUTH_DISCORD_ID=your_discord_client_id AUTH_DISCORD_SECRET=your_discord_client_secret AUTH_SECRET=your_auth_secret NEXT_PUBLIC_API_URL=http://localhost:8000 -
Configure the game Update
backend/config.jsonwith your game config.{ "pointScalingFactor":2.59, "mapCount": 11, "imageFormat": "avif" }Greater the Point Scaling Factor, Higher the point penalty for each Meter off the location. The following formula is used:
-pointScalingFactor*DistanceFromLocation + 5000 = PointsmapCount is the number of maps (images) in the locationPictures directory.
Image formats tested to work are avif and jpg. avif is recommended due to higher quality and lower file sizes.
-
Add location images Place your location photos in the
frontend/public/locationPictures/directory, numbered from 1 to yourmapCount.
- Sign Up/Login: Create an account or sign in to track your progress
- View the Photo: Study the location image carefully
- Make Your Guess: Click on the interactive map where you think the photo was taken
- Submit: Click the submit button to see your results
- Score: Earn points based on accuracy, Closer the guess, Higher the points
- Compete: Check the leaderboard to see how you rank against other players
This project is open source and available under the GPL License.
Made with ❤️ By PixelHalide and Shlok V.