Skip to content

jasonzop/Local-Hobbies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Local Hobbies

A full-stack social networking app focused on connecting people through shared hobbies and local activities. Users can create profiles, discover nearby people with similar interests, send connection requests, match for activities, chat, share posts, and schedule hobby meetups.

Features

  • User authentication (Register / Login)

  • Create and customize profiles

    • Bio
    • Profile picture
    • Cover image
    • Hobbies/interests
  • Discover nearby users using live GPS location

  • Radius-based user filtering

  • Send and manage friend requests

  • Match requests for hobby sessions

  • Real-time style messaging system

  • Social-media style hobby posts

  • Availability scheduling system

  • Mobile-friendly UI

  • Cloudinary image uploads

  • Persistent PostgreSQL database storage


Tech Stack

Frontend

  • React Native
  • Expo
  • TypeScript
  • AsyncStorage
  • Expo Location

Backend

  • Spring Boot
  • Java 17
  • Gradle

Database

  • PostgreSQL
  • Docker

Image Hosting

  • Cloudinary

Project Structure

Local-Hobbies/
│
├── apps/
│   ├── api/          # Spring Boot backend
│   └── mobile/       # Expo React Native frontend
│
├── docker-compose.yml
├── start.sh
└── README.md

Screenshots

  • Login Screen image

  • Availability screen image

  • Discover Screen image

  • Profile Screen image

  • Friend Requests image

  • Search Screen image

  • Chat System image


Installation & Setup

1. Clone Repository

git clone https://github.com/YOUR_USERNAME/Local-Hobbies.git
cd Local-Hobbies

2. Start PostgreSQL Database

Make sure Docker is running.

docker compose up -d

3. Backend Setup

Go into backend folder:

cd apps/api

Run backend:

./gradlew bootRun

Backend runs on:

http://localhost:8080

Health check:

http://localhost:8080/health

4. Frontend Setup

Open another terminal:

cd apps/mobile
npm install
npx expo start -c

Expo runs on:

http://localhost:8081

Environment Variables

Create a .env file inside:

apps/mobile/.env

Add:

EXPO_PUBLIC_API_BASE_URL=http://localhost:8080

EXPO_PUBLIC_CLOUDINARY_CLOUD_NAME=YOUR_CLOUD_NAME

EXPO_PUBLIC_CLOUDINARY_UPLOAD_PRESET=YOUR_UPLOAD_PRESET

Database

PostgreSQL database is automatically created using Docker.

Default credentials:

POSTGRES_DB=local_hobbies
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres

API Endpoints

Authentication

POST /auth/register
POST /auth/login

Users

GET    /users/discover
GET    /users/nearby
PATCH  /users/{id}/location
PATCH  /users/{id}/profile-image
PATCH  /users/{id}/cover-image

Requests

POST   /requests
GET    /me/requests
PATCH  /requests/{id}

Messages

POST /messages
GET  /messages

Posts

POST   /posts
GET    /posts
DELETE /posts/{id}

Current Features In Progress

  • Push notifications
  • Real-time chat with WebSockets
  • Hobby group creation
  • Event scheduling
  • Better recommendation algorithm
  • Mobile app deployment
  • Dark mode

Future Goals

Local Hobbies aims to remove the awkward initial talking stage by helping users instantly connect through shared interests and local activities.

The goal is to build a platform where:

  • People make real-life friends
  • Users find activity partners nearby
  • Communities form around hobbies
  • Social media becomes more interactive and local

License

This project is for educational and portfolio purposes.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages