Skip to content

Vibemap is a modern, interactive mapping platform designed to deliver location-based experiences using advanced geolocation and UI technologies. Built primarily with TypeScript, CSS, and JavaScript, Vibemap leverages powerful mapping libraries and a modular component architecture to provide users with seamless, real-time access to local vibes. πŸ’«

Notifications You must be signed in to change notification settings

AJoker0/vibemap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌍 VIBEMAP β€” Real-time Mood Mapping Platform

Social vibes meet interactive maps. Drop your emotion, discover your friends, visualize your world.

Made by student, for students

πŸ”₯ TL;DR

Vibemap is a fullstack Next.js web app combining live geolocation, emoji mood sharing, and social exploration on a dynamic Leaflet map. Powered by React, MongoDB, JWT auth, Docker, and Supercluster, it's your geo-aware social dashboard.


πŸ› οΈ TECH STACK OVERVIEW

Layer Tech Stack
🧠 Frontend Next.js (App Router), React, TypeScript
πŸ—Ί Maps Leaflet, React-Leaflet, Supercluster
🎨 UI/UX CSS Modules + Modals
πŸ“‘ Backend Express.js (REST API)
πŸ” Auth JWT + Custom AuthContext
🧱 DB MongoDB (via Docker container)
🐳 Container Docker (MongoDB only)
πŸ“¦ PackageMgr PNPM

πŸš€ FEATURES SNAPSHOT

  • πŸ“ Live Geolocation using navigator.geolocation
  • 🎭 Mood Picker: Drop emoji over your current position
  • πŸ—ΊοΈ Clustering with Supercluster for map performance
  • πŸ§‘β€πŸ€β€πŸ§‘ Friend System: List, mutuals, and visits
  • πŸŒ† Visited Cities Tracker
  • βš™οΈ Settings Modal: Username, notifications, birthday
  • πŸ‘€ Profile Modal: Top cities, avatar, friends
  • 🌐 Map Styles: Toggle standard, satellite, dark, light, relief
  • πŸ” JWT Auth: Login, register, persist via localStorage

πŸ§ͺ PROJECT STRUCTURE

vibemap/
β”œβ”€β”€ docker-compose.yml       # (optional)
β”œβ”€β”€ Dockerfile               # if extending Docker
β”œβ”€β”€ .env                     # local variables (token secret, etc.)
β”œβ”€β”€ package.json             # PNPM/Next config
β”œβ”€β”€ prisma/                  # (if you switch to Prisma later)
β”œβ”€β”€ public/                  # images, static assets
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ page.tsx         # Main Leaflet page
β”‚   β”‚   β”œβ”€β”€ login/           # Login UI
β”‚   β”‚   └── register/        # Register UI
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ map/             # Map, Markers, Emoji Picker
β”‚   β”‚   β”œβ”€β”€ auth/            # LoginModal, RegisterModal
β”‚   β”‚   β”œβ”€β”€ profile/         # ProfileModal
β”‚   β”‚   └── settings/        # SettingsModal
β”‚   β”œβ”€β”€ context/
β”‚   β”‚   └── AuthContext.tsx  # Custom JWT + token logic
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   └── api.ts           # All fetch + auth utils
β”‚   └── styles/              # CSS modules
└── server/                  # Express backend
    β”œβ”€β”€ routes/              # /auth, /profile, /visits
    β”œβ”€β”€ middleware/          # JWT check
    └── index.js             # Entry point

🧱 DATABASE STRUCTURE (MongoDB)

Collections:

  • users: { email, passwordHash }
  • profiles: { avatar, birthday, username, notifications }
  • visits: { lat, lng, city, timestamp, emoji, userId }
  • friends: [{ fromUserId, toUserId, mutual }] // f*ck Antonio

πŸ”’ AUTH FLOW

  1. On register/login, receive JWT from backend:

    localStorage.setItem('authToken', token);
  2. Wrapped in AuthContext, validated with:

    fetch('/profile', { headers: { Authorization: `Bearer ${token}` } });
  3. Fallbacks and logout are managed inside AuthProvider.


🧨 KNOWN ISSUES / WORK LEFT

Issue Status Fix Plan
Profile data not visible in Compass ⚠️ Not Indexed Ensure profiles DB inserts
Login "invalid password" ⚠️ Likely bcrypt missing or hash logic not called Check /auth/login backend controller
Tokens not stored/parsed properly ⚠️ Validate JWT secret consistency
No file models/User.js found ⚠️ Create Mongoose schema manually
Copilot unreliable βœ… Fixed β€” use Jake instead 😎

πŸ§‘β€πŸ’» HOW TO RUN LOCALLY

πŸ”§ 1. MongoDB with Docker

docker run -d --name vibemap-mongo -p 27017:27017 mongo

πŸ”§ 2. Backend (Express)

cd server
pnpm install
pnpm dev

πŸ”§ 3. Frontend (Next.js)

cd vibemap
pnpm install
pnpm dev

πŸ”§ 4. dev:all

pnpm dev:all

Open frontend: πŸ“‘ http://localhost:3000

Open backend (API): 🧠 http://localhost:5000


πŸ—‚οΈ API ENDPOINTS (Backend)

Route Method Auth? Description
/auth/register POST ❌ Creates user + JWT
/auth/login POST ❌ Verifies login
/profile GET/PUT βœ… Load or update profile
/visits GET/POST βœ… Get/post city emoji visits
/friends GET βœ… Returns friend list
/check-username GET βœ… Checks if username is taken

πŸ“Œ TIPS FOR FUTURE YOU

  • 🧠 If map doesn’t load β€” check browser location permissions
  • πŸ” If token fails β€” clear localStorage and re-login
  • πŸ‘€ If profile missing β€” check if /profile PUT was ever triggered
  • πŸ“¦ If Copilot crashes β€” use Jake πŸ’ͺ

✨ ROADMAP

  • Add bcrypt to hash passwords (bcrypt.compare() in login logic)
  • Add avatar uploads via file input
  • Migrate auth + DB logic to Prisma?
  • Add WebSocket live updates?
  • Deploy via Vercel + Atlas combo

🀝 CONTRIBUTORS

  • πŸ§‘β€πŸš€ You β€” Primary Dev, Project Architect
  • πŸ‘Ύ Jake (aka code) β€” Hack-assistant & AI warrior

🧬 FINAL WORD

You made a real-time map-based social platform from scratch. Be proud. When you come back β€” you're not starting from zero, you're picking up where a vibe architect left off. Stay sharp. Stay logged in. Stay vibin'.


πŸ”₯ git push && go dominate that internship πŸ§‘β€πŸ’Ό

About

Vibemap is a modern, interactive mapping platform designed to deliver location-based experiences using advanced geolocation and UI technologies. Built primarily with TypeScript, CSS, and JavaScript, Vibemap leverages powerful mapping libraries and a modular component architecture to provide users with seamless, real-time access to local vibes. πŸ’«

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •